我有一个蔚蓝的数据工厂管道,用于从第三方API提取数据并将数据存储为.json格式的数据。当我单击导入模式时,它显示正确的数据类型格式。
当我将上述数据湖设置为数据流活动的源时,Int64数据类型将转换为布尔值。我已经检查了Microsoft文档,知道该值是0还是1,它会自动转换为布尔值。如何避免这种数据类型转换?
答案 0 :(得分:1)
首先,验证是否已在“源设置”下将“推断漂移列类型”检查为“真”。
如果源列中的值仅为1或0,则数据工厂会将数据类型检测为布尔值。这可能是潜在的错误。
一种解决方法是,由于您正在使用数据流,因此请使用Case语句为列添加导数,并根据布尔值在输出中导出1和0。
答案 1 :(得分:1)
最简单的方法是将所有架构重置为String,这意味着不转换Source数据集中的数据类型。
例如,这是我的源数据集架构和数据,setNum
中的所有值均为1或0:
数据流源投影,首先将setNum的数据类型视为布尔值。
重置架构:所有数据类型均为字符串。
然后,数据工厂将在接收器级别转换数据类型。与从csv文件复制数据类似。
更新:
您可以先将架构重置为字符串。
然后使用Derived Column根据需要更改/转换数据类型。
使用波纹管表达式:
toShort()
toString()
toShort()
这将解决问题。