Azure 数据工厂副本 activity JSON 数据类型转换问题

Azure Data Factory copy activity JSON data type conversion issue

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

当我将上面提到的数据湖设置为数据流的来源时activity,Int64 数据类型转换为布尔值。我查过微软的文档,知道是0还是1,会自动转boolean。如何避免这种数据类型转换?

首先,确认您是否在“源设置”下将 'Infer drifted column types' 勾选为 true。

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

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

最简单的方法是将所有模式重置为字符串,这意味着不要转换源数据集中的数据类型。

例如,这是我的源数据集模式和数据,setNum中的所有值都是 1 或 0:

Data Flow Source Projection,setNum的数据类型首先考虑为Boolean。

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

然后数据工厂会在Sink级别转换数据类型。从csv文件复制数据类似。

更新:

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

然后使用 Derived Column 来 change/convert 数据类型。

使用下面的表达式:

toShort()
toString()
toShort()

这将解决问题。