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

Power BI中实现CET转EET时间戳及TQ数据小时偏移与排序需求

Power BI CET转EET并实现TQ值小时偏移处理方案

核心步骤拆解

针对你的需求,我们通过DAX计算表实现完整的筛选、时区转换、值偏移和排序逻辑,以下是分步实现代码与说明:


1. 基础数据筛选与CET时间戳重构

首先过滤符合条件的原始数据,并将分散的日期、小时、季度字段整合成标准CET datetime:

EET_Adjusted_Data = 
VAR Filtered_CET_Data = 
    FILTER(
        '你的数据表名',
        // 筛选条件:状态为真 + 2023年6月1日起的CET数据
        '你的数据表名'[is_ok] = TRUE() &&
        '你的数据表名'[for_status] = TRUE() &&
        // 处理Date列的dd/mm/yyyy格式,转换为标准日期
        DATE(RIGHT('你的数据表名'[Date],4), MID('你的数据表名'[Date],4,2), LEFT('你的数据表名'[Date],2)) >= DATE(2023,6,1)
    )
VAR CET_Full_Time = 
    ADDCOLUMNS(
        Filtered_CET_Data,
        "CET_Datetime",
        // 构建完整CET时间戳:Hour是1-24格式,转TIME时需减1(TIME函数小时范围0-23)
        DATE(RIGHT([Date],4), MID([Date],4,2), LEFT([Date],2)) + TIME([Hour]-1, [Qrt], 0)
    )

2. CET转EET时区转换

EET(东欧时间)比CET(中欧时间)快1小时,直接对CET时间戳加1小时得到EET时间,并拆分出EET维度字段:

VAR EET_Converted = 
    ADDCOLUMNS(
        CET_Full_Time,
        "EET_Datetime", DATEADD([CET_Datetime], 1, HOUR),
        "EET_Date", DATE(YEAR([EET_Datetime]), MONTH([EET_Datetime]), DAY([EET_Datetime])),
        "EET_Hour", HOUR([EET_Datetime]) + 1, // 转回1-24小时格式
        "EET_Qrt", MINUTE([EET_Datetime])
    )

3. TQ值1小时偏移处理(覆盖跨天场景)

利用dispatchQrt的连续性(每小时4个季度,单日共96个),将当前CET时间的TQ值偏移到1小时后的EET时间维度,同时处理6月最后一小时到7月第一小时的跨天情况:

VAR TQ_Offset = 
    ADDCOLUMNS(
        EET_Converted,
        "Offset_TQ",
        VAR Current_Qrt = [dispatchQrt]
        VAR Target_Qrt = Current_Qrt + 4
        RETURN
            // 非跨天情况:直接匹配偏移4个季度的TQ值
            IF(Target_Qrt <= 96,
                LOOKUPVALUE(
                    '你的数据表名'[TQ],
                    '你的数据表名'[dispatchQrt], Target_Qrt,
                    '你的数据表名'[Date], [Date],
                    '你的数据表名'[is_ok], TRUE(),
                    '你的数据表名'[for_status], TRUE(),
                    BLANK()
                ),
                // 跨天情况:日期+1,季度值取Target_Qrt-96
                LOOKUPVALUE(
                    '你的数据表名'[TQ],
                    '你的数据表名'[dispatchQrt], Target_Qrt - 96,
                    '你的数据表名'[Date], DATE(RIGHT([Date],4), MID([Date],4,2), LEFT([Date],2)) + 1,
                    '你的数据表名'[is_ok], TRUE(),
                    '你的数据表名'[for_status], TRUE(),
                    BLANK()
                )
            )
    )

4. 输出整理与排序

返回需要的字段,并在Power BI中对计算表按EET_Datetime升序排序:

RETURN
    SELECTCOLUMNS(
        TQ_Offset,
        "EET日期", [EET_Date],
        "EET小时", [EET_Hour],
        "EET季度", [EET_Qrt],
        "偏移后TQ值", [Offset_TQ],
        "EET完整时间戳", [EET_Datetime]
    )

后续操作

  1. 将上述代码中的你的数据表名替换为实际表名
  2. 创建计算表后,进入建模选项卡,设置EET完整时间戳为升序排序依据
  3. 若原始Date列是日期类型而非文本,可将DATE(RIGHT([Date],4),...)替换为[Date]简化代码

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 15:07:33