DAX 中的 SUMMARIZE 函数功能强大,但同时也很难使用。 它可用于执行表之间的分组和连接,正如我们之前在分组数据一文中描述的那样。 不幸的是,它在计算聚合值时存在一些众所周知的性能问题。除了性能之外,SUMMARIZE 的计算限制是它无法聚合在查询本身内动态计算的值。
一,SUMMARIZE函数的限制
例如,考虑以下查询,它应该为每个产品类别返回相关子类别的平均价格的最大值。
ADDCOLUMNS (
SUMMARIZE (
ADDCOLUMNS (
SUMMARIZE (
Product,
'Product Category'[Category],
'Product Subcategory'[Subcategory]
),
"Average Price", CALCULATE ( AVERAGE ( Product[Unit Price] ) )
),
'Product Category'[Category]
),
"Max SubCat Avg Price", CALCULATE ( MAX ( [Average Price] ) )
)
如果运行此查询,计算 MAX ( [Average Price] ) 时会出现错误。 原因是在 DAX 中您只能聚合物理列(physical column)。 事实上,请记