ADDMISSINGITEMS 是软件在自动生成查询时经常使用的函数,某些图表会在运行时调用这个函数。函数的作用是添加由于新列的表达式返回空值而被 SUMMARIZECOLUMNS 隐藏的行。
示例用法
例如,观察下面这个 SUMMARIZECOLUMNS 查询的结果:
EVALUATE SUMMARIZECOLUMNS ( 'Date'[Calendar Year], "Quantity", SUM ( Sales[Quantity] ) )
日期表包括从 2005 年到 2011 年的所有年份,但 SUMMARIZECOLUMNS 仅显示数量列非空的年份。通过在 ADDMISSINGITEMS 中调用需要包含“空”成员的列,比如将年份作为参数,下一个查询在返回结果中包含了没有数据的年份:
EVALUATE ADDMISSINGITEMS ( 'Date'[Calendar Year], SUMMARIZECOLUMNS ( 'Date'[Calendar Year], "Quantity", SUM ( Sales[Quantity] ) ), 'Date'[Calendar Year] )
聚合两列或更多列时,可以根据需要定义希望包含“缺失”项的单个列。例如,观察以下查询,该查询按库存类型和顾客性别分组,返回单价大于 3000 的产品的销售数量:
EVALUATE SUMMARIZECOLUMNS ( Product[Stock Type], Customer[Gender], CALCULATETABLE ( Sales, Product[Unit Price] > 3000 ), "Quantity", SUM ( Sales[Quantity] ) )
如你所见,结果只有一种库存类型 Mid,如果你只把 ADDMISSINGITEMS 应用到库存类型,结果会新增两行,每行对应一个缺失的库存类型(Low and High):
EVALUATE ADDMISSINGITEMS ( Product[Stock Type], SUMMARIZECOLUMNS ( Product[Stock Type], Customer[Gender], CALCULATETABLE ( Sales, Product[Unit Price] > 3000 ), "Quantity", SUM ( Sales[Quantity] ) ), Product[Stock Type] )
当然,你还可以在此基础上显示性别列的缺失项,如下面的示例所示:
EVALUATE ADDMISSINGITEMS ( Product[Stock Type], Customer[Gender], SUMMARIZECOLUMNS ( Product[Stock Type], Customer[Gender], CALCULATETABLE ( Sales, Product[Unit Price] > 3000 ), "Quantity", SUM ( Sales[Quantity] ) ), Product[Stock Type], Customer[Gender] )
EVALUATE
SUMMARIZECOLUMNS (
Product[Stock Type],
Customer[Gender],
CALCULATETABLE (
Sales,
Product[Unit Price] > 3000
),
“Quantity”, SUM ( Sales[Quantity] )
)
老师,SUMMARIZECOLUMNS参数中的表达式SUM ( Sales[Quantity] )是在筛选上下文中计值。请问这个筛选上下文不仅包含切片器、透视表筛选器等外部上下文(假如有的话),应该也包括参数中的分组列在参数表筛选器筛选之后的表吧?比如图中,这个筛选上下文是指经过 CALCULATETABLE (Sales, Product[Unit Price] > 3000 )这个表筛选器筛选后的 Product[Stock Type]和Customer[Gender],也就是图中的Stock Type列和Gender列吧?