如何在Power BI中计算各州年度人口同比增长率
计算美国各州年度人口同比增长率(Power BI)
方法一:创建DAX计算列(固定每行增长率)
这种方式会把增长率直接嵌入数据表,每一行对应单个州某一年的增长率:
- 打开Power BI Desktop,切换到数据视图(左侧表格图标)
- 点击数据表顶部的新建列按钮
- 输入以下DAX公式:
年度同比增长率(%) = VAR 上年人口 = CALCULATE( SUM('人口数据'[Population]), FILTER( ALL('人口数据'), '人口数据'[State] = EARLIER('人口数据'[State]) && '人口数据'[Year] = EARLIER('人口数据'[Year]) - 1 ) ) RETURN IF( NOT ISBLANK(上年人口), DIVIDE('人口数据'[Population] - 上年人口, 上年人口) * 100, BLANK() )
- 逻辑说明:用
FILTER匹配当前州的上一年数据,DIVIDE避免除数为0的报错;2012年因无上年数据,返回空值
- 按回车确认后,可将新列重命名为更直观的名称
方法二:创建DAX度量值(动态计算)
如果需要配合报表切片器(筛选年份/州)实时更新结果,推荐用度量值:
- 切换到报表视图或数据视图,点击新建度量值
- 输入以下DAX公式:
年度同比增长率(%) = VAR 当前年份 = SELECTEDVALUE('人口数据'[Year]) VAR 当前州 = SELECTEDVALUE('人口数据'[State]) VAR 当前人口 = CALCULATE(SUM('人口数据'[Population]), '人口数据'[Year] = 当前年份, '人口数据'[State] = 当前州) VAR 上年人口 = CALCULATE(SUM('人口数据'[Population]), '人口数据'[Year] = 当前年份 - 1, '人口数据'[State] = 当前州) RETURN IF( NOT ISBLANK(上年人口) && NOT ISBLANK(当前人口), DIVIDE(当前人口 - 上年人口, 上年人口) * 100, BLANK() )
- 逻辑说明:
SELECTEDVALUE获取当前筛选的年份和州,动态计算对应年份的增长率,适合矩阵、卡片等可视化组件
结果验证
用你提供的示例数据测试:
- Alabama 2013年增长率:
(5500-5000)/5000*100 = 10% - Alaska 2013年增长率:
(350-200)/200*100 = 75%
计算完成后可核对数值,确保公式生效
注意事项
- 确认
Year列是整数类型,若为文本需右键列→更改类型→整数 - 若每个州每年仅一行数据,可用
MAX/MIN替代SUM,结果一致 - 如需调整小数位数,右键列/度量值→格式→数字→百分比,设置对应位数
内容的提问来源于stack exchange,提问作者Nicky_BI
相关产品推荐
相关产品推荐

