【问题标题】:Copy Data from Blob to SQL via Azure data factory通过 Azure 数据工厂将数据从 Blob 复制到 SQL
【发布时间】:2020-06-10 10:31:36
【问题描述】:

我在 blob 中有两个示例文件,分别为 sample1.csv 和 sample2.csv,如下所示

data sample

SQL表名sample2,含列Name、id、last name、amount

创建了一个没有架构的 ADF 流,结果如下

preview data

源设置允许检查架构漂移。 接收器设置已打开自动映射。允许插入检查。表操作无。

我也试过在数据集中设置一个定义模式,结果是一样的。

这里有什么帮助吗?

我的预期结果是 sample1 中的数据将在“姓氏”列中插入 null

【问题讨论】:

  • 你好 Awo Ningan,如果我的回答对你有帮助,你能接受它作为答案吗(点击答案旁边的复选标记将它从灰色切换到填充。)?这对其他社区成员可能是有益的。谢谢。

标签: blob azure-data-factory dataflow azure-data-flow azure-data-factory-pipeline


【解决方案1】:

如果我理解正确,您说:“我的预期结果是 sample1 中的数据将插入 null 到 last name 列中”,您只需在 sample1.csv 文件中添加一个 derived column

你可以按照我的步骤来:

  1. 我在 Blob 存储中创建了一个 sample1.csv 文件,并在我的 SQL 数据库中创建了一个 sample2 表:

  2. 使用 DerivedColumn 创建具有 null 值的新列 last name

表达式:toString(null())

  1. 接收器设置:

  2. 运行管道并检查表中的数据:

希望这会有所帮助。

【讨论】:

  • thz Leon,这仅在源来自单个文件时才有效,如果源包含两个文件,这将失败,因为我在 blob 容器中有多个文件。
  • @AwoNingan 我们不能将具有不同架构的多个文件复制到一个 Sink 表中。源架构必须与接收器具有相同的架构。
  • @AwoNingan 即使在数据流中,我们也只能使用 Join active 从两个源数据集中获取数据/模式,然后创建新的 DerivedColumn 来更改模式和数据。
  • thz,这意味着我需要根据架构差异将源与分开。
  • @AwoNingan 是的。如果我的回答对您有帮助,请您接受它作为答案吗(单击答案旁边的复选标记将其从灰色切换为已填充。)。这对其他社区成员可能是有益的。谢谢。
【解决方案2】:

您不能在同一数据流执行中混合同一源中的模式。

Schema Drift 将在每次执行的基础上处理对模式的更改。

但是如果你从一个文件夹中读取多个不同的模式,你会得到不确定的结果。

相反,如果您在管道 ForEach 中逐个循环遍历这些文件,数据流将能够处理不断演变的架构。

【讨论】:

  • 谢谢,即使我已经修复了源中的架构,有 4 列,它仍然无法正常工作。似乎它是根据列顺序而不是列名映射数据。我关闭了列漂移和自动映射,结果相同
  • 清除源码中的schema,这里不要使用set schema
  • 我做了,它返回相同的结果,无论我在源中有一个修复模式还是将其留空。有什么想法吗?
猜你喜欢
  • 2019-04-20
  • 2019-01-23
  • 2021-07-03
  • 2021-10-13
  • 2016-10-02
  • 1970-01-01
  • 2015-07-24
  • 2021-08-26
  • 2018-09-20
相关资源
最近更新 更多