如何用Power BI Chord图展示同列名数据表的关联关系
现有查询结果适配Power BI Chord图的实现步骤
1. 改造SQL查询输出Chord图要求的From-To结构
原查询仅输出符合条件的列清单,需要通过自连接生成两两表的配对关系,改造后的SQL如下:
WITH ColumnCount AS( SELECT s.name AS SchemaName, t.name AS TableName, t.object_id AS TableID, c.name AS ColumnName, ct.[name] AS DataType, c.max_length, c.precision, c.scale, COUNT(c.column_id) OVER (PARTITION BY c.[name], ct.[name], c.max_length, c.precision, c.scale) AS Duplicates FROM sys.schemas s JOIN sys.tables t ON s.schema_id = t.schema_id JOIN sys.columns c ON t.object_id = c.object_id JOIN sys.types ct ON c.user_type_id = ct.user_type_id ), MatchedColumns AS ( SELECT * FROM ColumnCount WHERE Duplicates > 1 ) SELECT DISTINCT CONCAT(a.SchemaName, '.', a.TableName) AS FromTable, CONCAT(b.SchemaName, '.', b.TableName) AS ToTable, a.ColumnName AS MatchedColumn, COUNT(a.ColumnName) OVER (PARTITION BY a.TableID, b.TableID) AS SharedColumnCount FROM MatchedColumns a INNER JOIN MatchedColumns b ON a.ColumnName = b.ColumnName AND a.DataType = b.DataType AND a.max_length = b.max_length AND a.precision = b.precision AND a.scale = b.scale AND a.TableID < b.TableID -- 避免重复配对、自配对 ORDER BY SharedColumnCount DESC
如果不需要展示具体匹配列,可去掉MatchedColumn字段并做分组聚合,减少数据集体积,提升Power BI加载速度。
2. Power BI Chord图字段配置
- 导入改造后的查询结果到Power BI数据模型
- Chord图的
From字段选择FromTable,To字段选择ToTable Values字段选择SharedColumnCount,该值代表两个表共享的匹配列数量,数值越大连线越粗,代表关联强度越高- 可选配置:将MatchedColumn加入Tooltip字段,悬停连线时即可查看两个表具体共哪些属性匹配的列
如果表数量超过20张,建议先过滤
SharedColumnCount>=2的配对,减少连线数量避免视觉混乱。
更适配该场景的替代可视化方案
- 力导向节点图(Force-Directed Graph):Power BI市场的该视觉对象更适合展示表间关联网络,节点代表数据表,连线粗细代表共享匹配列的数量,结构比Chord图更清晰,表数量较多时也不会出现线条堆叠难以分辨的问题
- 关联矩阵:用Power BI原生矩阵视觉对象即可实现,行和列都配置为表名,值配置为
SharedColumnCount,开启条件格式按数值大小上色,空白单元格代表两个表无匹配列,可快速定位强关联的表对 - 树形图/旭日图:如果需要按列属性分组展示归属的数据表,可使用该类视觉对象,内层为列属性组,外层为归属的数据表,直观展示哪些列被多表共享
内容的提问来源于stack exchange,提问作者Francesco Mantovani
相关产品推荐
相关产品推荐

