首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >2.11 PowerBI数据建模-CALCULATE中FILTER多个表取并集

2.11 PowerBI数据建模-CALCULATE中FILTER多个表取并集

原创
作者头像
PowerBI自己学_轻松
发布2025-02-24 19:48:03
发布2025-02-24 19:48:03
9560
举报
文章被收录于专栏:PowerBI入门100例PowerBI入门100例

加入 PowerBI自己学 知识星球 可以:下载源文件,边学边练;遇到问题,提问交流,有问必答。

CALCULATE的FILTER筛选条件,有如下几种情况:

1 多个筛选条件来自同一个表,取交集用“&&”连接,取并集用“||”连接。

2 多个筛选条件来自不同的表,用逗号隔开的多个FILTER,默认取得是交集。

3 多个筛选条件来自不同的表,要取并集,该怎么办呢?

解决方案

理论上讲,多个维度表和事实表都有关系,维度表的所有列都可以添加到事实表中去,然后再对一个事实表做多条件筛选就能达到目的。但是,行数很多的事实表新建列,文件会变大,这不符合星型架构建模原则。

直接在度量值的公式中,先用CROSSJOIN将不同的表交叉到一个表,再基于这个表去做取并集的多条件筛选,就能达到目的。

举例

以购买客户数为例,统计负责人是张三或者省份是北京的去重客户数。

模型

销售表

客户人员表

客户省份表

度量值

购买客户数:

#ActiveCustomer = DISTINCTCOUNT('销售表'[客户])

i 张三负责的客户或者省份是北京的客户中的购买客户数,受上下文中的人员和省份筛选变化:

#ActiveCustomer_张三_北京 =

CALCULATE([#ActiveCustomer],

FILTER(

CROSSJOIN(

VALUES('客户人员表'[人员]),

VALUES('客户省份表'[省份])

),

'客户人员表'[人员]="张三" || '客户省份表'[省份]="北京"

)

)

ii 张三负责的客户或者省份是北京的客户中的购买客户数,不受上下文中的人员和省份筛选变化:

#ActiveCustomer_张三_北京_恒等 =

CALCULATE([#ActiveCustomer],

FILTER(

CROSSJOIN(

ALL('客户人员表'[人员]),

ALL('客户省份表'[省份])

),

'客户人员表'[人员]="张三" || '客户省份表'[省份]="北京"

)

)

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档