Power Pivot中in的使用

2020-03-24 15:53:02 浏览数 (1)

有几个表,南美洲表,亚洲表以及洲数据表。

还有一个国家表。

要求:根据国家来计算对应洲的数据。这几个表不存在任何的关系。

1. 添加列代码书写

代码语言:javascript复制
Switch(true(),
       '国家'[国家] in Values('亚洲'), Calculate(Values('洲数据'[数据]),'洲数据'[国家]="亚洲"),
       '国家'[国家] in Values('南美洲'), Calculate(Values('洲数据'[数据]),'洲数据'[国家]="南美洲"),
       Blank()
      )

解释:先判断国家是否属于对应的洲表格,提取对应洲的数据。

2. 度量值书写

代码语言:javascript复制
Sumx('国家',
     Switch(true(),
            '国家'[国家] in Values('亚洲'), Calculate(Values('洲数据'[数据]),'洲数据'[国家]="亚洲"),
            '国家'[国家] in Values('南美洲'), Calculate(Values('洲数据'[数据]),'洲数据'[国家]="南美洲"),
            Blank()
           )
     )

度量值的写法,只需要在列的基础上,加上一个聚合函数即可。

3. 结果

4. 总结

In的效果相当于判断是否包含行,等同于ContainsRow 例如之前的例子

代码语言:javascript复制
'国家'[国家] in values('亚洲')

等同于

代码语言:javascript复制
ContainsRow(Values('亚洲'[国家]),'国家'[国家])

所以如果我们把代码改成这样,也是得到相同的结果。

代码语言:javascript复制
SumX('国家',
     Switch(true(),
            ContainsRow(Values('亚洲'[国家]),'国家'[国家]), CALCULATE(VALUES('洲数据'[数据]),'洲数据'[国家]="亚洲"),
            '国家'[国家] in SelectColumns('南美洲',"南美",'南美洲'[国家]), Calculate(Values(('洲数据'[数据]),'洲数据'[国家]="南美洲"),
            Blank()
           )
    )

解释:这里使用了ContainsRow替代in的写法,以及用SelectColumns替代了Values的写法。 

最近有朋友私聊我说有没有课程,目前暂时没有课程,如果需要课程的话,这里可以给大家推荐一个课程,大海的课程从Power Query到Power Pivot都有,内容非常的不错,视频质量也很好,基础内容都涵盖到了,特别适合上手的课程,而且内容也绝不单调。

如果觉得有帮助,那麻烦您进行转发,让更多的人能够提高自身的工作效率。

0 人点赞