Azure Synapse中如何将parquet文件的varchar时间列转为datetime类型
解决方案
你可以通过显式指定字段并对dateTimeStamp做类型转换修改视图定义即可,修改后的视图创建代码如下:
CREATE OR ALTER VIEW DeviceTelemetryView AS SELECT -- 此处根据你实际的Parquet文件字段补全所有需要对外暴露的列 TRY_CAST(dateTimeStamp AS DATETIME2) AS dateTimeStamp, deviceId, telemetryValue1, telemetryValue2 FROM OPENROWSET( BULK 'https://test123.dfs.core.windows.net/devicetelemetry/*/*/*/*/*/', FORMAT = 'PARQUET' ) AS [result]
说明:
- 优先使用
TRY_CAST进行转换:如果存在格式不符合要求的时间戳字符串,TRY_CAST会返回NULL而不会导致整个查询报错,更适配IoT遥测数据可能存在脏数据的场景。 - 若你确认所有
dateTimeStamp取值都严格符合ISO 8601标准时间格式,也可以替换为CAST(dateTimeStamp AS DATETIME2)使用。 - 转换完成后即可直接使用时间范围筛选,示例查询如下:
-- 按时间范围筛选数据示例 SELECT * FROM DeviceTelemetryView WHERE dateTimeStamp >= '2021-11-01 00:00:00' AND dateTimeStamp < '2021-11-30 23:59:59'
内容的提问来源于stack exchange,提问作者Josh L
相关产品推荐
相关产品推荐

