Просто сторона примечания, «ее не работает должным образом» чрезвычайно бесполезно в определении источника проблем. В частности, в модели Power Pivot/Tabular, this link provides a list of ways to help answerers help you.
Синтаксически возникают некоторые ошибки. Давайте рассмотрим их и посмотрим, подходит ли поведение до погружения в альтернативные определения мер.
В этом разделе проблема:
...
,HASONEVALUE([level03])
// Note, you are inconsistent in referring to [level03] and
// [level 03]
,If(// Below you are testing column references against scalar
// literals. DAX doesn't understand how to do this, so you
// have to wrap each reference in a VALUES() function, which
// can be implicitly converted to a scalar value
[level 03] = 'calculation:' // DAX needs double quotes: ""
&& [level03]= 'Cash:' // You have multiple predicates
&& [level03]=' Costs:'=>0 // for a single field combined
// with a logical and - these
// can't all simultaneously be true
,Blank()
,CALCULATE(
[Local]
,DATESINPERIOD(
Calendar[Date],
MAX (Calendar[Date]),
-12,
MONTH
)
)
)
,....
Я просто хочу, чтобы изменить комбинацию предикатов к логическому или в моем переписываем, так что это возможно для этого IF() возвращать BLANK. То, как это написано выше, даже исправление синтаксических ошибок приведет к тому, что он всегда будет оценивать условие else, потому что [уровень 03] не может одновременно иметь значение «расчет:», «Наличные деньги» и «Затраты: => 0», ,
...
,HASONEVALUE('<table>'[level03])
// As a best practice, you should always use fully qualified
// column references - 'table'[field]
// Also, I've referred only to [level03] below
,IF(// Note we've wrapped [level 03] in VALUES() below - this will
// allow our comparisons to scalar literals
VALUES('<table>'[level03]) = "calculation:" // double quotes
|| VALUES('<table>'[level03]) = "Cash:"
// Note: we've changed the logical and, &&, to a logical
// or, || - meaning if any 1 of these predicates is true,
// we'll return BLANK
|| VALUES('<table>'[level03]) = " Costs:=>0"
,BLANK()
,CALCULATE(
[Local]
,DATESINPERIOD(
Calendar[Date]
,MAX(Calendar[Date])
,-12
,MONTH
)
)
)
,....
Что это будет сделать, это проверить для любой ячейки на сводной таблице, где [level03] имеет ровно один определенное значение - если это так, он будет оценивать функцию IF().
Функция IF() проверяет значение [level03]. Если это значение является любым из трех следующих значений: «Расчет:», «Наличные деньги» или «Затраты: => 0», он возвращает BLANK. Если значение [level03] не является ни одним из этих трех, оно будет оценивать значение CALCULATE(), которое возвращает меру [Local] в течение 12-месячного периода.
Спасибо большое! Я никогда не думал о функциях функций, спасибо! – HAIZD