QueryRecord 2025.5.31.15¶
バンドル¶
org.apache.nifi | nifi-standard-nar
説明¶
FlowFile のコンテンツに対して、1 つ以上の SQL クエリを評価します。SQL クエリの結果が、出力 FlowFile の内容となります。これは、フィールド固有のフィルター、変換、行レベルのフィルターなどに使用できます。列の名前を変更したり、簡単な計算や集計を行ったりすることができます。プロセッサーは、入出力データ形式に柔軟性を持たせるため、Record ReaderController ServiceとRecord Writerサービスで構成されています。プロセッサーは、少なくとも 1 つのユーザー定義プロパティを構成する必要があります。Property の名前は、データをルーティングする Relationship であり、Property の値は、入力データがどのように変換/フィルタリングされるべきかを指定するために使用される SQL SELECT ステートメントです。SQL ステートメントは、有効な ANSI SQL である必要があり、Apache Calcite を使用しています。変換に失敗した場合、元の FlowFile は「失敗」リレーションシップにルーティングされます。そうでない場合、選択されたデータは関連するリレーションシップにルーティングされます。Record Writerが記録からスキーマを継承することを選択した場合、継承されるスキーマは入力記録ではなく ResultSet からのものであることに注意することが重要です。これにより、 QueryRecord プロセッサーの1つのインスタンスが複数のクエリを持つことができ、それぞれが異なる列と集約のセットを返します。しかし、その結果、派生するスキーマはスキーマ名を持たないので、記録からスキーマを継承する場合、構成されたRecord Writerは属性としてスキーマ名を書こうとしないことが重要です。詳細情報については、Processor Usageドキュメントを参照してください。
入力要件¶
REQUIRED
機密動的プロパティをサポート¶
false
プロパティ¶
プロパティ |
説明 |
---|---|
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になります。 |
include-zero-record-flowfiles |
受信 FlowFile に対して SQL ステートメントを実行するとき、結果にデータがない場合、このプロパティは FlowFile が対応するリレーションシップに送信されるかどうかを指定します。 |
record-reader |
受信データのパースとスキーマの決定に使用する Controller Service を指定します。 |
record-writer |
FlowFile への結果の書き込みに使用するController Serviceを指定します。 |
リレーションシップ¶
名前 |
説明 |
---|---|
failure |
FlowFile が何らかの理由で処理に失敗した場合 (たとえば、 SQL ステートメントに入力データに存在しない列が含まれている場合)、元の FlowFile はこのリレーションシップにルーティングされます。 |
original |
元の FlowFile は、次のリレーションシップにルーティングされます。 |
属性の書き込み¶
名前 |
説明 |
---|---|
mime.type |
mime.type属性をRecord Writerで指定された MIME Typeにセットします。 |
record.count |
クエリで選択された記録数 |
QueryRecord.Route |
FlowFile がルーティングされた先のリレーションシップ |
ユースケース¶
記録のフィールドの値に基づいて記録をフィルターします。 |
特定の記録のみを保持する |
保持するフィールドの名前がわかっている場合、記録内の特定のフィールドのみを保持する |
記録指向のデータをその内容に基づいて処理するためのルーティング |