Power BI 中实现单列中各个项的交叉分析

首先我们看下原始数据跟需要达到的效果
file
左侧为原始数据,右侧为需求数据,计算每个仓库与其他仓库中重复的商品个数。
思考:
1、仓库编码我们要交叉分析,受限于Powerbi的要求,我们必须将仓库编号同时拖入矩阵的行列中,然后书写度量值才能实现交叉分析的目的
2、所以我们需要在原有表的基础上在构建一个仓库编号的辅助表,这个在powerbi中比较好办,直接新建表即可:

辅助表 = values('表1'[仓库编号])

3、新建表与原始表如果需要创建选择性关系,我们这块可以使用两种方式:
a、虚拟表 + USERELATIONSHIP
b、使用treatas函数

Treatas函数的写法及含义

第一种:单列条件写法(该写法可以满足我们实际应用)

    [度量值],
    TREATAS ( VALUES (辅助表[辅助列] ),关系表[对应列] )
        )

度量值的含义:我们将 辅助表 的 辅助列 当做 我们关系表中的对应列使用,其实就相当于我们构建了一个关系,用辅助表作为关系一端直接控制我们需要控制的表格

第二种:多列条件写法

CALCULATE (
    度量值,
    TREATAS (
        SUMMARIZE (
            辅助表,
            辅助表[辅助列1],
            辅助表[辅助列2],  
            ),
          关系表[对应列1],
          关系表[对应列2]
    )
)

与第一种含义类似,只是辅助表有多列控制

实际问题解答
第一步:新建辅助表
file
第二步:新建度量值

重复商品个数 = 
    VAR fz = CALCULATETABLE(
        VALUES('表1'[商品编号]),
        TREATAS(VALUES('辅助表'[仓库编号]),'表1'[仓库编号])
        )
    return COUNTROWS(INTERSECT(fz,VALUES('表1'[商品编号])))

第三步:新建矩阵,将原始表的[仓库编号]拖入行,将辅助表的[仓库编号]拖入列,将第二步新建的度量值拖入值字段
file
我们就完成了实际需求。
更多解法,欢迎留言交流!

雷公子 | 简快EXCEL【powerbipro】