代码之家  ›  专栏  ›  技术社区  ›  redwolf_cr7

Azure数据工厂:当源(Blob-csv)和目标(SQL DB)是海量数据集(不同的数据类型~370列,~700行)时,如何使用Exists

  •  0
  • redwolf_cr7  · 技术社区  · 1 年前

    我在Azure数据工厂中有一个场景,我需要将Blob存储中的每日CSV文件与SQL数据库中的表进行比较。目标是仅在表中不存在行的情况下,才将行从CSV复制到SQL表。

    问题详细信息:

    • 数据量:CSV文件和SQL表都是巨大的,大约有370列和700万行。
    • 数据类型:数据集包括各种数据类型,如字符串、双精度和时间戳。

    尝试的方法:

    遇到的问题:

    • 数据类型不匹配:在我的数据流中创建源时,CSV中的数据类型通常与SQL表中的数据种类不匹配。
    • 不正确的匹配:由于数据类型不匹配,数据流中的派生列不正确匹配,导致CSV中的所有行都被视为不匹配。

    问题:

    • 数据类型处理:如何确保数据流中的数据类型与SQL表中的数据匹配,以防止不匹配?
    • 大型数据集的优化:ADF中是否有最佳实践或优化可以在比较过程中更有效地处理此类大型数据集?

    任何建议或替代方法都将不胜感激。

    以下是我的数据流快照:

    dataflow snapshot

    0 回复  |  直到 1 年前
        1
  •  1
  •   Rakesh Govindula    1 年前

    当您从源数据集和汇点数据集导入模式时,它会比较导入的数据类型。

    我尝试过在不从源和汇数据集导入任何模式的情况下,它对给定的场景有效。

    从源数据集和汇点数据集中清除架构 .

    enter image description here

    这是目标表中已存在某些行的示例源数据。

    ID,Name,mytime,Amount,Fahrenheit,age,role,mydate
    8,Laddu,2024-04-26 11:45:00,12.24,95.04,24,Pirate,02-16-00
    9,MS,2024-04-27 12:00:00,24.267,10.10,26,No job,05-30-24
    10,ABD,2024-04-26 11:45:00,12.24,95.04,24,Pirate,02-16-00
    11,Starc,2024-04-26 11:45:00,12.24,95.04,24,Pirate,02-16-00
    12,KP,2024-04-26 11:45:00,12.24,95.04,24,Pirate,2024-05-30
    13,Rabada,2024-04-26 11:45:00,12.24,95.04,24,Bowler,2023-06-29
    7,Rakesh,2024-04-25 10:30:00,123.451,97.16,23,Engineer,2021-12-16
    

    在两个数据流源中,将投影设置为空。

    enter image description here

    数据流调试不会识别这些列。所以,使用 byName(<column_name>) 当使用派生列中的列时。

    在这里,对于 存在 转换列,我创建了额外的列 Id_temp 这两个来源如下。

    enter image description here

    然后,在现有的转换中使用这些新列。

    enter image description here

    接下来,使用基于选择转换的映射来删除多余的列。

    enter image description here

    将接收器添加到其中,并从管道执行数据流。

    它将给出如下预期结果。

    enter image description here

    推荐文章