【问题标题】:Dax on Calculated Column and MeasureDax 在计算列和度量上
【发布时间】:2023-03-05 02:19:01
【问题描述】:

我对 Power BI 中的行上下文和筛选上下文的可迭代和不可迭代筛选器进行了实验。

我的理解是度量有过滤上下文,而计算列有行上下文

这是衡量的 Dax:

UnitPrice (Sum) = 
SUM(
    'Sales by Store'[unit_price]
)


UnitPrice (Sumx) = 
SUMX(
    'Sales by Store',
    'Sales by Store'[unit_price]
)


UnitPrice (CalSum) = 
CALCULATE(
    SUM(
        'Sales by Store'[unit_price]
    )
)


UnitPrice (CalSumx) = 
CALCULATE(
    SUMX(
        'Sales by Store',
        'Sales by Store'[unit_price]
    )
)

矩阵表中的输出是显示同一产品类别(整豆/茶)中每种产品各自的单价:

这意味着度量具有过滤器上下文,但是为什么我们 Sum 和 Calculate Sum 不会为每个产品显示相同数量的产品组的总单价,因为这两个 Dax 函数都不可迭代?

对于计算列,我在 Power Query 中使用另一个名为 Quantity Sold 的列。

Qty Sold_1 (Sum) = 
SUM(
    'Sales by Store',
    'Sales by Store'[quantity_sold]
)

Qty Sold_2 (Sumx) = 
SUMX(
     'Sales by Store',
     'Sales by Store'[quantity_sold]
)


Qty Sold_3 (CalSum) = 
CALCULATE(
    SUM(
        'Sales by Store'[quantity_sold]
    )
)


Qty Sold_4 (CalSumx) = 
CALCULATE(
    SUMX(
        'Sales by Store',
        'Sales by Store'[quantity_sold]
    )
) 

输出为 Sum,Sumx 将显示所有行的总金额,而 Calculate Sum 和 Calculate Sumx 将显示各自的单价。 售出的数量是原始列。

Transaction ID quantity sold Qty Sold_1 (Sum) Qty Sold_2 (Sumx) Qty Sold_3 (CalSum) Qty Sold_4 (CalSumX)
131 1 6 6 1 1
192 2 6 6 1 1
460 3 6 6 1 1

为什么 Sumx(能够逐行迭代)没有显示行上下文中的相应销售量,并且计算 Sum 没有显示所有行的总销售量,因为它不能在行上下文中逐行迭代?

【问题讨论】:

    标签: dax powerquery powerbi-desktop


    【解决方案1】:

    当您编写SUM ( Table[Column] ) 时,这与编写SUMX ( Table, Table[Column] ) 完全相同,因此当使用只有一列的SUMX 时,它们是相同的。 SUMX 的灵活性在于您可以编写例如SUMX ( Table, Table[Column] * Table[Column2] ) 得到的不仅仅是一个直接的总和,而是在你的表中逐行计算。

    当您添加新的计算列时,您需要调用CALCULATE 将您的表格行上下文 转换为相应的过滤器上下文。这称为上下文转换,在编写 DAX 时理解这一点非常重要。如果没有这种上下文转换,SUM ( Table[Column] )(和 SUMX 等效项)将为您提供...列的总和。正如预期的那样。这与逐行迭代无关。

    【讨论】:

    • 感谢您的解释。对于度量,当有Filter、KeepFilter、All等其他函数时,我们需要使用Calculate。否则,不需要Calculate。这是正确的吗?
    • 是的,在度量中,过滤器上下文会自动应用于计算,因此CALCULATE 只需要更改或更改过滤器上下文或过滤语义。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-22
    • 1970-01-01
    相关资源
    最近更新 更多