You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Power BI中计算人口较上一年度增长的DAX公式求解

解决Power BI中计算年度人口增长值的问题

嗨,刚接触Power BI的话,DAX公式确实容易绕晕,我来帮你梳理一下怎么实现这个需求~

首先,你的核心需求是按国家分组,计算每一年人口相对于上一年的增长值,但你原来的公式在逻辑上有几个问题:

  • 没有指定「同一个国家」的筛选条件,会把所有国家上一年的人口混在一起计算
  • SUMX和CALCULATE的嵌套用法不对,这里不需要迭代整个表来求和,而是要精准找到当前行对应国家的上一年人口数据

下面给你两种简单易懂的实现方法,都是新手友好的:

方法1:用LOOKUPVALUE(直观易理解)

这个函数就像Excel里的VLOOKUP,能精准匹配同一个国家、上一年的人口值:

Increase = 
VAR CurrentPop = Population[Population]
VAR PreviousPop = 
    LOOKUPVALUE(
        Population[Population],
        Population[Country], Population[Country],  // 匹配同一个国家
        Population[Year], Population[Year] - 1      // 匹配上一年
    )
RETURN 
    // 只有当上一年数据存在时才计算,否则返回空值(也可以改成0,看你需求)
    IF(NOT(ISBLANK(PreviousPop)), CurrentPop - PreviousPop, BLANK())

方法2:用CALCULATE+PREVIOUSYEAR(更符合DAX上下文逻辑)

这种方法利用DAX的上下文筛选,自动适配当前行的国家和年份:

Increase = 
Population[Population] - 
CALCULATE(
    SUM(Population[Population]),  // 取上一年的人口总和(如果每年一行,也可以用MAX)
    PREVIOUSYEAR(Population[Year]),  // 筛选上一年的数据
    ALLEXCEPT(Population, Population[Country])  // 保留当前国家的上下文,排除其他筛选
)

注意事项

  • 确保你的Population表中,每个国家+年份的组合是唯一的,如果有重复行,记得先去重或者用SUM/MAX来聚合
  • 如果某一年没有上一年的数据(比如每个国家的第一年),公式会返回空值,你可以根据作业需求改成0或者其他标识
  • 要是年份不连续(比如缺了某一年),这两个方法都会返回空值,因为找不到对应的上一年数据,这也是合理的

内容的提问来源于stack exchange,提问作者user1638340

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 21:43:10