关系列必须具有相同的数据类型
概述
此最佳实践规则用于识别关系两端所连接的列数据类型不一致的情况。 关系中的两列必须使用相同的数据类型,才能确保筛选正常、防止错误,并保持最佳查询性能。
类别:错误预防
严重性:高(3)
适用范围
- 关系
为什么这很重要
数据类型不匹配的关系会导致严重问题:
- 模型验证错误:模型可能无法保存或部署
- 关系创建失败:Power BI 和 Analysis Services 可能会拒绝该关系
- 隐式转换:每次查询都会进行代价高昂的数据类型转换
- 结果不正确:类型强制转换会导致意外的筛选行为
- 性能下降:查询过程中转换数据类型会拖慢执行速度
- 内存开销:转换缓冲区需要额外内存
何时触发此规则
出现以下情况时会触发该规则:
FromColumn.DataType != ToColumn.DataType
这用于检测连接了不同数据类型列的关系。
如何修复
手动修复
- 确定需要更改数据类型的列
- 在 Power Query、底层数据源或模型中更改数据类型
- 删除现有关系
- 在更正后的列之间创建新的关系
- 确认筛选功能是否正常
常见原因
原因 1:数据类型选择不一致
在导入或创建表时,为同一个逻辑键选择了不同的数据类型。
原因 2:源系统差异
从不同源系统导入的外键,使用了不同的类型约定。
原因 3:DateTime 与 Date 类型不匹配
事实表使用 DateTime 列,而日期维度使用 Date 类型。
示例
修复前
关系:Sales[CustomerID] (Int64) → Customers[CustomerID] (String)
错误:关系验证失败,或因隐式转换导致性能问题
修复后
关系:Sales[CustomerID] (Int64) → Customers[CustomerID] (Int64)
结果:关系可高效运行,无类型转换开销
兼容级别
本规则适用于兼容级别为 1200 及以上的模型。
相关规则
- 多对多关系应使用单向筛选 - 关系性能优化