QueryDatabaseTable 2025.10.2.19¶
バンドル¶
org.apache.nifi | nifi-standard-nar
説明¶
SQL select クエリを生成するか、提供されたステートメントを使用し、それを実行して、指定された Maximum Value 列の値が以前に見た最大値よりも大きいすべての行を取得します。クエリ結果はAvro形式に変換されます。式言語はいくつかのプロパティでサポートされていますが、着信接続は許可されていません。Environment/System プロパティは、式言語を含むすべてのプロパティに値を提供するために使用できます。フローファイルの属性を活用してクエリを実行したい場合は、 GenerateTableFetch および/または ExecuteSQL プロセッサーを使用できます。ストリーミングを使用しているため、任意の大きさの結果セットがサポートされます。このプロセッサーは、標準的なスケジューリング方法を使用して、タイマー式またはcron式で実行するようにスケジュールすることができます。このプロセッサーはプライマリ・ノードでのみ実行されます。FlowFile 属性 'querydbtable.row.count' は、選択された行の数を示します。
入力要件¶
FORBIDDEN
機密動的プロパティをサポート¶
false
プロパティ¶
プロパティ |
説明 |
|---|---|
返す列 |
クエリで使用する列名のカンマ区切りリスト。データベースで名前に特別な処理(引用など)が必要な場合は、それぞれの名前にその処理を含める必要があります。列名を指定しなかった場合は、指定したテーブルのすべての列が返されます。NOTE: 増分フェッチが正しく動作するためには、指定したテーブルに対して一貫性のある列名を使用することが重要です。 |
データベース接続プーリングサービス |
データベースへの接続を取得するために使用するController Service。 |
データベース方言サービス |
特定のサービスやベンダーに特化したステートメントを生成するためのデータベース方言サービス。 |
フェッチサイズ |
結果セットから一度に取得する結果行の数。これはデータベースドライバーへのヒントであり、正確でない場合があります。指定された値が0の場合、ヒントは無視されます。PostgreSQL を使用する場合、 'Fetch Size' を有効にするには 'Set Auto Commit' を 'false' にする必要があります。 |
最大待機時間 |
実行中の 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. |
自動コミットのセット |
Allows enabling or disabling the auto commit functionality of the DB connection. Default value is 'No value set'. 'No value set' will leave the db connection 's auto commit mode unchanged. For some JDBC drivers such as PostgreSQL driver, it is required to disable the auto commit functionality to get the'Fetch Size 'setting to take effect. When auto commit is enabled, PostgreSQL driver ignores'Fetch Size'setting and loads all rows of the result set to memory at once. This could lead for a large amount of memory usage when executing queries which fetch large data sets. More Details of this behaviour in PostgreSQL driver can be found in https://jdbc.postgresql.org//documentation/head/query.html. |
テーブル名 |
クエリ対象のデータベース・テーブル名。カスタムクエリが使用される場合、このプロパティはクエリのエイリアスとして使用され、 FlowFile の属性として表示されます。 |
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-sql-query |
データを取得するために使用されるカスタム SQL クエリ。他のプロパティから SQL クエリを構築する代わりに、このクエリはサブクエリとしてラップされます。クエリには、 ORDER BY ステートメントがあってはなりません。 |
db-fetch-where-clause |
SQL クエリを構築する際に WHERE 条件に追加するカスタム句を追加します。 |
dbf-default-precision |
DECIMAL/NUMBER の値が'10進数'Avro論理タイプとして記述される場合、利用可能な桁数を示す特定の'精度'が要求されます。一般的に、精度は列のデータ型の定義やデータベースエンジンのデフォルトによって定義されます。しかし、データベースエンジンによっては未定義の精度(0)が返されることがあります。デフォルトの10進数」は、未定義の精度の数値を書き込むときに使用されます。 |
dbf-default-scale |
DECIMAL/NUMBER の値が'10進数'Avro論理タイプとして記述される場合、利用可能な10進数の桁数を示す特定の'スケール'が必要となります。一般的に、スケールは列のデータ型定義やデータベースエンジンのデフォルトで定義されます。しかし、未定義の精度(0)が返された場合、データベースエンジンによってはスケールが不確定になることもあります。「デフォルトの10進数」は、未定義の数値を書くときに使われます。もし数値が指定のスケールよりも小数点を持つなら、値は切り上げられます。例えば、1.53はスケール0では2になり、スケール1では1.5になります。 |
dbf-normalize |
列名の非Avro互換文字をAvro互換文字に変更するかどうか。例えば、有効なAvro記録を作成するために、コロンや期間はアンダースコアに変更されます。 |
dbf-user-logical-types |
DECIMAL/NUMBER, DATE, TIME と TIMESTAMP 列にAvro論理タイプを使用するかどうか。無効の場合は文字列で記述。有効にすると、論理タイプが使用され、その基になるタイプとして記述されます。具体的には、 DECIMAL/NUMBER は論理 'decimal' として使用されます。: 追加の精度とスケールメタデータを持つバイトとして記述され、 DATE は論理 'date-millis' として: Unixのエポック(1970-01-01)からの日数を示すintとして記述され、 TIME は論理 'time-millis' として: Unixのエポックからのミリ秒を示すintとして記述され、 TIMESTAMP は論理 'timestamp-millis' として: Unixのエポックからのミリ秒を示すlongとして記述されます。書き込まれたAvro記録のリーダーもこれらの論理タイプを知っている場合、リーダーの実装によっては、これらの値をより多くのコンテキストでデシリアライズすることができます。 |
initial-load-strategy |
プロセッサーの初回起動時(またはその状態がクリアされた時)のデータベーステーブルの既存の行の処理方法。このプロパティは、 'initial.maxvalue.*' 動的プロパティも構成されている場合、無視されます。 |
qdbt-max-frags |
フラグメントの最大数。指定した値がゼロの場合は、すべてのフラグメントが返されます。これにより、このプロセッサーが巨大なテーブルをインジェストする際の OutOfMemoryError を防ぎます。NOTE: このプロパティを設定すると、入力される結果は順序付けされず、結果セットに行が含まれない任意の境界でフラグメントが終了する可能性があるため、データが失われる可能性があります。 |
qdbt-max-rows |
1つの FlowFile に含まれる結果行の最大数。これにより、非常に大きな結果セットを複数の FlowFiles に分割することができます。指定された値がゼロの場合、すべての行が単一の FlowFile で返されます。 |
qdbt-output-batch-size |
プロセスセッションをコミットする前にキューに入れる出力 FlowFiles の数。ゼロに設定すると、すべての結果セット行が処理され、出力 FlowFiles が下流のリレーションシップに転送できる状態になったときにセッションがコミットされます。大容量の結果セットの場合、プロセッサーの実行終了時に転送されるべき FlowFiles の大きなバーストを引き起こす場合があります。このプロパティがセットされている場合、指定された数の FlowFiles が転送可能な状態になると、セッションがコミットされ、 FlowFiles がダウンストリームリレーションシップにリリースされます。NOTE: このプロパティがセットされている場合、 maxvalue.* とfragment.count属性は FlowFiles に設定されません。 |
transaction-isolation-level |
この設定は、この設定をサポートするドライバーのデータベース接続のトランザクション分離レベルをセットします。 |
状態管理¶
スコープ |
説明 |
|---|---|
CLUSTER |
指定したテーブルに対してクエリを実行した後、指定した列の最大値は、次回以降のクエリ実行時に使用できるように保持されます。これにより、プロセッサーは最大値が保持値より大きい記録のみをフェッチすることができます。これは、増分フェッチや新しく追加された行のフェッチなどに使用できます。最大値をクリアするには、ステート管理のドキュメントに従ってプロセッサーのステートをクリアします。 |
リレーションシップ¶
名前 |
説明 |
|---|---|
success |
SQL クエリ結果セットから FlowFile の作成に成功しました。 |
属性の書き込み¶
名前 |
説明 |
|---|---|
tablename |
クエリ対象のテーブル名 |
querydbtable.row.count |
クエリで選択された行数 |
フラグメント識別子 |
フローファイルあたりの最大行数」が設定されている場合、同じクエリ結果セットのすべての FlowFiles には、fragment.identifier属性に同じ値が設定されます。そして、この結果を相関させるために使用することができます。 |
フラグメント.数 |
Max Rows Per Flow File(フローファイルあたりの最大行数)」がセットされている場合、これは1つの ResultSet によって生成される FlowFiles の総数となります。この属性は、fragment.identifier属性と併用することで、同じ受信 ResultSet に属する FlowFiles の数を知ることができます。出力バッチ・サイズがセットされている場合、この属性は入力されません。 |
フラグメント.インデックス |
「Max Rows Per Flow File(フローファイルあたりの最大行数)」がセットされている場合、同じ結果セット FlowFile から派生したすべての発信 FlowFiles のリストにおける、この FlowFile の位置です。fragment.identifier属性と併用することで、同じクエリ結果セットからどの FlowFiles 、どの順番で FlowFiles が生成されたのかになり得ます。 |
maxvalue.* |
各属性は、指定された「最大値列」の観測された最大値を含みます。属性の接尾辞は列の名前です。出力バッチ・サイズがセットされている場合、この属性は入力されません。 |