Power BI中两个Datetime列匹配不符的技术求助
Datetime列匹配异常问题排查与解决
问题核心
Table1的Datetime_1与Table2的Datetime_2无法按预期匹配,关联后时间对应关系混乱,达不到预期的对齐效果。
预期匹配效果
| Datetime_1 | Datetime_2 |
|---|---|
| 01/01/2023 08:00:00 AM | |
| ... | ... |
| 01/11/2023 12:00:00 AM | 01/11/2023 12:00:00 AM |
| 01/11/2023 01:00:00 AM | 01/11/2023 01:00:00 AM |
| ... | ... |
| 31/01/2023 12:00:00 PM | 31/01/2023 12:00:00 PM |
实际异常表现
关联后Datetime_2的时间未与Datetime_1对应时间对齐,出现时间范围错位、跨日期错误匹配的情况;字段面板中Datetime_1无层级图标,Datetime_2有层级但缺失小时层级。
时间列基础参数
- Datetime_1:时间范围01/01/2023 12:00:00AM至01/31/2023 11:00:00PM,步长1小时
- Datetime_2:时间范围01/11/2023 8:15:00 PM至02/06/2023 7:45:00 PM,步长30分钟
已执行操作
- 已在两列间创建关联关系,无报错提示
- 已在Power Query和数据面板中设置两列为Date/Time格式
- 发现字段面板层级差异:Datetime_1无时间层级展开图标,Datetime_2有层级但缺少小时选项
解决步骤
1. 统一时间精度,消除步长差异
Datetime_1步长1小时,Datetime_2步长30分钟,直接精确匹配会导致大量时间点无法对齐,需统一精度:
- 方案一(推荐):在Power Query中给Datetime_2添加自定义列,将时间向下取整到小时:
用这个取整后的列与Datetime_1关联= DateTime.From(Number.RoundDown(DateTime.ToNumber([Datetime_2])*24)/24) - 方案二:扩展Datetime_1的时间序列,生成30分钟间隔的时间点,再与Datetime_2关联
2. 修复字段层级异常
字段层级差异说明时间列的内部格式未被正确识别:
- 进入Power Query,选中Datetime_1列,点击检测数据类型,确保自动识别为Date/Time
- 若检测后仍无层级,手动设置数据类型为Date/Time,然后重新加载数据
- 对Datetime_2列,检查Power Query中是否存在截断小时的操作,重置为完整的Date/Time格式
3. 检查关联关系配置
- 进入模型视图,确认关联的基数设置:若Datetime_2存在重复时间点,设置为多对一(Datetime_1为一方)
- 调整筛选方向为双向,确保两边的时间范围都能被正确筛选
4. 验证时间底层存储值
表面格式正确但底层存储可能存在毫秒级误差,导致匹配失败:
- 在Power Query中给两列分别添加自定义列,查看时间的数值形式:
= DateTime.ToNumber([Datetime列]) - 对比相同显示时间的数值,若存在差异,对两列都执行取整处理消除误差
内容的提问来源于stack exchange,提问作者Sultry T.
相关产品推荐
相关产品推荐

