対応データソース
対応データフォーマット
サポートされているデータ型
標準
- 基本的な数値型 - [U]Int8/16/32/64、Float32/64、BFloat16
- 大きな整数型 - [U]Int128/256
- Decimal 型
- Boolean
- String
- FixedString
- Date、Date32
- DateTime、DateTime64 (UTC タイムゾーンのみ)
- Enum8/Enum16
- UUID
- IPv4
- IPv6
- Time、Time64
- JSON
- すべての ClickHouse LowCardinality 型
- キーと値に上記のいずれかの型を使用する Map (Nullable を含む)
- 要素に上記のいずれかの型を使用する Tuple と Array (Nullable を含む、深さは 1 レベルのみ)
- SimpleAggregateFunction 型 (AggregatingMergeTree または SummingMergeTree の宛先向け)
Variant 型のサポート
- Avro のユニオン。Avro スキーマに複数の NULL 以外の型を含むユニオンがある場合、ClickPipes は適切な Variant 型を推論します。それ以外の Avro データでは、Variant 型はサポートされません。
- JSON フィールド。ソースデータストリーム内の任意の JSON フィールドに対して、Variant 型 (
Variant(String, Int64, DateTime)など) を 手動で指定できます。複雑なサブタイプ (Array/Map/Tuple) はサポートされません。また、ClickPipes では使用すべき Variant のサブタイプを判定する仕組み上、Variant の定義で使用できる整数型または datetime 型は 1 つのみです。たとえば、Variant(Int64, UInt32)はサポートされません。
JSON 型のサポート
- Avro の Record フィールドと Protobuf の Message フィールドは、常に JSON カラムに割り当てることができます。
- Avro の String フィールドと Bytes フィールドは、Avro フィールドに実際には JSON オブジェクトを表す文字列が含まれている場合、JSON カラムに割り当てることができます。
- Protobuf の String 型と Bytes 型は、Protobuf フィールドに実際には JSON オブジェクトを表す文字列が含まれている場合、JSON カラムに割り当てることができます。
- 値が常に JSON オブジェクトである JSON フィールドは、宛先の JSON カラムに割り当てることができます。
Avro
サポートされる Avro データ型
local-timestamp-millis と local_timestamp-micros を除くすべての Avro Primitive 型、Complex 型、および Logical 型をサポートしています。Avro の record 型は Tuple に、array 型は Array に、map は Map に変換されます (キーは文字列のみ) 。一般的には、こちら に記載されている変換が利用可能です。ClickPipes は型変換時のオーバーフローや精度の損失をチェックしないため、Avro の数値型では厳密に対応する型を使用することを推奨します。
また、すべての Avro 型は String カラムに挿入することもでき、その場合は有効な JSON 文字列として表されます。
Nullable 型と Avro ユニオン
(T, null) または (null, T) のユニオン スキーマを使って定義されます。スキーマ推論時には、このようなユニオンは ClickHouse の Nullable カラムにマッピングされます。なお、ClickHouse は
Nullable(Array)、Nullable(Map)、Nullable(Tuple) 型をサポートしていません。これらの型に対する Avro の null ユニオンは、非 Nullable 型にマッピングされます (Avro の Record 型は ClickHouse の named Tuple にマッピングされます) 。これらの型における Avro の null は、次のように挿入されます。
- null の Avro array の場合は空の Array
- null の Avro Map の場合は空の Map
- null の Avro Record の場合は、すべてのフィールドがデフォルト値またはゼロ値の named Tuple
Protobuf
サポートされている Protobuf データ型
group 型を除き、Protobuf 2 および 3 のすべての型をサポートしています。基本的な型変換には、以下のマッピングが使用されます。
すべての基本型で、
Array、Map、Nullable の各バリアントもサポートされています。
次の 既知の型 もサポートされています。
Protobuf oneof
oneof フィールドはデフォルトで名前付き Tuple にマッピングされ、非デフォルト値を持つフィールドは最大でも 1 つだけです。これらのフィールドは、設定されている構成フィールドの型をアクティブな値が取る Variant カラムに自動的にマッピングすることもできます。あるいは、各構成フィールドをそれぞれ個別の ClickHouse カラムに手動でマッピングすることもできます。oneof フィールドは相互排他的であるため、各レコードで値が入るカラムは 1 つだけです。
メッセージのリスト
repeated フィールドが含まれている場合、スキーマ推論とカラムマッピングは、その「内包された」Message フィールドに基づいて行われます。Kafka メッセージはそのようなメッセージのリストとして処理され、1 つの Kafka メッセージが複数の ClickHouse の行に展開されます。
Kafka 仮想カラム
Add Column ボタンを使用して仮想カラムをターゲットテーブルに追加できます。
_raw_message カラムは、JSON データに対してのみ推奨される点に注意してください。
JSON 文字列だけが必要なユースケースでは (たとえば、ClickHouse の JsonExtract* 関数を使用して
下流の materialized view にデータを投入する場合) 、「仮想ではない」カラムをすべて削除することで ClickPipes のパフォーマンスが向上することがあります。