Microsoft Fabric中Data Factory映射数据截断警告及Float类型兼容问题
问题分析与解决方案:Fabric Data Factory数据类型不兼容错误
核心问题原因
1. 源数据类型推断偏差
虽然你处理的是*.txt.gz文本压缩文件,但Data Factory自动推断列类型时,如果PACKAGE_SIZE列存在非标准浮点格式(比如带千分位逗号、N/A这类非数值内容),会把该列识别为字符串类型(对应报错里的Parquet物理类型BYTE_ARRAY、逻辑类型UTF8)。此时目标设为FLOAT,自然会触发类型不兼容错误。同理,日期列如果格式不标准(比如MM/DD/YYYY而非ISO格式),也会被推断为字符串,无法直接映射到Datetime2。
2. 文件格式配置未明确指定
如果复制活动的源数据集未明确设置为Delimited Text格式,且未指定压缩类型为Gzip,Data Factory可能误判文件格式(比如容器内有其他Parquet文件时),用Parquet的解析逻辑处理文本数据,导致所有列被识别为字符串类型,和目标的数值、日期类型不匹配。
3. 隐式转换的限制
Fabric数据仓库确实支持FLOAT和Datetime2,但Data Factory复制活动的默认规则是:源和目标类型必须严格匹配,或者开启自动转换配置。如果源被推断为字符串,默认不会自动转成浮点或日期类型,必须显式配置转换规则。
排查与解决步骤
- 明确源文件格式配置:在复制活动的源数据集里,手动设置文件类型为
Delimited Text,压缩类型选Gzip,同时指定正确的列分隔符、是否包含标题行,避免系统自动推断出错。 - 手动指定源列类型:在映射页面,不要依赖自动映射,手动给源列设置对应类型——比如
PACKAGE_SIZE设为Float,日期列设为Datetime并匹配源数据的格式(比如MM/dd/yyyy HH:mm:ss)。 - 检查源数据质量:抽样解压查看
*.txt.gz文件,确认PACKAGE_SIZE是否有非数值内容、日期列格式是否统一。如果有异常值,先用数据流活动做清洗(比如过滤替换异常值),再复制到数据仓库。 - 开启自动类型转换(可选):在复制活动的设置页面,找到“自动类型转换”开关并开启,允许系统尝试自动转换类型,但要注意测试验证,避免精度损失或转换错误。
内容的提问来源于stack exchange,提问作者SRP
相关产品推荐
相关产品推荐

