ExtractTopic

ここでは、Confluent SMT io.confluent.connect.transforms.ExtractTopic の使用方法を説明します。

説明

メッセージからデータを抽出し、トピック名として使用します。キー/値全体(文字列である必要があります)を使用するか、Map または Struct の 1 つのフィールドを使用することができます。レコードキー用(io.confluent.connect.transforms.ExtractTopic$Key)または値用(io.confluent.connect.transforms.ExtractTopic$Value)の固有の変換タイプを使用します。固有のタイプ(io.confluent.connect.transforms.ExtractTopic$Header)を使用して、メッセージヘッダー値(文字列)から値全体を抽出することもできます。

インストール

この変換は Confluent が開発したものであり、Apache Kafka® または Confluent Platform にデフォルトで同梱されるものではありません。この変換は、Confluent Hub クライアント を使用してインストールできます。

confluent-hub install confluentinc/connect-transforms:latest

以下の構成スニペットは、ExtractTopic SMT の使用方法と構成方法を示しています。

"transforms": "KeyExample", "ValueFieldExample", "KeyFieldExample", "FieldJsonPathExample", "HeaderExample",

メッセージのキーをトピック名として使用します。

"transforms.KeyExample.type": "io.confluent.connect.transforms.ExtractTopic$Key"

値から f2 という名前の必須フィールドを抽出して、トピック名として使用します。

"transforms.ValueFieldExample.type": "io.confluent.connect.transforms.ExtractTopic$Value",
"transforms.ValueFieldExample.field": "f2"

キーから f3 という名前のフィールドを抽出して、トピック名として使用します。フィールドが null であるか存在しない場合、トピック名はそのままとなります。

"transforms.KeyFieldExample.type": "io.confluent.connect.transforms.ExtractTopic$Value",
"transforms.KeyFieldExample.field": "f3",
"transforms.KeyFieldExample.skip.missing.or.null": "true"

キーの f1 フィールドの f3 という名前のフィールドの値を抽出し、トピック名として使用します。ここではフィールドのフォーマットは JSON パスで定義されています(["f1"]["f3"] など)。フィールドが null であるか存在しない場合、トピック名はそのままとなります。

"transforms.FieldJsonPathExample.type": "io.confluent.connect.transforms.ExtractTopic$Value",
"transforms.FieldJsonPathExample.field": "$["f1"]["f3"]",
"transforms.FieldJsonPathExample.field.format": "JSON_PATH",
"transforms.FieldJsonPathExample.skip.missing.or.null": "true"

キー h1 (必須)を持つメッセージヘッダーの値を(文字列として)抽出して、トピック名として使用します。

"transforms.HeaderExample.type": "io.confluent.connect.transforms.ExtractTopic$Header",
"transforms.HeaderExample.field": "h1",
"transforms.FieldJsonPathExample.skip.missing.or.null=true"

ちなみに

その他の例については、マネージド型コネクターの ExtractTopic を参照してください。

特徴

Name 説明 デフォルト 指定可能な値 重要度
field トピック名として使用するフィールド名。空白にすると、キーまたは値全体が使用されます(文字列と見なされます)。 string ""  
field.format フィールドパスフォーマットを指定します。現在、JSON_PATH と PLAIN の 2 つのフォーマットがサポートされています。JSON_PATH を設定すると、トランスフォーマーにより、フィールドが JSON パスインタープリターで解釈されます。このインタープリターではネストしたフィールドの抽出がサポートされています。空白にした場合または PLAIN を設定した場合、トランスフォーマーはフィールドの構成をネストしていないフィールド名として評価します。ExtractTopic$Header を使用する場合は、デフォルトの PLAIN フォーマットのみを使用できます。このフォーマットでは、ヘッダーの値が文字列として抽出されます。 string "PLAIN" "JSON_PATH"、"PLAIN"
skip.missing.or.null フィールドが存在しない場合、null のフィールド、キー、値の場合の処理方法。デフォルトでは、この変換は、field の構成で指定されたフィールドが存在しないか null の場合、またはフィールドが指定されておらず、メッセージのキーまたは値が null の場合、例外をスローします。この構成に true が設定されている場合、変換では、これらの条件が単に無視され、レコードには何も変更が加えられないままとなります。 boolean false  

述語

"述語" を使用することにより、一定の条件を満たすレコードのみに変換が適用されるように、変換を構成することができます。述語は変換チェーンで使用することができ、Filter(Apache Kafka) と組み合わせると、条件に基づいて特定のレコードを除外できます。詳細と例については、「述語」を参照してください。