繁体   English   中英

Transform.parquet 文件 varchar 列到 Azure Synapse 中的日期时间

[英]Transform .parquet file varchar column to datetime in Azure Synapse

我以 .parquet 文件的形式将 JSON 遥测数据从我们的 IoT 中心发送到 Azure Data Lake Gen2。 然后,我在我的 Azure Synapse Serverless SQL 池中创建了一个视图,我可以连接到该池并查询数据以获取报告。

CREATE VIEW DeviceTelemetryView
AS SELECT * FROM
    OPENROWSET(
        BULK 'https://test123.dfs.core.windows.net/devicetelemetry/*/*/*/*/*/',
        FORMAT = 'PARQUET'
    ) AS [result]

这是我的视图数据的样子: 在此处输入图像描述

这些报告中的大多数都基于日期时间范围。 因此,我希望能够编写使用我的日期时间戳的 SQL 查询。

当前问题

当我查看 dateTimeStamp 列的当前数据类型时,它默认为 varchar(8000) 即使我相信我的 JSON 的日期时间格式正确: "2021-11-29T21:45:00" 如何在我的视图中将此特定字段转换为日期时间字段以对其运行查询?

当我查看 dateTimeStamp 列的当前数据类型时,它默认为 varchar(8000)

我认为您必须查看镶木地板文件中该列的数据类型,在您的情况下它可能是一个字符串。 Sql 解释为 varchar(8000)。

即使我相信我的 JSON 的日期时间格式正确:“2021-11-29T21:45:00”。

即使时间戳格式是正确的,我认为您必须提示系统,以便它知道将该字符串转换为日期时间

如何在我的视图中将此特定字段转换为日期时间字段以对其运行查询?

我不是 sql 方面的专家,但我认为您可以使用cast 和 convert 将字符串转换为时间戳

CREATE VIEW DeviceTelemetryView
AS SELECT corporationid, deviceid, version, Convert(dateTimestamp, 126), data FROM
    OPENROWSET(
        BULK 'https://test123.dfs.core.windows.net/devicetelemetry/*/*/*/*/*/',
        FORMAT = 'PARQUET'
    ) AS [result]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM