使用Azure Data Factory将数据加载到Snowflake时出现问题 [英] Trouble loading data into Snowflake using Azure Data Factory

本文介绍了使用Azure Data Factory将数据加载到Snowflake时出现问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

通常情况下,我使用此方法不会有任何问题: https://docs.microsoft.com/en-us/azure/data-factory/connector-snowflake?tabs=data-factory#staged-copy-to-snowflake

但是现在我遇到了一个问题,源表如下所示: 有两列SLA_Processing_start_timeSLA_Processing_end_time的数据类型为TIME

不知何故,在将数据写入临时区域时,数据被更改为类似0:08:00:00.0000000,0:17:00:00.0000000的内容,从而导致如下错误:

Time '0:08:00:00.0000000' is not recognized File

映射如下所示:

我曾尝试添加类似'HH24:MI:SS.FF'TIME_FORMAT属性,但无济于事。 您对08:00:00为什么变成0:08:00:00.0000000以及如何避免它有什么想法吗?

推荐答案

终于,我能够在我的环境中重新创建您的案例。 我也有同样的错误,前导零提前出现(0:08:00:00.0000000)。 我甚至抓取了它在BlobStorage上创建的文件,而零已经在那里了。 此活动创建不带任何错误处理(双引号、转义字符等)的CSV文本文件。 在Snowflake端,它创建一个临时舞台并加载这些文件。 遗憾的是,它不会自行清理,并在BlobStorage上留下空目录。此外,您不能使用第二代ADLS。:(

ADF中的这个连接器不是很好,我甚至在AWS环境中使用它都有问题,我必须在Azure中设置一个Snowflake帐户。 我尝试了几种解决方法,您似乎有两个选择:

  1. 简单解决方案:

    将两端的数据类型更改为DateTime,然后在Snowflake端转换此属性。如果您无法在源端更改类型,则只需使用";query";选项,并使用CAST/CONVERT函数写入SELECT即可。

  2. 推荐解决方案:

    • 使用复制数据活动在BlobStorage/ADL上插入数据(此活动无论如何都是这样做的),最好是拼图文件格式和自行设计的结构(Best practices for using Azure Data Lake Storage)。
    • 为您的BlobStorage/ADL创建永久雪花阶段。
    • 添加查找活动并将数据从其中的文件加载到表中,您可以使用常规查询或编写存储过程并调用它。

    多亏了这一点,您可以更好地控制正在发生的事情,并为您的组织构建DataLake解决方案。

这篇关于使用Azure Data Factory将数据加载到Snowflake时出现问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆