基于Argument Setter与Wrangler构建Cloud Data Fusion可复用多表转换管道
问题解答
可行性
完全可行,Cloud Data Fusion可以通过参数化配置+分支数据流的方式,实现你要的多表自动化处理逻辑。
单管道实现不同表独立转换的步骤
1. 先做参数化配置
给管道定义几个核心参数,把需要动态传入的信息抽出来:
source_dataset:原始BigQuery数据集名table1_name:表1的名称table2_name:表2的名称curated_dataset:目标Curated数据集名- (可选)
table1_first_name、table1_last_name、table2_dept_name:对应字段名,让字段也能动态配置
2. 用分支节点拆分数据流
在管道里加个Branch节点,把数据流分成两条独立分支,分别处理表1和表2:
表1分支流程:
- 拖入BigQuery源节点,数据源填
${source_dataset}.${table1_name},用参数引用动态获取表 - 加Wrangler节点,写转换规则:
set-column full_name = concat(${table1_first_name}, ' ', ${table1_last_name}),直接拼接两个字段生成full_name - 接BigQuery目标节点,目标表设为
${curated_dataset}.${table1_name}_curated(或者按你的命名规则来)
- 拖入BigQuery源节点,数据源填
表2分支流程:
- 同样拖入BigQuery源节点,数据源填
${source_dataset}.${table2_name} - 加Wrangler节点,转换规则写:
set-column dept_name = upper(${table2_dept_name}),把部门名转成大写 - 接BigQuery目标节点,目标表设为
${curated_dataset}.${table2_name}_curated
- 同样拖入BigQuery源节点,数据源填
3. 自动化触发
触发管道的时候,不管是用API调用还是Cloud Data Fusion的定时调度,把预先准备好的参数值传进去,管道就会自动完成指定表的读取、转换和加载。
Wrangler的支持情况
Wrangler完全能搞定这个需求:
- 支持用
${参数名}的方式引用管道参数,动态替换字段、表名这些变量 - 内置了
concat(拼接)、upper(转大写)这类常用函数,直接就能写转换逻辑 - 不同分支的Wrangler节点可以各自配置独立的规则,互相不影响
内容的提问来源于stack exchange,提问作者user17237211
相关产品推荐
相关产品推荐

