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

Power BI DAX:动态计算最新值<9的患者去重计数及占比

DAX度量值解决方案

需求回顾

基于选定会计月,动态计算过去12个月内:

  • 有A1C记录的去重患者总数
  • 最新A1C值小于9的去重患者数
  • 上述两者的占比

前提条件

数据模型已包含日历表,且日历表与A1C表通过Result_Date和日历表日期列建立关联关系。

完整DAX度量值

1. 总A1C患者数

总A1C患者数 = 
VAR 过去12个月范围 = DATESINPERIOD('日历表'[日期], MAX('日历表'[日期]), -12, MONTH)
RETURN
CALCULATE(
    DISTINCTCOUNT(A1c[patientID]),
    A1c[Result_Date] IN 过去12个月范围
)
  • 用DATESINPERIOD生成选定会计月最后一天往前推12个月的日期范围
  • 统计该范围内有A1C记录的唯一患者数

2. A1C<9的患者数

A1C<9的患者数 = 
VAR 过去12个月范围 = DATESINPERIOD('日历表'[日期], MAX('日历表'[日期]), -12, MONTH)
VAR 患者最新A1C记录 = 
    ADDCOLUMNS(
        VALUES(A1c[patientID]), -- 获取所有有记录的患者ID
        "@最新检测日期", CALCULATE(MAX(A1c[Result_Date]), A1c[Result_Date] IN 过去12个月范围),
        "@最新A1C值", CALCULATE(MAX(A1c[Value]), A1c[Result_Date] = [@最新检测日期])
    )
VAR 符合条件患者集 = FILTER(患者最新A1C记录, [@最新A1C值] < 9 && NOT ISBLANK([@最新检测日期]))
RETURN
COUNTROWS(符合条件患者集)
  • 逐行计算每个患者在过去12个月内的最新检测日期
  • 基于最新日期匹配对应的A1C值
  • 筛选出最新值小于9且有有效记录的患者,统计数量

3. A1C<9患者占比

A1C<9患者占比 = 
DIVIDE(
    [A1C<9的患者数],
    [总A1C患者数],
    0 -- 当总患者数为0时返回0,避免错误
)
  • 使用DIVIDE处理除法,自动处理分母为0的异常情况

原代码问题分析

  1. 语法错误:CALCULATETABLE语句缺少闭合括号,导致代码无法运行
  2. 表值与单值混淆:VALUES(A1c[patientID])返回表对象,不能直接用A1c[patientID] = patientID比较,需通过ADDCOLUMNS逐行遍历处理
  3. 日期格式不匹配:用FORMAT将日期转为文本后,与原表日期类型字段无法匹配,导致LOOKUPVALUE无法找到对应值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 06:54:23