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

Power BI中DAX公式如何返回新冠确诊首例数值?

COVID-19新增病例DAX公式优化(支持返回首例确诊数值)

问题说明

现有DAX公式可计算每日新增确诊病例,但无法返回每个国家/地区(含省/州维度)的首例确诊数值——即首次出现确诊病例的日期,公式当前返回0而非当日的确诊数。

数据源说明

使用约翰霍普金斯大学发布的全球COVID-19确诊病例时间序列数据,数据结构包含Country/Region、Province/State、Date及当日累计确诊Cases字段。

初始公式

New_Cases = 
VAR Countries = ConfirmedCases[Country/Region]
VAR State = ConfirmedCases[Province/State]
VAR dates = ConfirmedCases[Date]
VAR PrevDay =
CALCULATE(
    MAX(ConfirmedCases[Cases]),
    FILTER('ConfirmedCases',
    ConfirmedCases[Country/Region]=Countries && ConfirmedCases[Province/State]=State && ConfirmedCases[Date]<dates))
RETURN
IF(PrevDay=0,0,
IF(PrevDay>[Cases],0,
IF(PrevDay>0,[Cases]-PrevDay)))

问题分析

初始公式中,当PrevDay=0(即当日为该地区首次出现确诊的日期)时直接返回0,导致首例确诊数值被掩盖。

修改后的公式

New_Cases = 
VAR Countries = ConfirmedCases[Country/Region]
VAR State = ConfirmedCases[Province/State]
VAR dates = ConfirmedCases[Date]
VAR PrevDay =
CALCULATE(
    MAX(ConfirmedCases[Cases]),
    FILTER('ConfirmedCases',
    ConfirmedCases[Country/Region]=Countries && ConfirmedCases[Province/State]=State && ConfirmedCases[Date]<dates))
RETURN
IF(PrevDay=0, 
    // 首次出现确诊时,返回当日累计数作为新增
    IF([Cases]>0, [Cases], 0),
    // 非首次情况,保留原有逻辑:修正数据回溯时返回0,正常计算差值
    IF(PrevDay>[Cases], 0, [Cases]-PrevDay))

关键修改点

将原逻辑中PrevDay=0时直接返回0的判断,替换为当PrevDay=0且[Cases]>0时返回[Cases],这样既保留了对无确诊日期返回0的逻辑,又捕获了首例确诊的场景,返回当日的确诊数作为新增值。

效果验证

修改后,每个国家/地区首次出现确诊的日期,New_Cases字段会显示当日的累计确诊数;后续日期仍正常计算当日与前一日的累计差值,同时保留了对数据回溯修正(前一日累计数大于当日)时返回0的处理逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 11:21:07