Azure data factory 从映射数据流读取时,JSON中的十进制数被截断
当使用映射数据流从JSON数据文件中读取十进制数时,十进制数字将被截断Azure data factory 从映射数据流读取时,JSON中的十进制数被截断,azure-data-factory,Azure Data Factory,当使用映射数据流从JSON数据文件中读取十进制数时,十进制数字将被截断 [Source data] { "value": 1123456789.12345678912345678912 } [Output] 1123456789.12345670000000000000 在数据工厂中,源数据集未配置任何架构。映射数据流投影定义了具有足够精度和比例的十进制数据类型 [Mapping Data Flow script] source(output(
[Source data]
{
"value": 1123456789.12345678912345678912
}
[Output]
1123456789.12345670000000000000
在数据工厂中,源数据集未配置任何架构。映射数据流投影定义了具有足够精度和比例的十进制数据类型
[Mapping Data Flow script]
source(output(
value as decimal(35,20)
),
...
但是,在“数据预览”窗口中查看值或查看管道输出时,该值会被截断
[Source data]
{
"value": 1123456789.12345678912345678912
}
[Output]
1123456789.12345670000000000000
其他文件格式(如分隔文本)不会出现此问题
预览源数据集中的数据时,十进制数字将以相同的方式截断。无论是否设置架构,都会发生这种情况。如果设置了模式,则数据类型是number
而不是decimal,因为它是JSON。调用浏览器支持的不同数量的十进制数字,因此我想知道这是否取决于所使用的JSON解析器
这是预期的行为吗?在使用JSON时,Data Factory是否可以配置为支持小数点后的整数?不幸的是,这让人怀疑在Data Factory中执行聚合计算是否可行。我创建了一个与您相同的测试,得到了如下相同的结果: 更改源数据后,我在值上加了双引号:
然后我使用
toDecimal(Value,35,20)
将字符串类型转换为十进制类型:
看起来效果不错。因此我们可以得出结论:
- 不要让ADF进行默认数据类型转换,它将截断值的长度
- 其他文件格式(如分隔文本)不会出现此问题。因为默认值是字符串类型