如何用DAX在PowerBI中整理数据以制作韦恩图?
用DAX把用户-平台数据转成PowerBI韦恩图适配格式
第一步:先做去重,提取唯一的用户-平台组合
原始数据里有大量重复记录,先生成一张只保留唯一组合的表:
唯一用户平台表 = DISTINCT( SELECTCOLUMNS( '你的原始数据表', "用户名", '你的原始数据表'[用户名], "平台", '你的原始数据表'[平台] ) )
把你的原始数据表替换成你实际的表名即可。
第二步:生成用户的平台归属宽表
基于去重后的表,生成每个用户一行、每个平台作为列的结构,用1标记用户使用过该平台,0标记未使用:
韦恩图专用数据源 = VAR 所有用户 = DISTINCT('唯一用户平台表'[用户名]) RETURN ADDCOLUMNS( 所有用户, "Instagram", IF(COUNTROWS(FILTER('唯一用户平台表', '唯一用户平台表'[用户名] = EARLIER('唯一用户平台表'[用户名]) && '唯一用户平台表'[平台] = "Instagram")) > 0, 1, 0), "Facebook", IF(COUNTROWS(FILTER('唯一用户平台表', '唯一用户平台表'[用户名] = EARLIER('唯一用户平台表'[用户名]) && '唯一用户平台表'[平台] = "Facebook")) > 0, 1, 0), "YouTube", IF(COUNTROWS(FILTER('唯一用户平台表', '唯一用户平台表'[用户名] = EARLIER('唯一用户平台表'[用户名]) && '唯一用户平台表'[平台] = "YouTube")) > 0, 1, 0), "Twitter", IF(COUNTROWS(FILTER('唯一用户平台表', '唯一用户平台表'[用户名] = EARLIER('唯一用户平台表'[用户名]) && '唯一用户平台表'[平台] = "Twitter")) > 0, 1, 0) )
如果你的平台不止这四个,照着现有格式新增对应列就行。
可选:动态适配新增平台(进阶)
要是后续平台会新增,不想每次手动加列,可以这么操作:
- 先建一张「平台维度表」,把所有唯一平台列出来;
- 用
PIVOT函数动态转置(需要PowerBI 2023及以上版本支持):
动态韦恩图数据源 = PIVOT( '唯一用户平台表', VALUES('平台维度表'[平台]), '平台维度表'[平台], COUNT('唯一用户平台表'[平台]), 0 )
记得给「平台维度表」和「唯一用户平台表」建立关联关系。
转换后的效果
最终表结构大概是这样,直接就能拿去制作韦恩图:
| 用户名 | YouTube | |||
|---|---|---|---|---|
| User 1 | 1 | 0 | 1 | 1 |
| User 2 | 0 | 0 | 1 | 0 |
| User 3 | 0 | 1 | 1 | 1 |
| User 4 | 0 | 1 | 0 | 0 |
内容的提问来源于stack exchange,提问作者Anurag Yadav
相关产品推荐
相关产品推荐

