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

Power BI中按患者分组获取手术次数、首次及末次手术方法

按患者分组统计手术信息的DAX解决方案

需求说明

处理手术数据库,每行包含患者ID、手术日期、手术类型及记录ID,需按患者分组统计以下信息:

  • 手术次数
  • 首次手术类型
  • 末次手术类型

现有DAX已通过GROUPBY统计手术次数,需补充首次、末次手术类型的获取逻辑。

原始数据示例

patientdatesurgeryid
A01-01-22Eyes1
B01-01-22Mouth2
C01-01-22Nose3
A01-05-22Mouth4
C01-06-22Eyes5
B01-07-22Mouth6
A01-12-22Nose7

期望输出

patientnumber of surgeriesFirst SurgeryLast Surgery
A3EyesNose
B2MouthMouth
C2NoseEyes

当前DAX代码

N_Surgery = GROUPBY(Surgery, Surgery[patient_id], 
                           "N_Surgery", COUNTX(CURRENTGROUP(), Surgery[id]))

参考R实现代码

Summarise <- DF%>%
                group_by(patient_id)%>%
                summarise(N_Surgery = n(),
                          First = surgery[which.min(date)],
                          Last = surgery[which.max(date)])

DAX解决方案

方法1:扩展现有GROUPBY逻辑

在原GROUPBY中添加计算首次、末次手术的逻辑,通过CURRENTGROUP()获取当前患者的所有记录,先找到最小/最大手术日期,再匹配对应的手术类型:

Patient_Surgery_Summary = 
GROUPBY(
    Surgery,
    Surgery[patient_id],
    "Number of Surgeries", COUNTX(CURRENTGROUP(), Surgery[id]),
    "First Surgery", 
        VAR MinDate = MINX(CURRENTGROUP(), Surgery[date])
        RETURN MAXX(FILTER(CURRENTGROUP(), Surgery[date] = MinDate), Surgery[surgery]),
    "Last Surgery",
        VAR MaxDate = MAXX(CURRENTGROUP(), Surgery[date])
        RETURN MAXX(FILTER(CURRENTGROUP(), Surgery[date] = MaxDate), Surgery[surgery])
)

方法2:使用SUMMARIZE函数(更简洁)

SUMMARIZE是DAX中更常用的分组聚合函数,逻辑更直观,无需依赖CURRENTGROUP():

Patient_Surgery_Summary = 
SUMMARIZE(
    Surgery,
    Surgery[patient_id],
    "Number of Surgeries", COUNT(Surgery[id]),
    "First Surgery", 
        VAR MinDate = MIN(Surgery[date])
        RETURN CALCULATE(VALUES(Surgery[surgery]), Surgery[date] = MinDate),
    "Last Surgery",
        VAR MaxDate = MAX(Surgery[date])
        RETURN CALCULATE(VALUES(Surgery[surgery]), Surgery[date] = MaxDate)
)

注意事项

如果同一患者在同一天有多个不同手术,VALUES()会返回多个结果,此时可根据需求用CONCATENATEX合并多个手术类型,例如:

RETURN CONCATENATEX(CALCULATETABLE(Surgery, Surgery[date] = MinDate), Surgery[surgery], ", ")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 16:00:53