GenerateTableFetch 2025.10.2.19¶
バンドル¶
org.apache.nifi | nifi-standard-nar
説明¶
Generates SQL select queries that fetch "pages" of rows from a table. The partition size property, along with the table 's row count, determine the size and number of pages and generated FlowFiles. In addition, incremental fetching can be achieved by setting Maximum-Value Columns, which causes the processor to track the columns' maximum values, thus only fetching rows whose columns 'values exceed the observed maximums. This processor is intended to be run on the Primary Node only. This processor can accept incoming connections; the behavior of the processor is different whether incoming connections are provided: - If no incoming connection(s) are specified, the processor will generate SQL queries on the specified processor schedule. Expression Language is supported for many fields, but no FlowFile attributes are available. However the properties will be evaluated using the Environment/System properties. - If incoming connection(s) are specified and no FlowFile is available to a processor task, no work will be performed. - If incoming connection(s) are specified and a FlowFile is available to a processor task, the FlowFile's attributes may be used in Expression Language for such fields as Table Name and others. However, the Max-Value Columns and Columns to Return fields must be empty or refer to columns that are available in each specified table.
入力要件¶
ALLOWED
機密動的プロパティをサポート¶
false
プロパティ¶
プロパティ |
説明 |
|---|---|
返す列 |
クエリで使用する列名のカンマ区切りリスト。データベースで名前に特別な処理(引用など)が必要な場合は、それぞれの名前にその処理を含める必要があります。列名を指定しなかった場合は、指定したテーブルのすべての列が返されます。NOTE: 増分フェッチが正しく動作するためには、指定したテーブルに対して一貫性のある列名を使用することが重要です。 |
データベース接続プーリングサービス |
データベースへの接続を取得するために使用するController Service。 |
データベース方言サービス |
特定のサービスやベンダーに特化したステートメントを生成するためのデータベース方言サービス。 |
最大待機時間 |
実行中の SQL セレクト・クエリに許容される最大時間。1秒未満の最大時間はゼロに等しくなります。 |
Maximum-value Columns |
A comma-separated list of column names. The processor will keep track of the maximum value for each column that has been returned since the processor started running. Using multiple columns implies an order to the column list, and each column 's values are expected to increase more slowly than the previous columns' values. Thus, using multiple columns implies a hierarchical structure of columns, which is usually used for partitioning tables. This processor can be used to retrieve only those rows that have been added/updated since the last retrieval. Note that some JDBC types such as bit/boolean are not conducive to maintaining maximum value, so columns of these types should not be listed in this property, and will result in error(s) during processing. If no columns are provided, all rows from the table will be considered, which could have a performance impact. NOTE: It is important to use consistent max-value column names for a given table for incremental fetch to work properly. |
テーブル名 |
クエリ対象のデータベース・テーブル名。 |
db-fetch-db-type |
Database Type for generating statements specific to a particular service or vendor. The Generic Type supports most cases but selecting a specific type enables optimal processing or additional features. |
db-fetch-where-clause |
SQL クエリを構築する際に WHERE 条件に追加するカスタム句を追加します。 |
gen-table-column-for-val-partitioning |
値をパーティショニングに使用する列の名前。デフォルトの動作は、オフセット/リミット戦略を使用して、データベースから取得する「ページ」にパーティショニングするために結果セットの行番号を使用することです。しかし、ある種のデータベースでは、列の値そのものを使って「ページ」を定義した方が、適切な状況下では効率的な場合があります。このプロパティは、デフォルト値のクエリがうまく動作していない場合、最大値列がない場合、または、型が長整数に強制できる(つまり、日付やタイムスタンプではない)最大値カラムが1つしかない場合、列の値が均等に分散しており、スパースでない場合にのみ、最高のパフォーマンスを得るために使用されるべきです。 |
gen-table-custom-orderby-column |
Max-Value Columnsが提供されず、パーティショニングが有効になっている場合に、結果の順序付けに使用される列の名前。このプロパティは、Max-Value Columnsがセットされているか、Partition Size = 0の場合は無視されます。NOTE: 最大値列もカスタム ORDER BY 列もセットされていない場合、データベース/ドライバーによっては、プロセッサーがエラーを報告したり、生成された SQL の行が欠落したり重複したりする可能性があります。なぜなら、明示的な順序付けがなければ、各パーティションのフェッチは任意の順序で行われるからです。 |
gen-table-fetch-partition-size |
生成された各ステートメント SQL によってフェッチされる結果行の数。テーブルの総行数をパーティションサイズで割ったものが、生成された SQL ステートメントの数 (つまり FlowFiles) になります。値ゼロは、 SQL ステートメントがテーブルのすべての行をフェッチする単一の FlowFile が生成されることを示します。 |
gen-table-output-flowfile-on-zero-results |
指定された依存関係によっては、このプロセッサーを実行しても、 SQL ステートメントが生成されないことがあります。このプロパティが true の場合、空の FlowFile が生成され(存在する場合、入ってくる FlowFile の親を持つ)、'success' リレーションシップに転送されます。このプロパティが False の場合、出力 FlowFiles は生成されません。 |
状態管理¶
スコープ |
説明 |
|---|---|
CLUSTER |
指定したテーブルに対してクエリを実行した後、指定した列の最大値は、次回以降のクエリ実行時に使用できるように保持されます。これにより、プロセッサーは最大値が保持値より大きい記録のみをフェッチすることができます。これは、増分フェッチや新しく追加された行のフェッチなどに使用できます。最大値をクリアするには、ステート管理のドキュメントに従ってプロセッサーのステートをクリアします。 |
リレーションシップ¶
名前 |
説明 |
|---|---|
failure |
このリレーションシップは、 SQL クエリ実行(着信 FlowFile を使用)が失敗した場合にのみ使用されます。着信 FlowFile は、ペナルティが課せられ、このリレーションシップにルーティングされます。着信接続が指定されていない場合、この関係は使用されません。 |
success |
SQL クエリ結果セットから FlowFile の作成に成功しました。 |
属性の書き込み¶
名前 |
説明 |
|---|---|
generatetablefetch.sql.error |
プロセッサーに着信接続があり、着信 FlowFile を処理すると SQL 例外が発生する場合、 FlowFile は失敗にルーティングされ、この属性が例外メッセージにセットされます。 |
generatetablefetch.tableName |
クエリ対象のデータベース・テーブル名。 |
generatetablefetch.columnNames |
クエリで使用される列名のカンマ区切りリスト。 |
generatetablefetch.whereClause |
期待される行を取得するためにクエリで使用されるWhere句。 |
generateetablefetch.maxColumnNames |
カンマで区切られた列名のリストで、プロセッサーの実行開始以降に返されたデータの追跡に使用されます。 |
generatetablefetch.limit |
SQL ステートメントによってフェッチされる結果行の数。 |
generatetablefetch.offset |
対応するパーティションを取得するために使用するオフセット。 |
フラグメント識別子 |
同じクエリ結果セットから生成されたすべての FlowFiles は、fragment.identifier 属性の値が同じになります。そして、この結果を相関させるために使用することができます。 |
フラグメント.数 |
これは、1つの ResultSet によって生み出される FlowFiles の総数。この属性は、fragment.identifier属性と併用することで、同じ受信 ResultSet に属する FlowFiles の数を知ることができます。 |
フラグメント.インデックス |
同じ実行から生成されたすべての発信リスト (FlowFiles) における、この FlowFile の位置。fragment.identifier属性と組み合わせて使用することで、どの FlowFiles が同じ実行に由来し、 FlowFiles がどのような順序で生成されたかを知ることができます。 |