Power Query中保留CCA3关联,将年份列转为时间序列的方法
解决方法:Power Query逆透视年份列(保留CCA3关联)
步骤1:在Power Query中处理人口表
- 打开Power Query编辑器,加载包含年份列的人口表
- 选中CCA3列,右键选择「逆透视其他列」
- 这一步会自动把所有年份列转为两行:「属性」(年份)和「值」(对应年份的人口),同时完整保留CCA3列
- 操作后表结构变为:
CCA3 | 属性 | 值
- 重命名列:把「属性」改成「年份」,「值」改成「人口」
步骤2:调整数据类型
- 将「年份」列的数据类型改为整数或日期,确保时间轴排序正常
- 将「人口」列改为数值类型,避免后续可视化时出现计算错误
步骤3:维持表关联
处理后的人口表依然保留CCA3列,直接和另外两个表的CCA3列维持原有关联关系即可,不会出现关联断裂的问题
可视化制作
回到Power BI报表视图:
- 拖入「年份」到X轴,「人口」到Y轴,从关联表中拖入「国家名称」到图例
- 选择折线图或面积图,就能直接展示不同国家人口随时间的演变趋势
针对M代码的调整示例
如果你的原始M代码类似如下:
let Source = Excel.Workbook(File.Contents("你的数据源路径"), null, true), Population_Sheet = Source{[Item="Population",Kind="Sheet"]}[Data], #"Promoted Headers" = Table.PromoteHeaders(Population_Sheet, [PromoteAllScalars=true]) in #"Promoted Headers"
可以在末尾添加逆透视和类型转换步骤:
let Source = Excel.Workbook(File.Contents("你的数据源路径"), null, true), Population_Sheet = Source{[Item="Population",Kind="Sheet"]}[Data], #"Promoted Headers" = Table.PromoteHeaders(Population_Sheet, [PromoteAllScalars=true]), #"Unpivoted Other Columns" = Table.UnpivotOtherColumns(#"Promoted Headers", {"CCA3"}, "年份", "人口"), #"Changed Type" = Table.TransformColumnTypes(#"Unpivoted Other Columns",{{"年份", Int64.Type}, {"人口", Int64.Type}}) in #"Changed Type"
内容的提问来源于stack exchange,提问作者Benjamin BERNARD
相关产品推荐
相关产品推荐

