接收器不会覆盖指定数据类型的表

问题描述 投票:0回答:1

我的数据流中有一个接收器指向 AzureSQL。有一组曾经是布尔值的列,现在是字符串。我一辈子都无法让 ADF 更改输出表中的数据类型。

我已经尝试过:

  1. 允许接收器块上的架构漂移->接收器菜单
  2. 在 Sink 块 -> 设置菜单中将表操作设置为“重新创建表”
  3. 在 Sink 块 -> 映射菜单中选中“自动映射”
  4. 取消选中“自动映射”并在 Sink 块 -> 映射菜单中重置模式
  5. 在数据流中的接收器之前放置一个 Select 块,然后放置一个 Cast 块
  6. 无奈之下,我尝试删除数据库中的表并强制它重新创建。现在管道执行了,但表没有出现。
  7. 考虑到供应商,我尝试将其关闭然后再次打开。

即使考虑到上述内容,我还在“接收器块”->“映射”菜单的顶部收到此有趣的消息:

至少有一个传入列映射到接收器数据集模式中具有冲突类型的列,这可能会导致 NULL 值或运行时错误。 所以它显然知道存在差异,但在我使用此接收器模式的其他地方,当我在流程中漂移时,ADF 只会转到“新模式,这里开始”。

我做错了什么?

azure-sql-database azure-data-factory
1个回答
0
投票

enter image description here

当接收器数据集模式与传入数据模式不对齐时,会出现上述警告。在这种情况下,源数据类型是字符串,接收器表数据类型是布尔值。

这是数据流运行之前我的接收器表架构。

enter image description here

要根据传入数据更改接收器表数据类型,首先需要清除接收器数据集中的接收器表架构。如果您在此处保留旧架构,即使您从数据流重新创建了表,也只会采用此架构。这也避免了数据流映射中的上述警告。

enter image description here

现在,转到数据流接收器并在接收器设置中启用允许架构漂移重新创建表选项。更改投影中的源数据数据类型或根据您的要求使用之间的任何转换。

enter image description here

现在,运行数据流,它将删除旧表并按预期使用所需架构重新创建新表。

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.