Azure数据工厂复制活动JSON数据类型转换问题

时间:2020-07-18 09:10:20

标签: json azure azure-data-factory azure-data-lake azure-data-factory-2

我有一个蔚蓝的数据工厂管道,用于从第三方API提取数据并将数据存储为.json格式的数据。当我单击导入模式时,它显示正确的数据类型格式。 enter image description here

当我将上述数据湖设置为数据流活动的源时,Int64数据类型将转换为布尔值。我已经检查了Microsoft文档,知道该值是0还是1,它会自动转换为布尔值。如何避免这种数据类型转换?

enter image description here

2 个答案:

答案 0 :(得分:1)

首先,验证是否已在“源设置”下将“推断漂移列类型”检查为“真”。

如果源列中的值仅为1或0,则数据工厂会将数据类型检测为布尔值。这可能是潜在的错误。

一种解决方法是,由于您正在使用数据流,因此请使用Case语句为列添加导数,并根据布尔值在输出中导出1和0。

答案 1 :(得分:1)

最简单的方法是将所有架构重置为String,这意味着不转换Source数据集中的数据类型。

例如,这是我的源数据集架构和数据,setNum中的所有值均为1或0: enter image description here

数据流源投影,首先将setNum的数据类型视为布尔值。

enter image description here

重置架构:所有数据类型均为字符串。

enter image description here

然后,数据工厂将在接收器级别转换数据类型。与从csv文件复制数据类似。

更新:

您可以先将架构重置为字符串。

然后使用Derived Column根据需要更改/转换数据类型。

使用波纹管表达式:

toShort()
toString()
toShort()

enter image description here

这将解决问题。