Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

リファレンス

サポートされているデータソース

名前 ロゴ Type ステータス 説明
Apache Kafka Apache Kafka ロゴ ストリーミング 安定版 ClickPipes を設定し、Apache Kafka から ClickHouse Cloud へのストリーミングデータの取り込みを開始します。
Confluent Cloud Confluent Cloud ロゴ ストリーミング 安定版 直接インテグレーションにより、Confluent と ClickHouse Cloud の連携を最大限に活用できます。
Redpanda Redpanda ロゴ ストリーミング 安定版 ClickPipes を設定し、Redpanda から ClickHouse Cloud へのストリーミングデータの取り込みを開始します。
AWS MSK AWS MSK ロゴ ストリーミング 安定版 ClickPipes を設定し、AWS MSK から ClickHouse Cloud へのストリーミングデータの取り込みを開始します。
Azure Event Hubs Azure Event Hubs ロゴ ストリーミング 安定版 ClickPipes を設定し、Azure Event Hubs から ClickHouse Cloud へのストリーミングデータの取り込みを開始します。
WarpStream WarpStream ロゴ ストリーミング 安定版 ClickPipes を設定し、WarpStream から ClickHouse Cloud へのストリーミングデータの取り込みを開始します。

分離レベル

Kafkaコンシューマーの分離レベルは、ClickPipeがKafkaトランザクションでコミットされたメッセージのみを読み取り、挿入するかどうかを決定します。kafka_read_committed 設定を有効にすると、read_committed が使用され、中断されたKafkaトランザクションのメッセージはスキップされます。無効にすると、read_uncommitted が使用され、すべてのメッセージが読み取られます。この設定は、詳細設定 で構成できます。

対応データフォーマット

対応しているフォーマットは次のとおりです。

サポートされているデータ型

標準

現在、ClickPipes では以下の標準的な ClickHouse データ型がサポートされています。

  • 基本的な数値型 - [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 型のサポート

ClickPipes は、次の条件で 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 型のサポート

ClickPipes は、次の状況で JSON 型をサポートします。

  • Avro の Record フィールドと Protobuf の Message フィールドは、常に JSON カラムに割り当てることができます。
  • Avro の String フィールドと Bytes フィールドは、Avro フィールドに実際には JSON オブジェクトを表す文字列が含まれている場合、JSON カラムに割り当てることができます。
  • Protobuf の String 型と Bytes 型は、Protobuf フィールドに実際には JSON オブジェクトを表す文字列が含まれている場合、JSON カラムに割り当てることができます。
  • 値が常に JSON オブジェクトである JSON フィールドは、宛先の JSON カラムに割り当てることができます。

fixed パスや skipped パスを含め、宛先カラムは目的の JSON 型に手動で変更する必要があることに注意してください。

Avro

サポートされる Avro データ型

ClickPipes は、local-timestamp-millislocal_timestamp-micros を除くすべての Avro Primitive 型、Complex 型、および Logical 型をサポートしています。Avro の record 型は Tuple に、array 型は Array に、map は Map に変換されます (キーは文字列のみ) 。一般的には、こちら に記載されている変換が利用可能です。ClickPipes は型変換時のオーバーフローや精度の損失をチェックしないため、Avro の数値型では厳密に対応する型を使用することを推奨します。また、すべての Avro 型は String カラムに挿入することもでき、その場合は有効な JSON 文字列として表されます。

Nullable 型と Avro ユニオン

Avro の Nullable 型は、T を基本の 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 データ型

ClickPipes は、長らく非推奨となっている proto 2 の group 型を除き、Protobuf 2 および 3 のすべての型をサポートしています。基本的な型変換には、以下のマッピングが使用されます。

Protobuf type ClickHouse type
bool UInt8
float Float32
double Float64
int32, sint32, sfixed32 Int32
int64, sint64, sfixed64 Int64
uint32, fixed32 UInt32
uint64, fixed64 UInt64
string, bytes String
enum Enum
repeated T Array(T)
message Tuple

次の 既知の型 もサポートされています。

Well-known type ClickHouse type
google.protobuf.Timestamp DateTime, DateTime64
google.protobuf.Duration Time, Time64
google.protobuf.StringValue, google.protobuf.BytesValue Nullable(String)
google.protobuf.Int32Value, google.protobuf.SInt32Value, google.protobuf.SFixed32Value Nullable(Int32)
google.protobuf.Int64Value, google.protobuf.SInt64Value, google.protobuf.SFixed64Value Nullable(Int64)
google.protobuf.UInt32Value, google.protobuf.Fixed32Value Nullable(UInt32)
google.protobuf.UInt64Value, google.protobuf.Fixed64Value Nullable(UInt64)
google.protobuf.FloatValue Nullable(Float32)
google.protobuf.DoubleValue Nullable(Float64)
google.protobuf.BoolValue Nullable(UInt8)

Protobuf oneof

スキーマ推論では、Protobuf の oneof フィールドはデフォルトで名前付き Tuple にマッピングされ、非デフォルト値を持つフィールドは最大でも 1 つだけです。これらのフィールドは、設定されている構成フィールドの型をアクティブな値が取る Variant カラムに自動的にマッピングすることもできます。あるいは、各構成フィールドをそれぞれ個別の ClickHouse カラムに手動でマッピングすることもできます。oneof フィールドは相互排他的であるため、各レコードで値が入るカラムは 1 つだけです。

メッセージのリスト

ClickPipe 用に定義された最上位の Protobuf スキーマに、それ自体が protobuf の Message である単一の repeated フィールドが含まれている場合、スキーマ推論とカラムマッピングは、その「内包された」Message フィールドに基づいて行われます。Kafka メッセージはそのようなメッセージのリストとして処理され、1 つの Kafka メッセージが複数の ClickHouse の行に展開されます。

Kafka 仮想カラム

以下の仮想カラムは、Kafka 互換のストリーミングデータソースでサポートされています。新しい宛先を作成する際は、Add Column ボタンを使用して仮想カラムをターゲットテーブルに追加できます。

名前 説明 推奨データ型
_key Kafka メッセージキー String
_timestamp Kafka タイムスタンプ (ミリ秒精度) DateTime64(3)
_partition Kafka パーティション Int32
_offset Kafka オフセット Int64
_topic Kafka トピック String
_header_keys レコードヘッダー内のキーの並列配列 Array(String)
_header_values レコードヘッダー内の値の並列配列 Array(String)
_raw_message Kafka メッセージ全体 String

_raw_message カラムは、JSON データに対してのみ推奨される点に注意してください。 JSON 文字列だけが必要なユースケースでは (たとえば、ClickHouse の JsonExtract* 関数を使用して 下流の materialized view にデータを投入する場合) 、「仮想ではない」カラムをすべて削除することで ClickPipes のパフォーマンスが向上することがあります。

構造化メッセージキー

_keyString カラムにマッピングすると、元の Kafka メッセージキーが保存されます。このマッピングでは、キーのデコードやスキーマのルックアップは行われません。構造化キーからフィールドを抽出するには、_key. で始まるソースフィールドをマッピングします。たとえば、JSON キー {"customer":{"id":42}} の場合、_key.customer.idcustomer_id などの宛先カラムにマッピングします。

_key.* のマッピング、または String 以外の型への _key の直接マッピングでは、ClickPipes はまず、キーが設定済みのスキーマレジストリを使用してエンコードされているかどうかを確認します。エンコードされていない場合は、キーが JSON オブジェクトかどうかを確認します。レジストリでエンコードされたキーは、レコード値と同じフォーマットおよびレジストリファミリーを使用する必要がありますが、異なるスキーマ ID を使用できます。キースキーマの変更は自動的に検出されます。

デコードが有効な場合、生データのキー、JSON スカラーまたは配列、不正な JSON からはネストされたキーフィールドに値が設定されません。対応する宛先カラムには、型のデフォルト値が設定されます。ClickPipes がレジストリでエンコードされたキーを認識しても、そのスキーマを取得または適用できない場合は、Kafka レコードを ClickPipes エラーテーブルに書き込みます。

Avro キーでは、プリミティブ型、配列、map、fixed 型など、レコード以外のルートスキーマも使用できます。これをデコードするには、_keyString 以外の互換性のある宛先型に直接マッピングします。レコード以外のスキーマでは、ネストされたキーフィールドに値を設定できません。

Navigation