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

Power BI中使用IF函数按小时划分时段的错误排查与修正

解决DAX时段划分逻辑错误的问题

你的DAX代码存在两个核心问题:

  • 列名混用:代码里交替使用'cmu_viagens_dw cmu_vgm'[time]和'cmu_viagens_dw cmu_vgm'[hour],必须统一使用存储小时数的列(假设是[hour],如果实际是[time]就替换成对应列名)
  • 条件逻辑顺序错误:第一个IF判断>=6就直接返回"Morning Period",导致所有大于等于6的小时都会被归类为上午,后续的下午、夜间条件永远不会执行

正确的嵌套IF写法

Periods = 
IF(
    'cmu_viagens_dw cmu_vgm'[hour] >= 6 && 'cmu_viagens_dw cmu_vgm'[hour] < 12,
    "Morning Period",
    IF(
        'cmu_viagens_dw cmu_vgm'[hour] >= 12 && 'cmu_viagens_dw cmu_vgm'[hour] < 18,
        "Afternoon Period",
        IF(
            'cmu_viagens_dw cmu_vgm'[hour] >= 18 && 'cmu_viagens_dw cmu_vgm'[hour] <= 23,
            "Night Period",
            "Early morning Period"
        )
    )
)

更简洁的SWITCH写法(推荐)

多分支判断用SWITCH比嵌套IF更易读维护:

Periods = 
SWITCH(
    TRUE(),
    'cmu_viagens_dw cmu_vgm'[hour] >= 6 && 'cmu_viagens_dw cmu_vgm'[hour] < 12, "Morning Period",
    'cmu_viagens_dw cmu_vgm'[hour] >= 12 && 'cmu_viagens_dw cmu_vgm'[hour] < 18, "Afternoon Period",
    'cmu_viagens_dw cmu_vgm'[hour] >= 18 && 'cmu_viagens_dw cmu_vgm'[hour] <= 23, "Night Period",
    "Early morning Period"
)

注意:确保代码里的列名和你表中实际存储小时数的列完全一致,比如如果你的列是[time]就把所有[hour]替换成[time]。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 17:20:45