Power BI 中实现单列中各个项的交叉分析
首先我们看下原始数据跟需要达到的效果
左侧为原始数据,右侧为需求数据,计算每个仓库与其他仓库中重复的商品个数。
思考:
1、仓库编码我们要交叉分析,受限于Powerbi的要求,我们必须将仓库编号同时拖入矩阵的行列中,然后书写度量值才能实现交叉分析的目的
2、所以我们需要在原有表的基础上在构建一个仓库编号的辅助表,这个在powerbi中比较好办,直接新建表即可:
辅助表 = values('表1'[仓库编号])
3、新建表与原始表如果需要创建选择性关系,我们这块可以使用两种方式:
a、虚拟表 + USERELATIONSHIP
b、使用treatas函数
Treatas函数的写法及含义
第一种:单列条件写法(该写法可以满足我们实际应用)
[度量值],
TREATAS ( VALUES (辅助表[辅助列] ),关系表[对应列] )
)
度量值的含义:我们将 辅助表 的 辅助列 当做 我们关系表中的对应列使用,其实就相当于我们构建了一个关系,用辅助表作为关系一端直接控制我们需要控制的表格
第二种:多列条件写法
CALCULATE (
度量值,
TREATAS (
SUMMARIZE (
辅助表,
辅助表[辅助列1],
辅助表[辅助列2],
),
关系表[对应列1],
关系表[对应列2]
)
)
与第一种含义类似,只是辅助表有多列控制
实际问题解答
第一步:新建辅助表
第二步:新建度量值
重复商品个数 =
VAR fz = CALCULATETABLE(
VALUES('表1'[商品编号]),
TREATAS(VALUES('辅助表'[仓库编号]),'表1'[仓库编号])
)
return COUNTROWS(INTERSECT(fz,VALUES('表1'[商品编号])))
第三步:新建矩阵,将原始表的[仓库编号]拖入行,将辅助表的[仓库编号]拖入列,将第二步新建的度量值拖入值字段
我们就完成了实际需求。
更多解法,欢迎留言交流!
雷公子 | 简快EXCEL【powerbipro】
自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)