DAX:请检查我是否正确理解了变量在DAX中的使用



有人能检查一下我对变量的理论理解是否正确吗?

假设我有一个包含2列的表,Condition1和Condition2。我想计算条件1=4和条件2=黑色的行数。

Sopose然后我写了一个称为Black的度量,它创建了一个表,其中所有行都有Condition2=";黑色";。例如:

Black:= FILTER (Table, Condition2 = "Black")

然后我使用变量编写组合代码:

Black4_version1 = 
var B = [Black]
return = CALCULATE(
COUNTROWS(B),
Condition1 = 4)

然后,这段代码将不起作用,因为DAX认为变量B是一个单一的数字(因为它正在调用一个度量值,而度量值在默认情况下被视为一个单一值?(,即使我已经创建了一个应该创建一个表的度量值。

但是,如果我在变量本身中创建表,那么DAX就会知道它是一个表,然后它就会工作吗?

Black4_Version2 = 
var B = FILTER (Table, Condition2 = "Black")
return = CALCULATE(
COUNTROWS(B),
Condition1 = 4)

我之所以这么问,是因为我想100%确信我已经理解了这里给出的答案:DAX:请解释为什么这个带有变量的度量不起作用也因为我已经在工作中使用了变量,所以我需要重新检查我构建的所有仪表板,并与我的经理讨论是否搞砸了一件大事。所以你可以说我的工作取决于这个。

即使变量包含一个表,也应将其视为常量。在Black4_Version2度量中,CALCULATE()不会更改COUNTROWS(B)结果,因为它是在计算常量表的行数,并且不会进行筛选。

Black4_Version2 =
VAR B =
FILTER(
Table,
Condition2 = "Black"
)
RETURN
CALCULATE(
COUNTROWS( B ),
Condition1 = 4
)

但是你可以在一个常量表上迭代,因此FILTER是

Black4_Version3 =
VAR B =
FILTER(
Table,
Condition2 = "Black"
)
RETURN
COUNTROWS(
FILTER(
B,
Condition1 = 4
)
)

附言:我使用了答案中使用的伪DAX sintax,因为它不是Condition1 = 4,而是像Table[Column1] = 4 should be used这样的列引用

最新更新