2016-12-16 10 views
0

Я пишу вычисляемый столбец формыHandle пустое значение в комплексном выражении IF условие PowerBi

Column = IF (ISBLANK (ComplexExpression), 0, ComplexExpression)

ли PowerBi пересчитывать ComplexExpression дважды?

+0

Я не уверен, что выражение вычисляется дважды, но я надеюсь, что DAX достаточно умен, чтобы этого не сделать! Я считаю, что то, что вы делаете, является самым простым способом обработки пробелов в DAX. Я тоже не большой поклонник этого, потому что мне не нравится печатать сложные выражения в два раза. Что я рекомендую, вы сначала создаете столбец с помощью ComplexExpression, а затем создаете второй столбец, который использует эту формулу со ссылкой на 1-й столбец. – RedVII

+0

В настоящее время это делается. @RedVII. Я пытаюсь понять, если DAX выполняет некоторую оптимизацию запросов, например SQL –

ответ

0

Кажется, что выражение не вычисляется дважды, если условие оценивается как True, будет оценено только истинное выражение ветви.

Вы можете проверить это, выполнив два вложенных IFs.

NewColumn = 
IF(
    [MyColumn]=1, 
    4/2, 
    1/IF([MyColumn]<>1,1,"A") 
) 

В приведенном выше выражении, внешний IF условно вычисляется и, если оно истинно, то результат равен 2 (4/2), так что выражение ложно ветвь не вычисляется, так как он производит #ERROR, потому что он имеет значение 1/"A" которая не определена.

MyColumn NewColumn 
    1   2 --> If the false branch would be evaluated it'd produce an #ERROR 
    2   1 
    3   1 
    1   2 --> If the false branch would be evaluated it'd produce an #ERROR 

Сообщите мне, если это поможет.

+0

. Я ищу другой ответ. Является ли выражение вычисляемым дважды, если внешний IF является ложным [один раз при проверке внешнего IF и один раз при фактическом предоставлении значения], или он кэширует значение в некотором смысле? –