Tableau如何跨表合并Calc1、Calc2双Yes值为单条就诊记录行
Tableau跨表匹配就诊号双Yes值的实现方法
完全可以通过计算字段实现,不需要修改原始数据,操作步骤如下:
前置检查
首先确认两个数据表已经在Tableau中以Encounter Number(就诊编号)作为关联键建立了关联,不管是物理表连接还是跨数据源关系关联都支持后续操作。
步骤1:创建匹配标记计算字段
新建计算字段,命名为有效记录标记,输入以下公式:
IF {FIXED [Encounter Number]: MAX(IF [Calc 1] = 'Yes' THEN 1 ELSE 0 END)} = 1 AND {FIXED [Encounter Number]: MAX(IF [Calc 2] = 'Yes' THEN 1 ELSE 0 END)} = 1 THEN '保留' ELSE '剔除' END
这个公式用FIXED粒度计算,会自动忽略跨表关联产生的行级null值,只要同一个就诊编号下同时存在Calc 1为Yes、Calc 2为Yes的记录,就会标记为保留。
步骤2:创建补全空值的计算字段
跨表关联后会出现同一就诊号拆分多行的情况:其中一行Calc1为Yes但Calc2为null、另一行Calc2为Yes但Calc1为null,需要新建两个计算字段补全值:
- 补全Calc 1字段,公式:
IFNULL([Calc 1], {FIXED [Encounter Number]: MAX([Calc 1])})
- 补全Calc 2字段,公式:
IFNULL([Calc 2], {FIXED [Encounter Number]: MAX([Calc 2])})
字符串聚合时Yes的优先级高于null,上述公式会自动把同一就诊号下的Yes值填充到对应空值位置。
步骤3:配置视图完成筛选
- 将
有效记录标记字段拖入筛选器,仅勾选「保留」选项 - 将
Encounter Number、补全后的Calc 1、补全后的Calc 2三个字段拖入视图的维度区域 - 如果出现重复行,选中三个字段右键设置为「维度」,关闭菜单「分析」下的「聚合度量」选项即可
最终输出效果就是每个唯一就诊编号占一行,Calc 1和Calc 2均显示为Yes,和预期效果完全一致。
注意:如果后续Calc字段的可选值不止Yes/No两类,只需要调整公式里的判断条件即可,不需要改动整体逻辑。
内容的提问来源于stack exchange,提问作者Greg
相关产品推荐
相关产品推荐

