如何用DAX的GENERATESERIES生成每半小时递增的日期时间表
你只需要调整时间序列生成的逻辑,把原代码中逐小时生成时间的GENERATESERIES逻辑改为逐半小时生成即可,修改后的完整代码如下:
DateTime = ADDCOLUMNS ( CROSSJOIN ( CALENDAR(DATE(2021,01,01),DATE(2021,01,01)), SELECTCOLUMNS( GENERATESERIES(0,47,1), "Time",TIME(INT([Value]/2),MOD([Value],2)*30,0) ) ), "DateTime", [Date] + [Time] )
逻辑说明
- 原代码中
GENERATESERIES(0,23,1)生成0到23共24个值对应一天24个整点,修改为GENERATESERIES(0,47,1)生成0到47共48个值,对应一天48个半小时时段 - 时间计算部分
TIME(INT([Value]/2),MOD([Value],2)*30,0):序列值除以2取整得到小时数,序列值对2取余乘以30得到0或30分钟,最终实现每半小时一个时间点 - 若需要调整日期覆盖范围,直接修改
CALENDAR函数的起止日期参数即可,生成的时间表会自动对范围内每一天都生成48个半小时粒度的时间点
你也可以使用分钟作为序列生成基准,逻辑更直观:
DateTime = ADDCOLUMNS ( CROSSJOIN ( CALENDAR(DATE(2021,01,01),DATE(2021,01,01)), SELECTCOLUMNS( GENERATESERIES(0, 1439, 30), // 一天共1440分钟,步长设置为30分钟 "Time", TIME(INT([Value]/60), MOD([Value],60), 0) ) ), "DateTime", [Date] + [Time] )
内容的提问来源于stack exchange,提问作者jcoke
相关产品推荐
相关产品推荐

