如何在更小的粒度上总结?

How to sum up at a lower granularity?

我创建了一个 DAX table。 table的粒度从低到高依次为Expiry_Date_Year_Month、Expiry_Member_Type、Renewal_Channel。 DAX代码下方。

MemberRenewChannel =
UNION(
summarize(
SELECTCOLUMNS(MemberRenew,
, "Expiry_Date_Year_Month", MemberRenew[Expiry_Date_Year_Month]
, "Expiry_Member_Type", MemberRenew[Expiry_Member_Type]
, "Renewal_Channel", MemberRenew[Renewal_Channel]
),
[Expiry_Date_Year_Month], [Expiry_Member_Type], [Renewal_Channel]
, "Measure", "Renewal"
, "Value", SUM(MemberRenew[Renewal])
), -- Renewal
summarize(
SELECTCOLUMNS(MemberRenew,
, "Expiry_Date_Year_Month", MemberRenew[Expiry_Date_Year_Month]
, "Expiry_Member_Type", MemberRenew[Expiry_Member_Type]
, "Renewal_Channel", MemberRenew[Renewal_Channel]
),
[Expiry_Date_Year_Month], [Expiry_Member_Type], [Renewal_Channel]
, "Measure", "Number_of_Record"
, "Value", calculate(sum(MemberRenew[Renewal]), all(MemberRenew[Expiry_Date_Year_Month], MemberRenew[Expiry_Member_Type] ) )

) -- Number_of_Record
) -- union

我在计算 "Number_of_Record" 度量时遇到问题。它是在 Expiry_Member_Type 级别上求和的数字。我在下面的代码不会这样做,但会显示 Renewal_Channel 级别的记录数。

关于汇总 Expiry_Member_Type 处的记录数有什么想法吗?谢谢。

这是代码的相关部分:

calculate(
    sum(MemberRenew[Renewal]),
    all(MemberRenew[Expiry_Date_Year_Month], MemberRenew[Expiry_Member_Type]))

此处您对所有前两列求和 Renewal,但 Renewal_Channel 行上下文仍然有效,因此您得到的是该级别的总和。

由于您希望在与前两列对应的级别求和,因此您需要保留该行上下文而不是将其删除。

试试这个:

calculate(
    sum(MemberRenew[Renewal]),
    allexcept(MemberRenew,
        MemberRenew[Expiry_Date_Year_Month],
        MemberRenew[Expiry_Member_Type]))

这将删除所有行上下文 除了 您想要聚合的行上下文(与您正在做的完全相反)。