power bi

Power Pivot中in的使用

2019-06-27  本文已影响12人  Data_Skill

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

数据表数据表

还有一个国家表。

国家表国家表

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

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的写法。

上一篇 下一篇

猜你喜欢

热点阅读