如何使用Azure Data Factory删除ADLS存储Excel文件中的指定行
ADF 处理固定头尾Excel文件的表达式实现方案
首先需要明确:仅靠派生列/选择组件无法直接完成行过滤需求,需要先通过窗口函数附加行号、总行数两个辅助字段,再按规则过滤,具体实现逻辑如下:
前置配置
读取ADLS中的Excel文件时,先调整源组件的两个配置:
- 关闭
首行作为表头开关,避免前4行头信息被识别为列名丢失 - 关闭
跳过无数据行开关,保证末尾2个空行被正常读取,行号计数准确
步骤1:派生列生成辅助字段
在派生列组件中添加两个新列,窗口规则均设置为未分区,行排序规则任选一个已有的列保证和Excel原有行序一致即可:
- 行号列(命名为
row_num)的表达式:rowNumber() - 总行数列(命名为
total_rows)的表达式:count(1) over()
步骤2:过滤目标行
你可以选择两种方式过滤掉头尾不需要的行:
- 直接使用Filter组件,过滤条件表达式为:
row_num > 4 && row_num < total_rows - 2 - 若需要在派生列中先标记保留行,可新增标记列
is_keep,表达式为:iif(row_num > 4 && row_num < total_rows - 2, 1, 0),后续筛选is_keep == 1的行即可
注意:选择组件仅支持列的映射、重命名操作,不支持行级过滤,因此行筛选逻辑需要通过Filter组件或者标记列+筛选的方式实现。
内容的提问来源于stack exchange,提问作者Michelle Santos
相关产品推荐
相关产品推荐

