gpt4 book ai didi

mongodb - 从 MongoDB 到 Azure Synapse Anlytics 的 Azure 数据工厂 (ETL) - 日期转换

转载 作者:行者123 更新时间:2023-12-03 03:37:33 24 4
gpt4 key购买 nike

我正在使用 Azure DataFactory 构建从 MongoDB 到 Azure Synapse Anlytics 的 ETL 管道。

这是我的示例文档

{
"_id" : ObjectId("62b6f74ce3a7b8ee664c675d"),
"event_name" : "click_search",
"screen_name" : "home",
"product_sku" : "",
"screen_id" : "5005",
"action_id" : "1023",
"created_on" : ISODate("2022-06-25T16:53:48.000+05:00")
}

我使用了简单的复制数据事件,然后像这样向我展示了源(MongoDB)的预览数据

{
"_id": {
"$oid": "62b6f74ce3a7b8ee664c675d"
},
"event_name": "click_search",
"screen_name": "home",
"product_sku": "",
"screen_id": "5005",
"action_id": "1023",
"created_on": {
"$date": 1656158028000
}
}

我的第一个问题是为什么数据工厂中的日期以不同的格式出现?

其次

在映射时它向我显示这样的 enter image description here

由于这个原因,当我运行管道时,它给出了这个错误

    Message=Column 'created_on' contains an invalid value '1656158028000'. Cannot convert 
'1656158028000'to type 'DateTime'.,Source=Microsoft.DataTransfer.Common,
''Type=System.FormatException,Message=String was not recognized as a valid
DateTime.,Source=mscorlib,'

我试图在文档 Copy data from or to MongoDB using Azure Data Factory or Synapse Analytics 中找到这个问题

但没有得到任何运气,请让我知道幕后发生了什么?为什么 MongoDB 发送这样的日期以及我们如何解决它。谢谢。

最佳答案

MongoDB 将日期存储为 BSON date

BSON Date is a 64-bit integer that represents the number of milliseconds since the Unix epoch (Jan 1, 1970). This results in a representable date range of about 290 million years into the past and future.

对于您的情况,您可以使用toUTC将 UNIX 时间戳转换为 ADF 中的正确日期。需要注意的一件事是,MongoDB 以毫秒为单位存储 unix 时间戳,因此在转换为 UTC 日期之前,您可能需要除以 1000。

关于mongodb - 从 MongoDB 到 Azure Synapse Anlytics 的 Azure 数据工厂 (ETL) - 日期转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72815911/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com