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

如何在Tableau中基于三个不同关联表创建Sankey图?

解决Tableau多关联表创建Sankey图的思路

核心逻辑

Sankey图依赖节点-流动的结构化数据,每一行代表一组「起点→终点」的流量关系。针对三个通过数据混合关联的独立表,你需要先把跨表的流动路径拆解为两段(表1→表2、表2→表3),再将这两段数据合并,形成Sankey所需的统一结构。

具体操作步骤

  1. 确认关联字段与数据粒度

    • 明确三个表之间的关联键(比如共同的ID字段),确保各表数据粒度一致(避免聚合表和明细表直接关联导致重复数据)。
    • 如果原数据混合存在粒度差异,先对表做聚合/明细转换,统一到同一粒度(比如都按ID维度)。
  2. 生成两段流动路径数据
    你需要通过Join将相邻表关联,生成两组流动数据:

    • 第一组:表1与表2关联,提取「关联键、表1节点(起点)、表2节点(终点)」,并标记阶段(比如1-2)
    • 第二组:表2与表3关联,提取「关联键、表2节点(起点)、表3节点(终点)」,标记阶段(比如2-3)
    • 推荐用自定义SQL直接生成,示例代码:
      -- 生成表1到表2的流动数据
      SELECT 
        t1.id, 
        t1.source_node AS start_node, 
        t2.mid_node AS end_node, 
        '1-2' AS flow_stage
      FROM table1 t1
      JOIN table2 t2 ON t1.id = t2.id
      
      UNION ALL
      
      -- 生成表2到表3的流动数据
      SELECT 
        t2.id, 
        t2.mid_node AS start_node, 
        t3.target_node AS end_node, 
        '2-3' AS flow_stage
      FROM table2 t2
      JOIN table3 t3 ON t2.id = t3.id
      
  3. 在Tableau中配置Sankey图

    • 将上述自定义SQL结果作为数据源导入Tableau
    • 创建度量:用COUNT(id)表示流量大小(如果有数值型流量字段,直接用该字段求和)
    • 拖放字段:将start_node和end_node分别作为维度,流量度量作为大小,然后切换到Sankey图类型(如果Tableau原生没有,可通过「显示方式→桑基图」或使用官方扩展)

注意事项

  • 如果无法直接用Join(原数据混合是因为表结构差异大),可以先通过数据混合将三个表的节点字段整合到一个视图中,再导出为临时表,重复上述步骤。
  • 确保所有节点名称在跨表中是统一的(比如表2的mid_node和表1、表3中的对应节点名称一致,避免Sankey出现断裂)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 18:35:07