You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Data Factory Excel管道两大问题求助:空行过滤与空值转换

问题1:跳过Lookup返回的全Null空行

方案1:用Filter活动直接过滤(无需Data Flow)

在Lookup活动和ForEach活动之间添加一个Filter活动:

  • 设置Items为Lookup的输出数组:@activity('Lookup活动名称').output.value
  • 设置Condition为判断当前行是否存在非Null字段,示例表达式:
    @or(not(equals(item().sampleId, null)), not(equals(item().parameterId, null)), not(equals(item().resultText, null)), not(equals(item().resultSymbol, null)), not(equals(item().resultNumber, null)))
    
    该条件会保留至少一个字段不为Null的行,自动过滤全Null的空行。

方案2:用Data Flow过滤(解决Schema为空的问题)

若必须使用Data Flow,先解决Schema无法加载的问题:

  1. 临时将Excel数据集的文件名改为静态测试文件(确保文件包含完整表头和有效数据),此时Data Flow的Input schema会自动加载列信息。
  2. 添加Select活动完成列重命名(若需要),再添加Filter活动,设置过滤条件:
    isNotNull(sampleId) || isNotNull(parameterId) || isNotNull(resultText) || isNotNull(resultSymbol) || isNotNull(resultNumber)
    
  3. 配置完成后,将Excel数据集改回动态参数的文件名即可。

问题2:空字符串转Decimal类型时的报错处理

报错原因是空字符串''无法直接转换为Decimal类型,即使SQL列允许Null,也需要先将空字符串转为Null值。

方法1:修改TabularTranslator映射

在typeConversionSettings中添加convertEmptyStringToNull: true参数,修改后的完整映射如下:

@json(' {   "type": "TabularTranslator",   "mappings": [
{
"source": {
"name": "sampleId"
},
"sink": {
"name": "sample_id",
"physicalType": "int"
}
},
{
"source": {
"name": "parameterId"
},
"sink": {
"name": "parameter_id",
"physicalType": "int"
}
},
{
"source": {
"name": "resultText"
},
"sink": {
"name": "result_text",
"physicalType": "varchar",
"nullValue": "null"
}
},
{
"source": {
"name": "resultSymbol"
},
"sink": {
"name": "result_symbol",
"physicalType": "varchar",
"nullValue": "null"
}
},
{
"source": {
"name": "resultNumber"
},
"sink": {
"name": "result_number",
"physicalType": "decimal",
"nullValue": "null"
}
}   ],   "typeConversion": true,   "typeConversionSettings": {
"allowDataTruncation": true,
"treatBooleanAsNumber": false,
"convertEmptyStringToNull": true   } } ')

该参数会自动将所有空字符串转换为Null值,Decimal类型转换时就不会报错,最终插入SQL的就是Null值。

方法2:Data Flow派生列处理

在Data Flow中添加派生列活动,对resultNumber字段单独处理:

iif(resultNumber == '', null(), resultNumber)

将空字符串强制转为Null后,再复制到SQL表即可。


内容的提问来源于stack exchange,提问作者Deffo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 06:37:04