从数据到信息
从信息到洞察

理解 ADDMISSINGITEMS

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]
) 

2
说点什么

1000
 
鼓掌微笑开心憧憬爱你色并不觉得吃瓜doge二哈喵喵思考笑哭捂脸悲伤大哭抓狂汗偷笑打脸捂眼黑线问号晕拜拜闭嘴衰咒骂ok作揖
1 评论数
1 被回复的评论
2 订阅评论的人数
 
查看最近回复
查看最热评论
  订阅本文评论  
最新 最旧 得票最多
提醒
成员
做一名学霸

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列吧?

img_5e0484190ce31.png.webp.jpg
DAX 圣经

导读

初识 DAX

DAX 基础知识

DAX 原理

DAX 高级原理

基础函数类型

迭代函数

CALCULATE 函数

CALCULATE 调节器

基础表函数

条件判断函数

查找匹配函数

时间智能函数

统计类函数

投影函数

分组/连接函数

集合函数

其他函数