1. 概述编辑
1.1 版本说明
FineDataLink 版本 | 功能变动 |
---|---|
1.7 | 新增一种节点类型:「参数赋值」,可以将取到的数据输出为参数,被下游连线节点使用,不允许跨节点使用 |
2.0 |
|
3.7.1 | 「参数赋值」下游分支所有的节点都可以使用输出的参数(可跨节点使用),但是不可跨分支被其他节点使用,详情请参见本文 功能说明 |
1.2 应用场景
用户希望上游节点运行的结果,能够被下游节点中的 SQL 语句使用。
此时可以通过「参数赋值」节点用参数承载上游节点运行的结果,然后在下游节点中使用该结果。
例如想要将 类别ID=2 的 产品ID 对应的数据同步至目标表,可以使用参数赋值功能,将类别ID=2 的 产品ID 对应的数据查出,然后设置为参数,在下游的数据同步中使该参数,将满足条件的数据同步至数据库中。
1.3 功能说明
参数赋值节点通过数据来源将需要赋值的数据取出,并为参数赋值。
下游节点可以引用赋值的参数。
在数据来源中使用 SQL 语句获取希望向下传递的数据,如下图所示:
将获取到的数据输出为参数,下游节点可以利用公式使用参数值,如下图所示:
注:参数可被同一流程中的所有下游节点应用。
2. 约束限制编辑
参数名和参数值中不允许包含${}
用户设置的参数只归属于当前任务
参数赋值输出的参数,其他节点引用时的写法如下:
值是单个字符串或单个数值:=${a}
值是多个字符串或多个数值:in(${a})
如果来源表为空,那么参数赋值预览后会报错。
3. 操作步骤编辑
示例数据:产品.xls
本文提供如下示例。
FRDemo 数据库中有一张数据表名为「产品」,想要将「类别ID」=2 的「产品ID」对应的「产品」数据同步至 FDLDemo 数据库中目标表。
可以使用参数赋值功能,将类别ID=2 的 产品ID 对应的数据查出,然后设置为参数,在下游的数据同步中使该参数,将满足条件的数据同步至数据库中。
3.1 参数赋值
1)创建一个 ETL 任务,将一个参数赋值节点拖到设计界面,点击该节点进行设置,设置其数据来源,将 类别ID=2 的 产品ID 对应的数据查出,如下图所示:
2)点击数据预览查看取数效果,已经取出满足条件的「产品ID」如下图所示:
3)将取出的产品ID输出为参数。
点击「输出参数」,设置参数名为 id_para ,因为取出的「产品ID」字段位于取出数据的第一列,因此选择指定列并将其设置为 1,并且由于取出的「产品ID」有多个数据,由于数据是数值所以用数值型分隔符,如下图所示:
如果想要在任务未运行时也就是任务开发阶段,下游节点用到参数的地方可以提前查看效果,可以给参数赋值节点设置默认值,这里默认值设置为 6,如下图所示:
注:默认值只是为了下游节点提前预览设置的,实际运行时不会用到这个默认值。
设置好后可以用右侧的参数预览查看参数的效果,如下图所示:
注:参数赋值只能生成一条数据,若需要分开输出多条数据,可以使用循环容器。
3.2 使用参数
设置好参数后,即可在下游的数据同步中使该参数,将满足条件的数据同步至数据库中。
1)将一个数据同步节点拖到设计界面,并用线跟上游参数赋值节点连接起来,如下图所示:
2)点击数据同步节点进行编辑,从 FRDemo 数据库中,使用 SQL 语句取出「产品」数据表中满足「参数赋值」中参数条件的所有数据,也就是取出满足类别ID=2 的 产品ID 对应的所有数据,如下图所示:
注:跟自定义参数不同,参数赋值节点的参数引用时,不需要加单引号。
3)点击「数据预览」,由于「参数赋值」节点中写了一个默认值 6,因此可以预览查看到产品ID为6的数据,如下图所示:
4)设置数据去向,将满足条件的数据同步至 FDLDemo 数据库里的「fdldemo_CSFZ」表中,如下图所示:
3.3 运行任务
保存并运行节点,如下图所示:
可以看到 FDLDemo 数据库里的「fdldemo_CSFZ」表同步了满足 类别ID=2 的数据,如下图所示:
4. 注意事项编辑
4.1 允许定义相同行列值参数
定义参数时,允许参数的行列值相同,但是出现这样的参数时,会给出提醒:参数的行列值存在重复值,如下图所示:
4.2 功能变动
3.7.1 之前版本
将取到的数据输出为参数,被下游连线节点使用。
如上图所示,「参数赋值1」输出的参数只能被「数据同步2」节点使用。
3.7.1 及之后版本
1)「参数赋值」下游分支所有的节点都可以使用输出的参数,但是不可跨分支被其他节点使用。
如上图所示,「参数赋值1」输出的参数可被「数据同步2」、「数据转换1」使用,但是不可被其他节点使用。
2)「参数赋值」节点执行后输出的参数值,在下次执行之前都是固定的,即传递给下游节点的参数值均为固定的,不会受下游步骤影响。
可以看到数据库中多了一张表: