BigQuery中UNNEST(GENERATE_TIMESTAMP_ARRAY)语法错误如何修复
错误原因
BigQuery不支持在SELECT字段列表中直接调用UNNEST函数,UNNEST作为表生成函数,必须放在FROM子句中使用。
修正后代码
CREATE TABLE new_table AS SELECT patient_id, time_slot AS time FROM parent_table, UNNEST(GENERATE_TIMESTAMP_ARRAY(min_time, max_time, INTERVAL 4 HOUR)) AS time_slot ORDER BY patient_id, time
上述代码中的逗号是CROSS JOIN的简写,会将原表每行对应的时间数组展开为多行,每行对应一个4小时的时间点,完全满足你每个时段单独一行的需求。
可选调整
如果你的业务逻辑不需要将出院时间戳本身作为单独一行(例如出院当日时段不计算在内),可以调整生成数组的结束参数,过滤掉出院时间点:
GENERATE_TIMESTAMP_ARRAY(min_time, TIMESTAMP_SUB(max_time, INTERVAL 4 HOUR), INTERVAL 4 HOUR)
内容的提问来源于stack exchange,提问作者Flemming
相关产品推荐
相关产品推荐

