【问题标题】:What is the difference between using a COPY DATA activity to a SQL table vs using CREATE EXTERNAL TABLE?对 SQL 表使用 COPY DATA 活动与使用 CREATE EXTERNAL TABLE 有什么区别?
【发布时间】:2019-09-03 06:48:10
【问题描述】:

我有一堆 U-SQL 活动来操作和转换 Azure Data Lake 中的数据。由此,我得到一个包含我所有事件的csv 文件。

接下来我将使用Copy Data 活动将csv 文件从数据湖直接复制到Azure SQL Data Warehouse 表中。

  1. 我从存储在 Data Lake 中的一堆 JSON 文件中提取信息并创建一个暂存的 .csv 文件;
  2. 我获取暂存.csv 文件和生产.csv 文件并注入最新更改(并避免重复)并保存生产.csv 文件;
  3. .csv 生产文件直接复制到仓库表中。

我意识到我的表包含重复的行,并且在测试了U-SQL 脚本之后,我假设Copy Data 活动以某种方式将csv 文件的内容合并到表中。

问题

我不相信我在这里做的是正确的事情。我是否应该将我的仓库表定义为从.csv 生产文件中获取数据的EXTERNAL 表?还是应该更改我的 U-SQL 以仅包含最新更改?

【问题讨论】:

    标签: azure azure-data-factory azure-data-lake u-sql azure-sqldw


    【解决方案1】:

    是否要使用外部表取决于您的用例。如果您希望将数据存储在 SQL DW 中以获得更好的性能,则必须在某个时候复制它,例如通过存储过程。例如,您可以只从 ADF 调用存储过程。

    或者,如果您不想/不能事先过滤掉数据,您还可以在 SQL DW 和 call this 中实现“Upsert”存储过程来插入数据而不是复制活动。

    【讨论】:

    • 是否有理由让我更喜欢使用将数据从 Lake 复制到仓库(使用 Copy 活动)而不是在仓库中创建外部表并引用 Lake 中的数据?我的意思是,一个比另一个更有效吗?
    • 例如,如果您不能(或不想)在 SQL DW 中配置外部表(包括存储存储帐户密钥)或存储过程,则从数据工厂复制一份可能有意义.但是性能方面的 Polybase(外部表)可能更好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-18
    • 2020-12-24
    • 2019-09-07
    • 1970-01-01
    • 1970-01-01
    • 2014-07-25
    • 2012-08-16
    相关资源
    最近更新 更多