如何制作Power BI矩阵汇总多度量值:按年统计性别年龄占比
在Power BI矩阵中按年份汇总性别与年龄的细分占比(每组列占比总和100%)
数据说明
我的数据为每行对应一个人,格式示例如下:
Year,Gender,Age 2020,Female,0-20 2020,Male,0-20 2021,Female,21-50 ...
需求目标
要在单个Power BI矩阵中按年份汇总,分别展示性别(女/男)和年龄(0-20/21-50/50+)的细分占比,要求每组列的占比总和为100%,期望呈现的样式如下(两种均可):
样式一(带分组表头)
| 年份 | 性别 | 年龄 | |||
|---|---|---|---|---|---|
| 女 | 男 | 0-20 | 21-50 | 50+ | |
| 2020 | 40% | 60% | 15% | 35% | 50% |
| 2021 | 45% | 55% | 12% | 39% | 49% |
| 2022 | 51% | 49% | 11% | 45% | 44% |
| 2023 | 37% | 63% | 19% | 40% | 41% |
样式二(无分组表头)
| 年份 | 女 | 男 | 0-20 | 21-50 | 50+ |
|---|---|---|---|---|---|
| 2020 | 40% | 60% | 15% | 35% | 50% |
| 2021 | 45% | 55% | 12% | 39% | 49% |
| 2022 | 51% | 49% | 11% | 45% | 44% |
| 2023 | 37% | 63% | 19% | 40% | 41% |
实现步骤
1. 创建基础计数度量值
先创建计算总人数的度量值,作为占比计算的基准:
总人数 = COUNTROWS('你的数据表名')
2. 创建性别占比度量值
分别计算每年内女、男的占比,确保同一年份的性别占比总和为100%:
女性占比 = DIVIDE( CALCULATE(COUNTROWS('你的数据表名'), '你的数据表名'[Gender] = "Female"), CALCULATE([总人数], ALLEXCEPT('你的数据表名', '你的数据表名'[Year])), 0 ) 男性占比 = DIVIDE( CALCULATE(COUNTROWS('你的数据表名'), '你的数据表名'[Gender] = "Male"), CALCULATE([总人数], ALLEXCEPT('你的数据表名', '你的数据表名'[Year])), 0 )
3. 创建年龄分组占比度量值
同理,计算每年内各年龄组的占比,确保同一年份的年龄占比总和为100%:
0-20年龄占比 = DIVIDE( CALCULATE(COUNTROWS('你的数据表名'), '你的数据表名'[Age] = "0-20"), CALCULATE([总人数], ALLEXCEPT('你的数据表名', '你的数据表名'[Year])), 0 ) 21-50年龄占比 = DIVIDE( CALCULATE(COUNTROWS('你的数据表名'), '你的数据表名'[Age] = "21-50"), CALCULATE([总人数], ALLEXCEPT('你的数据表名', '你的数据表名'[Year])), 0 ) 50+年龄占比 = DIVIDE( CALCULATE(COUNTROWS('你的数据表名'), '你的数据表名'[Age] = "Over 50"), CALCULATE([总人数], ALLEXCEPT('你的数据表名', '你的数据表名'[Year])), 0 )
4. 配置矩阵可视化
针对样式一(带分组表头):
- 新建分类组表,用来实现列的分组:
分类组 = DATATABLE( "分组类别", STRING, "细分项", STRING, { {"性别", "Female"}, {"性别", "Male"}, {"年龄", "0-20"}, {"年龄", "21-50"}, {"年龄", "Over 50"} } ) - 创建动态度量值,根据选中的细分项返回对应占比:
动态占比 = SWITCH( SELECTEDVALUE('分类组'[细分项]), "Female", [女性占比], "Male", [男性占比], "0-20", [0-20年龄占比], "21-50", [21-50年龄占比], "Over 50", [50+年龄占比], 0 ) - 矩阵配置:
- 行区域:拖入
Year(年份)字段 - 列区域:先拖入
分组类别,再拖入细分项 - 值区域:拖入
动态占比,并设置格式为百分比(保留0位小数) - 最后修改
细分项的显示名称为中文(如Female改为「女」)
- 行区域:拖入
针对样式二(无分组表头):
- 行区域:拖入
Year(年份)字段 - 值区域:依次拖入
女性占比、男性占比、0-20年龄占比、21-50年龄占比、50+年龄占比 - 调整每个度量值的显示名称为中文,并设置格式为百分比(保留0位小数)
5. 格式调整
选中矩阵,在「格式」面板中调整表头样式、字体、对齐方式等,匹配期望的视觉效果,同时验证每行的性别列、年龄列占比总和是否为100%。
内容的提问来源于stack exchange,提问作者Tim
相关产品推荐
相关产品推荐

