Snowflake视图添加TIMESTAMP_TZ时间戳列语法报错咨询
错误原因
- 不符合Snowflake SELECT语法规范:不能直接在列别名后追加数据类型声明,你写的
NULL AS Ingestion_Time TIMESTAMP_TZ属于非法语法 - NULL默认没有明确数据类型,要生成指定类型的空值列,需要先对NULL做类型转换,再指定别名
修正后的SQL语句
CREATE OR REPLACE VIEW DATA_LAKE.DATA_ANALYTICS.RISK_PREDICT_DR_LATEST COPY GRANTS AS( SELECT ACT_ID, PROBABILITY_FRAUD, PREDICTON_TIME AS PREDICTION_TIME, FRAUD_EXPLANATION, SAFE_EXPLANATION, RISK_FLAG, NULL::TIMESTAMP_TZ AS Ingestion_Time FROM DATA_LAKE.DATA_ANALYTICS.RISK_PREDICT_DR_AUD tab1 QUALIFY ROW_NUMBER() OVER(PARTITION BY tab1.ACT_ID ORDER BY PREDICTON_TIME DESC)=1 );
补充说明
- 除了用Snowflake专属的
::类型转换运算符,也可以用标准SQL的CAST写法:CAST(NULL AS TIMESTAMP_TZ) AS Ingestion_Time,效果完全一致 - 视图本身不会存储数据,这个新增的列在查询时会统一返回带时区的时间戳类型的空值,符合你的需求
内容的提问来源于stack exchange,提问作者jay
相关产品推荐
相关产品推荐

