Я пишу вычисляемый столбец формыHandle пустое значение в комплексном выражении IF условие PowerBi
Column = IF (ISBLANK (ComplexExpression), 0, ComplexExpression)
ли PowerBi пересчитывать ComplexExpression дважды?
Я пишу вычисляемый столбец формыHandle пустое значение в комплексном выражении IF условие PowerBi
Column = IF (ISBLANK (ComplexExpression), 0, ComplexExpression)
ли PowerBi пересчитывать ComplexExpression дважды?
Кажется, что выражение не вычисляется дважды, если условие оценивается как 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
Сообщите мне, если это поможет.
. Я ищу другой ответ. Является ли выражение вычисляемым дважды, если внешний IF является ложным [один раз при проверке внешнего IF и один раз при фактическом предоставлении значения], или он кэширует значение в некотором смысле? –
Я не уверен, что выражение вычисляется дважды, но я надеюсь, что DAX достаточно умен, чтобы этого не сделать! Я считаю, что то, что вы делаете, является самым простым способом обработки пробелов в DAX. Я тоже не большой поклонник этого, потому что мне не нравится печатать сложные выражения в два раза. Что я рекомендую, вы сначала создаете столбец с помощью ComplexExpression, а затем создаете второй столбец, который использует эту формулу со ссылкой на 1-й столбец. – RedVII
В настоящее время это делается. @RedVII. Я пытаюсь понять, если DAX выполняет некоторую оптимизацию запросов, например SQL –