Power Pivot中in的使用

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

数据表
数据表

还有一个国家表。

国家表
国家表

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

1. 添加列代码书写

Switch(true(),
       '国家'[国家] in Values('亚洲'), Calculate(Values('洲数据'[数据]),'洲数据'[国家]="亚洲"),
       '国家'[国家] in Values('南美洲'), Calculate(Values('洲数据'[数据]),'洲数据'[国家]="南美洲"),
       Blank()
      )

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

2. 度量值书写

Sumx('国家',
     Switch(true(),
            '国家'[国家] in Values('亚洲'), Calculate(Values('洲数据'[数据]),'洲数据'[国家]="亚洲"),
            '国家'[国家] in Values('南美洲'), Calculate(Values('洲数据'[数据]),'洲数据'[国家]="南美洲"),
            Blank()
           )
     )

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

3. 结果

结果
结果

4. 总结

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

'国家'[国家] in values('亚洲')

等同于

ContainsRow(Values('亚洲'[国家]),'国家'[国家])

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

SumX('国家',
     Switch(true(),
            ContainsRow(Values('亚洲'[国家]),'国家'[国家]), CALCULATE(VALUES('洲数据'[数据]),'洲数据'[国家]="亚洲"),
            '国家'[国家] in SelectColumns('南美洲',"南美",'南美洲'[国家]), Calculate(Values(('洲数据'[数据]),'洲数据'[国家]="南美洲"),
            Blank()
           )
    )

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容