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

如何在Deneb Sankey图中集成PowerBI度量值实现动态数值更新

解决Deneb Sankey模板中用PowerBI度量值替换手动数值的问题

问题核心

你当前的静态JSON数据里直接写度量值名称会被Deneb识别为字符串,而非PowerBI传递的度量值数值,必须将静态路由结构与PowerBI dataset中的度量值做关联。

具体解决步骤

1. 准备PowerBI数据模型(二选一)

  • 方案A:创建路由映射表
    在PowerBI中通过「输入数据」新建静态表Sankey_Routes,包含以下列:

    SourceDestinationMeasureName
    EMSArrivalsems_arrivals
    Walk-inArrivalswalkin_arrivals
    .........

    将该表及所有需要的度量值添加到Deneb的数据面板中(无需关联业务模型,仅作为映射表即可)。

  • 方案B:直接在Deneb中构造路由映射
    无需额外建表,直接在Deneb的JSON transform环节定义路由与度量值的对应关系。

2. 修改Deneb的JSON配置

替换静态数据部分

删除原来的静态input数据块,替换为从dataset读取并关联度量值的结构:

若用方案A(路由映射表):
"data": [
  {
    "name": "routes",
    "source": "dataset",
    "fields": [
      {"name": "Source", "type": "nominal"},
      {"name": "Destination", "type": "nominal"},
      {"name": "ems_arrivals", "type": "quantitative"},
      {"name": "walkin_arrivals", "type": "quantitative"}
      // 添加所有需要的度量值字段
    ]
  },
  {
    "name": "input",
    "source": "routes",
    "transform": [
      {
        "fold": ["ems_arrivals", "walkin_arrivals"], // 列出所有度量值列
        "as": ["MeasureName", "value"]
      },
      {
        "filter": "datum.value > 0" // 可选:过滤数值为0的路由,避免空路径
      }
    ]
  }
]
若用方案B(Deneb内构造映射):
"data": [
  {
    "name": "dataset",
    "source": "dataset"
  },
  {
    "name": "input",
    "source": "dataset",
    "transform": [
      // 手动定义路由映射
      {
        "data": [
          {"route_key": "ems", "source": "EMS", "destination": "Arrivals"},
          {"route_key": "walkin", "source": "Walk-in", "destination": "Arrivals"}
          // 补充所有需要的路由
        ],
        "name": "route_mapping"
      },
      {
        "cross": "route_mapping" // 关联路由与dataset中的度量值
      },
      {
        "calculate": "datum.route_key === 'ems' ? datum.ems_arrivals : datum.route_key === 'walkin' ? datum.walkin_arrivals : 0",
        "as": "value"
      },
      {
        "filter": "datum.value > 0" // 可选:过滤空值路由
      }
    ]
  }
]

3. 保留原有可视化配置

确保Sankey的mark和encoding部分原有设置(堆叠、排序、间距等)不变,仅需确认字段引用正确:

"mark": {
  "type": "sankey",
  "source": {"field": "source"},
  "target": {"field": "destination"},
  "value": {"field": "value"},
  // 保留你之前设置的排序、节点间距等配置
  "sort": {"field": "value", "order": "descending"},
  "nodePadding": 20,
  ...
}

4. 验证效果

切换PowerBI的月度筛选器,查看Deneb图表是否自动更新路由数值;若路径仍不显示,可在Deneb的「数据」面板中检查input数据集的value列是否正确加载了度量值结果。

关键注意事项

  • 禁止在静态values数组中直接写度量值名称,Deneb会将其视为字符串而非数值。
  • 路由固定时优先选方案A的映射表,后续维护更便捷。
  • 过滤value > 0的路由可避免无意义的空路径,提升图表可读性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 11:43:26