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
相关产品推荐
相关产品推荐

