请求DAX查询:筛选指定课程后统计用户已修其他课程数量
需求:筛选课程后统计用户修读的其他课程计数
需求背景
我希望了解客户完成某一课程是否会影响他们所完成的其他课程。具体来说,筛选某个课程ID后,返回修读过该课程的用户同时修读的其他课程ID的计数。
数据示例
| 用户ID | 课程ID |
|---|---|
| 1 | A |
| 1 | B |
| 1 | C |
| 2 | A |
| 3 | A |
| 3 | D |
预期结果(筛选课程A时)
| 课程ID | 计数 |
|---|---|
| B | 1 |
| C | 1 |
| D | 1 |
原因:用户ID1修读A的同时修读了B和C,用户ID3修读A的同时修读了D,每个课程的计数代表有多少不同用户同时修读了该课程与筛选的目标课程。
此前尝试表格视觉对象筛选或经典数据透视表均无法满足需求,需要DAX查询实现该功能。
DAX 实现方案
1. 创建基础度量值
假设你的数据表名为课程表,包含用户ID和课程ID两列,创建如下度量值:
同时修读课程计数 = VAR 选中课程 = SELECTEDVALUE('课程表'[课程ID]) VAR 修读选中课程的用户 = CALCULATETABLE( VALUES('课程表'[用户ID]), '课程表'[课程ID] = 选中课程 ) RETURN CALCULATE( DISTINCTCOUNT('课程表'[用户ID]), ALL('课程表'[课程ID]), '课程表'[用户ID] IN 修读选中课程的用户, '课程表'[课程ID] <> 选中课程 )
2. 使用步骤
- 在报表中添加表格视觉对象,将
课程ID拖入行区域,将上述度量值拖入值区域; - 添加一个基于
课程ID字段的切片器,通过切片器选择目标课程(比如A),表格会自动展示该课程用户同时修读的其他课程及对应用户计数。
3. 大数据集优化版
如果数据集过大,可使用以下优化后的度量值提升性能:
同时修读课程计数(优化版) = VAR 选中课程 = SELECTEDVALUE('课程表'[课程ID]) VAR 用户课程配对 = SUMMARIZE('课程表', '课程表'[用户ID], '课程表'[课程ID]) VAR 修读选中课程的用户 = SELECTCOLUMNS( FILTER(用户课程配对, [课程ID] = 选中课程), "用户ID", [用户ID] ) RETURN CALCULATE( DISTINCTCOUNT('课程表'[用户ID]), FILTER(用户课程配对, [用户ID] IN 修读选中课程的用户 && [课程ID] <> 选中课程) )
内容的提问来源于stack exchange,提问作者user23398440
相关产品推荐
相关产品推荐

