You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Power BI矩阵中按维度组合统计用户计数?

原始数据表格

CategoryUserDate fromDate to
Cat AUser 101-12-202201-12-2022
Cat BUser 101-12-202201-12-2023
Cat CUser 101-12-2022
Cat AUser 201-06-202201-12-2022
Cat BUser 201-12-2022
Cat AUser 301-12-2022
Cat CUser 307-08-202001-09-2022

目标输出矩阵

202020212022< ---用户Date from字段的最小年份
Cat A x Cat B002<-- 同时属于Cat A和Cat B的用户数
Cat A x Cat C101<-- 同时属于Cat A和Cat C的用户数
Cat B x Cat C001<-- 同时属于Cat B和Cat C的用户数

解决方案步骤

1. 生成类别两两组合辅助表

在Power BI建模选项卡中点击新建表,输入以下DAX公式生成不重复的类别两两组合:

Category Combinations = 
VAR AllCategories = VALUES('原始表'[Category])
RETURN
SELECTCOLUMNS(
    FILTER(
        CROSSJOIN(AllCategories, AllCategories),
        '原始表'[Category] < [Category1]
    ),
    "Combination", '原始表'[Category] & " x " & [Category1]
)

2. 计算用户的最小年份

在原始表中添加计算列,得到每个用户所有记录里Date from的最早年份:

User Min Year = 
CALCULATE(
    MIN(YEAR('原始表'[Date from])),
    ALLEXCEPT('原始表', '原始表'[User])
)

3. 创建核心统计度量值

新建度量值,用于统计同时属于两个类别且最小年份匹配的用户数:

Count Users in Combo = 
VAR SelectedCombo = SELECTEDVALUE('Category Combinations'[Combination])
VAR SplitCombo = PATHITEM(SUBSTITUTE(SelectedCombo, " x ", "|"), 1) & "," & PATHITEM(SUBSTITUTE(SelectedCombo, " x ", "|"), 2)
VAR UsersInBothCats = 
    CALCULATETABLE(
        VALUES('原始表'[User]),
        TREATAS(SPLIT(SplitCombo, ","), '原始表'[Category]),
        GROUPBY('原始表', '原始表'[User], "HasBoth", COUNTROWS(CURRENTGROUP())) = 2
    )
VAR UsersWithMinYear = 
    CALCULATETABLE(
        VALUES('原始表'[User]),
        '原始表'[User Min Year] = SELECTEDVALUE('原始表'[User Min Year])
    )
RETURN
COUNTROWS(INTERSECT(UsersInBothCats, UsersWithMinYear))

4. 构建矩阵可视化

  • 将Category Combinations表的Combination字段拖入矩阵行区域
  • 将原始表的User Min Year字段拖入矩阵列区域
  • 将Count Users in Combo度量值拖入矩阵值区域
  • 在值字段的格式设置中,将“显示项无数据时”设为0

内容的提问来源于stack exchange,提问作者user23315322

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 08:14:50