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()
这将解决问题。
我有一个 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()
这将解决问题。