如何在Synapse管道或数据流中Excel转CSV并添加指定单元格为列
在Synapse数据流/管道中读取Excel特定单元格并新增列到CSV的实现方案
一、数据流直接实现(推荐)
1. 配置两个Excel数据源
- 主数据数据源:选择你原本用来转CSV的Excel工作表,设置好数据范围(比如
Sheet1!A1:Z1000),保留「第一行作为标题」的默认设置,读取完整业务数据。 - 特定单元格数据源:新建另一个Excel数据源,将数据范围指定为
Sheet1!C2:C2,关闭「第一行作为标题」,此时读取到的结果是单行单列,列名默认是Column1,后续可以重命名为outlet_code。
2. 合并单元格值与主数据
方式1:聚合+笛卡尔积连接
- 给特定单元格数据源添加聚合转换:在聚合设置中,对
Column1列使用first()聚合函数,输出别名设为outlet_code,得到仅包含outlet_code常量值的单行数据集。 - 添加笛卡尔积连接(Cross join):将主数据数据流和聚合后的单行数据集连接,无需匹配条件,连接后主数据的每一行都会带上
outlet_code列。
方式2:查找转换
- 给主数据数据流添加查找转换,选择特定单元格数据源作为查找源,设置「匹配选项」为「返回第一个匹配项」,所有主数据行都会匹配到
outlet_code值,将该列添加到主数据流即可。
3. 输出到CSV
配置CSV输出数据集,确保字段映射包含新增的outlet_code列,执行数据流完成转换。
二、管道+数据流结合实现
1. 管道中读取特定单元格值
添加Lookup活动,配置Excel数据源,数据范围设为Sheet1!C2:C2,关闭「第一行作为标题」。Lookup活动输出结果里的firstRow.Column1就是C2单元格的outlet_code值。
2. 将值传递给数据流
- 在数据流中创建一个字符串类型参数(比如
p_outlet_code)。 - 在管道的「执行数据流」活动中,将参数值设置为
@activity('Lookup Outlet Code').output.firstRow.Column1,把单元格值传入数据流。
3. 数据流中新增列
在主数据数据流后添加派生列转换,新增列outlet_code,值设置为参数变量$p_outlet_code,之后输出到CSV即可。
内容的提问来源于stack exchange,提问作者user19504539
相关产品推荐
相关产品推荐

