在本例中(计算类别销售额与总销售额的比率(:https://learn.microsoft.com/en-us/dax/all-function-dax#example-1
公式为:
=
SUMX(
ResellerSales_USD,
ResellerSales_USD[SalesAmount_USD]
)
/ SUMX(
ALL( ResellerSales_USD ),
ResellerSales_USD[SalesAmount_USD]
)
在本例中(计算本年度产品销售额与总销售额的比率(:https://learn.microsoft.com/en-us/dax/all-function-dax#example-2
公式为:
=
SUMX(
ResellerSales_USD,
ResellerSales_USD[SalesAmount_USD]
)
/ CALCULATE(
SUM( ResellerSales_USD[SalesAmount_USD] ),
ALL( DateTime[CalendarYear] )
)
在第二个例子中,为什么我们不能使用类似于例子1的SUMX ALL来删除日历年过滤器?示例:
=
SUMX(
ResellerSales_USD,
ResellerSales_USD[SalesAmount_USD]
)
/ SUMX(
ALL( DateTime[CalendarYear] ),
ResellerSales_USD[SalesAmount_USD]
)
类似地,第一个例子可以用CALCULATE重写为:吗
=
SUMX(
ResellerSales_USD,
ResellerSales_USD[SalesAmount_USD]
)
/ CALCULATE(
SUM( ResellerSales_USD[SalesAmount_USD] ),
ALL( ResellerSales_USD )
)
代码
=
SUMX(
ResellerSales_USD,
ResellerSales_USD[SalesAmount_USD]
)
/ SUMX(
ALL( DateTime[CalendarYear] ),
ResellerSales_USD[SalesAmount_USD]
)
将不起作用,因为donominator处的SUMX正在DateTime[CalendarYear]列上迭代,因此不存在使ResellerSales_USD[SalesAmount_USD]列可访问的行上下文。此外,Date和ResellerSales之间的关系是一对多的,不可能使用RELATEDTABLE,但需要RELATEDTABLE和聚合器,例如
=
SUMX(
ResellerSales_USD,
ResellerSales_USD[SalesAmount_USD]
)
/ SUMX(
ALL( DateTime[CalendarYear] ),
SUMX( RELATEDTABLE(ResellerSales_USD), ResellerSales_USD[SalesAmount_USD])
)
相反,这一个等价于第一个示例
=
SUMX(
ResellerSales_USD,
ResellerSales_USD[SalesAmount_USD]
)
/ CALCULATE(
SUM( ResellerSales_USD[SalesAmount_USD] ),
ALL( ResellerSales_USD )
)