# 数据库查询组件使用说明
# 组件说明
该组件用于在数据库表中查找值,查询出的字段值传递到下游组件。
# 配置项说明
配置名称 | 数据类型 | 是否必须 | 默认值 | 描述 |
---|---|---|---|---|
节点名称 | String | 是 | - | 当前创建的节点名称,由用户自定义且不可为空。命名可包含字母、数字、下划线。 |
选择数据源 | String | 是 | - | 指定数据源。 |
选择库 | String | 是 | - | 下拉列表值为数据库schema值,当schema值为空时,下拉值为当前建立连接所用数据库名。 |
选择表 | String | 是 | - | 指定转换操作表名称。 |
全局缓存 | Boolean | 否 | false | 缓存行数,针对含有数据库查询组件的作业均生效。 |
局部缓存 | Boolean | 否 | false | 缓存行数,只针对当前运行的作业生效。 |
从表中加载所有数据 | Boolean | 否 | false | 当选择全局缓存或局部缓存时,可选择从表中加载所有数据,一次性把表中数据加载到缓存中。 |
缓存大小 | Integer | 否 | 0 | 当选择全局缓存或局部缓存时,可配置缓存大小(行数)。与从表中加载所有数据互斥。 |
查询所需的关键字段 | - | 是 | - | 目标字段:表中字段。比较符:表中字段数据与流中数据比较条件。来源字段1:当比较符不为IS NULL/IS NOT NULL时,此值不能为空,该字段值为前置步骤输出流中值。来源字段2:当比较符为BETWEEN时,此值不能为空,该字段值为前置步骤输出流中值。 |
查询表返回的值 | - | 是 | - | 字段:表中字段。新的名称:默认与表中字段一致,也可以修改。默认值:当字段值为空时,返回默认值。类型:表字段的类型。 |
获取多条结果 | Boolean | 否 | false | 返回根据条件查询出的多条结果。 |
多行结果时失败 | Boolean | 否 | false | 启用此选项可在查找返回多个结果时强制该步骤失败。 |
查询失败则忽略 | Boolean | 否 | false | 如果查找失败,则不传递该行。 |
排序 | String | 否 | - | 如果查找查询返回多个结果,ORDER BY子句将帮助您选择要获取的记录。 |
# FAQ
Q1: 关系型数据库输入和数据库查询有什么区别?
A1:
特性 | 表输入 (Table Input) | 数据库查询 (Database Lookup) |
---|---|---|
主要用途 | 从数据库中读取原始数据(单表或简单JOIN) | 根据输入流的字段值,动态查询其他表的数据(类似JOIN) |
数据流向 | 作为数据流的起点,直接读取数据库表或SQL结果 | 在数据流中补充关联数据(需已有输入流) |
查询触发方式 | 一次性执行SQL,读取全部结果 | 对输入流的每一行数据触发查询(逐行匹配) |
性能 | 适合批量读取大数据量(高效) | 数据量大时性能较低(需逐行查询) |
参数传递 | 支持变量替换(如 ${DATE}) | 支持将输入流的字段值作为查询参数 |
典型场景 | 提取主表数据 | 关联维度表、代码表(如通过ID查名称) |
Q2: 数据库查询都有哪些使用场景?
A2: 下面列出一些常见使用场景,以供参考:
- 数据补全
场景:需要从另一个表中获取附加信息来丰富当前数据。
示例:
订单数据流中仅有 customer_id,需从客户表中查询对应的 customer_name 和 address。
使用数据库查询组件,根据 customer_id 匹配客户表,将名称和地址添加到订单数据中。 - 代码转换
场景:将编码转换为可读值(如状态码转状态名称)。
示例:
数据流中的 status_code 字段值为 1/2/3,需转换为 Active/Inactive/Pending。
通过查询数据库中的 status_codes 表,将 status_code 映射为可读文本。 - 数据验证
场景:验证数据是否符合业务规则或参考表的约束。
示例:
检查输入的 product_id 是否存在于产品表中,若不存在则标记为无效记录。
使用数据库查询组件验证 product_id 的有效性,过滤非法数据。 - 跨数据源关联
场景:需要关联不同数据库或数据源的表。
示例:
主数据流来自MySQL的订单表,需关联Oracle数据库中的库存表,检查商品库存量。
通过数据库查询组件跨库查询库存信息,实现数据关联。