gpt4 book ai didi

azure-sql-database - 使用 Azure 数据工厂将数据加载到 Snowflake 时遇到问题

转载 作者:行者123 更新时间:2023-12-04 17:11:06 29 4
gpt4 key购买 nike

我正在尝试使用 Azure 数据工厂将一个小数据表从 Azure SQL 导入到 Snowflake。

通常我使用这种方法没有任何问题: https://learn.microsoft.com/en-us/azure/data-factory/connector-snowflake?tabs=data-factory#staged-copy-to-snowflake

但现在我遇到了一个问题,源表如下所示: enter image description here有两列 SLA_Processing_start_timeSLA_Processing_end_time 具有数据类型 TIME

不知何故,在将数据写入暂存区域时,数据会更改为类似 0:08:00:00.0000000,0:17:00:00.0000000 的内容,这会导致类似这样的错误:

时间 '0:08:00:00.0000000' 无法识别文件

映射看起来像这样: enter image description here

我曾尝试添加 TIME_FORMAT 属性,例如 'HH24:MI:SS.FF',但这没有帮助。关于为什么 08:00:00 变成 0:08:00:00.0000000 以及如何避免它的任何想法?

最佳答案

最后,我能够在我的环境中重新创建您的案例。我有同样的错误,前导零提前出现 (0: 08:00:00.0000000)。我什至抓取了它在 BlobStorage 上创建的文件,零已经存在。此事件创建 CSV 文本文件,不进行任何错误处理(双引号、转义字符等)。在 Snowflake 端,它创建一个临时 Stage 并加载这些文件。不幸的是,它不会自行清理并在 BlobStorage 上留下空目录。此外,您不能使用 ADLS Gen2。 :(

ADF 中的这个连接器不是很好,我什至无法将它用于 AWS 环境,我不得不在 Azure 中设置一个 Snowflake 帐户。我已经尝试了一些解决方法,您似乎有两个选择:

  1. 简单解决方案:

    把两边的数据类型都改成DateTime,然后在Snowflake这边改造这个属性。如果您不能在源端更改类型,您可以只使用“查询”选项并使用 CAST/CONVERT 函数编写 SELECT。

  2. 推荐解决方案:

    • 使用复制数据事件将您的数据插入 BlobStorage/ADLS(此事件还是这样做了)最好采用拼花文件格式和自行设计的结构 (Best practices for using Azure Data Lake Storage)。
    • 为您的 BlobStorage/ADLS 创建一个永久的 Snowflake Stage。
    • 添加 Lookup 事件并将数据从那里的文件加载到表中,您可以使用常规查询或编写存储过程并调用它。

    因此,您将更好地控制正在发生的事情,并且您将为您的组织构建 DataLake 解决方案。

    enter image description here

关于azure-sql-database - 使用 Azure 数据工厂将数据加载到 Snowflake 时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69434162/

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