PowerBI | DAX | Как переносить команды в условие

#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. Вы можете поместить все, кроме последнего шага, в качестве переменных.