#powerbi #dax
Вопрос:
В PowerBI у меня есть столбец «url». Я хотел бы включить следующие команды в условие if. Как я могу добиться следующего?
IF (SomeCondition,
{
//list of commands to be executed if condition passes
VAR myurl = SUBSTITUTE(test[url]," "," ")
VAR begining = LEN(myurl)-SEARCH("query=",myurl)-5
VAR right_string = RIGHT(myurl, begining)
VAR ending = IF(CONTAINSSTRING(right_string, "amp;type"), SEARCH("amp;type",right_string)-2, len(right_string))
VAR finalString = TRIM(LEFT(right_string,ending))
} , {
// List of commands to be executed if condition fails
})
RETURN finalString
Ответ №1:
Вы должны определить VAR, прежде чем использовать его
Link =
//list of commands to be executed if condition passes
VAR myurl = SUBSTITUTE(test[url]," "," ")
VAR begining = LEN(myurl)-SEARCH("query=",myurl)-5
VAR right_string = RIGHT(myurl, begining)
VAR ending = IF(CONTAINSSTRING(right_string, "amp;type"),
SEARCH("amp;type",right_string)-2, len(right_string))
VAR finalString = TRIM(LEFT(right_string,ending))
RETURN
IF (SOMECONDITION,finalString ,BLANK())
Комментарии:
1. Я хотел бы знать, как обернуть несколько команд в условие if. Я не хочу запускать ПОИСК по URL-адресу, если URL-адрес не содержит определенного термина, такого как «поиск/», Следующая ошибка возникает, когда ПОИСК выполняется по URL-адресу, который не содержит требуемой строки. Также для более эффективного выполнения команд с использованием памяти .. Текст поиска, предоставленный для функции «ПОИСК», не может быть найден в данном тексте.
2. Я не понимаю, что ты пытаешься сделать?. Вы хотите использовать вложенные операторы if? ЕСЛИ(A=TRUE(),A, ЕСЛИ(B=TRUE(),B,C)), Может быть, вы можете привести пример данных и ожидаемого результата?
Ответ №2:
Рассмотрим эту упрощенную ситуацию:
Measure =
VAR A1 = [A1]
VAR A2 = [A2]
VAR B1 = [B1]
VAR B2 = [B2]
RETURN
IF (
[SomeCondition],
A1 A2,
B1 B2
)
Переменные DAX вычисляются лениво, так что если SomeCondition
это правда, то она должна ссылаться только на A1
и A2
B1
и B2
полностью игнорировать и. Если условие не выполняется, то A1
и A2
не оцениваются и не должны снижать производительность.
Комментарии:
1. Вы видите, что A1 A2-это всего лишь одна команда. На его месте, что, если бы я обработал несколько команд, таких как та, что указана в вопросе выше?
2. Вы можете поместить все, кроме последнего шага, в качестве переменных.