GenerateTableFetch
描述:
生成从表中获取“页”的SQL查询。分区大小属性以及表的行数确定页面的大小和数量以及生成的FlowFiles。此外,可以通过设置最大值列来实现增量提取,这会使组件跟踪列的最大值,从而仅获取列的值超过最大值的行。此组件仅用于在主节点上运行。
此组件可以接受传入连接;组件的行为依据是否提供传入连接而不同\uff1a 如果未指定传入连接,则组件将根据指定的组将计划生成SQL查询。许多字段支持表达式语言,但没有可用的流文件属性。但是,可以使用变量注册表匹配属性。 如果指定了传入连接且没有可用于组件任务的流文件,则不会执行任何工作。 如果指定了传入连接并且流文件可用于处组将任务,流文件的属性可以在表达式语言中用于诸如表名等字段。但是,Max-Value Columns和Columns to Return字段必须为空或引用每个指定表中可用的列。
标签:
sql, select, jdbc, query, database, fetch, generate
参数:
如下列表中,必填参数则标识为加粗. 其他未加粗参数,则表示为可选参数。表中同时提到参数默认值设置, 并且 参数还支持 表达式语言.
名字 | 默认值 | 允许值列表 | 描述 |
---|---|---|---|
数据库连接池 | 控制器服务API: DBCPService 实现: DBCPConnectionPoolLookup DBCPConnectionPool | 用于获取与数据库连接池的服务 | |
数据库类型 | 通用 | - 通用 - Oracle - Oracle 12+ - MS SQL 2012+ - MS SQL 2008 - MySQL | 数据库的类型/风格,用于生成特定数据库的代码。 在许多情况下,"通用"类型应该足够,但是某些数据库(例如Oracle)需要自定义SQL子句。 |
表 | 要查询的数据库表的名称。 支持表达式语言 (支持流属性和变量) | ||
返回列名 | 查询中使用的以逗号分隔的列名列表。 如果您的数据库需要对名称进行特殊处理(例如引用),则每个名称都应包含此类处理。 如果未提供列名,则将返回指定表中的所有列。 注意:对于给定的表使用一致的列名称以使增量提取正常工作非常重要。 支持表达式语言 (支持流属性和变量) | ||
最大值列 | 以逗号分隔的列名列表。 组件将跟踪自组件开始运行以来返回的每列的最大值。 使用多列意味着列表的顺序,并且预期每列的值比前一列的值增加得更慢。 因此,使用多列意味着列的分层结构,通常用于分区表。 此组件可用于仅检索自上次检索以来已添加/更新的那些行。 请注意,某些JDBC类型(如bit / boolean)不利于维护最大值,因此不应在此属性中列出这些类型的列,并且在处理期间将导致错误。 如果未提供列,则将考虑表中的所有行,这可能会对性能产生影响。 注意:为给定表使用一致的最大值列名称以使增量提取正常工作。 支持表达式语言 (支持流属性和变量) | ||
等待时长 | 0 seconds | 运行SQL SELECT查询允许的最长时间,零表示没有限制。 小于1秒的最大时间将等于零。 支持表达式语言 (支持流属性和变量) | |
分区大小 | 10000 | 每个SQL语句结果中要提取的行数。 表中的总行数除以分区大小,得出生成的SQL语句(即数据流)的数量。 值为零表示将生成单个数据流,其SQL语句将获取表中的所有行。 支持表达式语言 (支持流属性和变量) | |
分区列 | 指定列名,该列名相应的值将用于分区。 The default behavior is to use row numbers on the result set for partitioning into 'pages' to be fetched from the database, using an offset/limit strategy. However for certain databases, it can be more efficient under the right circumstances to use the column values themselves to define the 'pages'. This property should only be used when the default queries are not performing well, when there is no maximum-value column or a single maximum-value column whose type can be coerced to a long integer (i.e. not date or timestamp), and the column values are evenly distributed and not sparse, for best performance. 支持表达式语言 (支持流属性和变量) | ||
额外WHERE条件 | 添加额外的where查询条件 支持表达式语言 (支持流属性和变量) |
动态参数:
名字 | 值 | 描述 |
---|---|---|
initial.maxvalue.<max_value_column> | Initial maximum value for the specified column | Specifies an initial max value for max value columns. Properties should be added in the format initial.maxvalue.<max_value_column> . This value is only used the first time the table is accessed (when a Maximum Value Column is specified). In the case of incoming connections, the value is only used the first time for each table specified in the flow files.支持表达式语言 (支持流属性和变量) |
连线:
名字 | 描述 |
---|---|
success | 从SQL查询结果集成功创建数据流后,输出到此连线。 |
failure | 仅当SQL查询执行(使用传入的数据流)失败时使用此连线。 传入的数据流将受到处罚并被路由到此连线。 如果未指定传入连接,则不使用此连线。 |
读取属性:
未提供。
写入属性:
名字 | 描述 |
---|---|
generatetablefetch.sql.error | 如果组件具有传入连接,并且处理传入流文件导致SQL异常,则流文件将路由到失败,并且此属性将设置为异常消息。 |
generatetablefetch.tableName | 要查询的数据库表的名称。 |
generatetablefetch.columnNames | 查询中使用的以逗号分隔的列名列表。 |
generatetablefetch.whereClause | 在查询中使用Where子句来获取预期结果。 |
generatetablefetch.maxColumnNames | 逗号分隔的列名列表,用于跟踪自组件开始运行以来已返回的数据。 |
generatetablefetch.limit | SQL语句要提取的结果行数。 |
generatetablefetch.offset | 用于检索相应分区的偏移量 |
状态管理:
范围 | 描述 |
---|---|
CLUSTER | 在对指定的表执行查询后,将保留指定列的最大值,以便在将来执行查询时使用。 这允许组件仅获取最大值大于保留值的记录。 这可以用于增量提取,提取新添加的行等。要清除最大值,请根据状态管理文档清除处理器的状态 |
限制:
该组件没有限制
输入流要求:
组件允许提供输入流。
系统资源考量:
未提供。