无法从时间戳 json 字段加载到突触数据湖 table 时间戳列

unable to load from timestamp json field to synapse data lake table timestamp column

我一直在尝试在 Azure Synapse Studio 中将我的 json 数据从 ADLS 加载到 Azure 数据湖 table,String 和 Int 列加载正常,但不是时间戳列。它在数据流输出流中预览为 NULL,如果我让管道 运行 将其作为空字符串写回到 ADLS,如果我随后查询 table 它显示为 (NULL ).如果我将列数据类型更改为字符串,它可以正常工作,因此它特定于时间戳数据类型。

示例 JSON 文件如下所示:

[{
    "mold_id": "sensor1",
    "time_utc": "2022-04-08T15:34:16Z",
    "temperature": 80
}, {
    "mold_id": "sensor1",
    "time_utc": "2022-04-10T15:34:16Z",
    "temperature": 85
}]

并且列定义为“数据类型:时间戳”和“Format/Length:yyyy-MM-ddTHH:mm:ssZ”

关于如何让它工作的任何想法?

Azure 突触不支持 timestamp 数据类型。它在列定义为 date (yyyy-mm-dd) 时起作用,因为它是受支持的类型。但是,当您有时间戳列时,可以将该列强制转换为 azure synapse 支持的 datetime 类型。

Azure 突触分析支持其他几种日期和时间数据类型。您可以参考以下link来了解更多关于这些类型的信息。

https://docs.microsoft.com/en-us/sql/t-sql/functions/date-and-time-data-types-and-functions-transact-sql?view=sql-server-ver15

可能适合您的数据类型是 datetimedatetime2。您可以参考以下 link 以了解有关这些数据类型的更多信息。

日期时间:

https://docs.microsoft.com/en-us/sql/t-sql/data-types/datetime-transact-sql?view=sql-server-ver15

日期时间 2:

https://docs.microsoft.com/en-us/sql/t-sql/data-types/datetime2-transact-sql?view=sql-server-ver15

这是一个引用不受支持的数据类型的文档(请参阅部分 - 不受支持的数据类型的解决方法)。

https://docs.microsoft.com/en-us/azure/synapse-analytics/sql/develop-tables-data-types