我有一个azure数据工厂管道,用于从第三方API获取数据,并将数据以.json格式存储到数据湖中。当我单击导入模式时,它会显示正确的数据类型格式。

当我将上面提到的data-lake设置为数据流活动的源时,Int64数据类型转换为boolean。我已经检查了Microsoft文档,知道如果值是0或1,它会自动转换为布尔值。如何避免这种数据类型转换?

发布于 2020-07-20 02:44:08
首先,验证您是否在Source Settings下选中了'Infer First types‘为true。
如果源列中的值仅为1或0,则Data Factory会将数据类型检测为boolean。这可能是一个潜在的bug。
一种方法是,由于您使用的是数据流,因此可以使用Case语句为列添加派生,并根据布尔值在输出中派生1&0。
发布于 2020-07-20 10:58:41
最简单的方法是将all模式重置为String,这意味着不转换Source dataset中的数据类型。
例如,这是我的源数据集架构和数据,setNum中的所有值都是1或0:

数据流来源投影,首先考虑为布尔型的setNum的数据类型。

重置模式:所有数据类型都将是字符串。

然后,数据工厂会将数据类型转换为Sink级。它类似于从csv文件复制数据。
更新:
您可以首先将架构重置为字符串。
然后使用Derived Column根据需要更改/转换数据类型。
使用下面的表达式:
toShort()
toString()
toShort()

这将解决问题。
https://stackoverflow.com/questions/62966722
复制相似问题