CapnProto
入力 | 出力 | エイリアス |
---|---|---|
✔ | ✔ |
説明
CapnProto
フォーマットは、Protocol Buffers
フォーマットや Thrift と似たバイナリメッセージフォーマットですが、JSON や MessagePack とは異なります。
CapnProto メッセージは厳密に型付けされており、自己記述的ではないため、外部スキーマ記述が必要です。スキーマはその場で適用され、各クエリに対してキャッシュされます。
フォーマットスキーマ も参照してください。
データ型の一致
以下の表は、サポートされているデータ型と、それらが INSERT
および SELECT
クエリにおける ClickHouse の データ型 とどのように一致するかを示しています。
CapnProto データ型(INSERT ) | ClickHouse データ型 | CapnProto データ型(SELECT ) |
---|---|---|
UINT8 , BOOL | UInt8 | UINT8 |
INT8 | Int8 | INT8 |
UINT16 | UInt16, Date | UINT16 |
INT16 | Int16 | INT16 |
UINT32 | UInt32, DateTime | UINT32 |
INT32 | Int32, Decimal32 | INT32 |
UINT64 | UInt64 | UINT64 |
INT64 | Int64, DateTime64, Decimal64 | INT64 |
FLOAT32 | Float32 | FLOAT32 |
FLOAT64 | Float64 | FLOAT64 |
TEXT, DATA | String, FixedString | TEXT, DATA |
union(T, Void), union(Void, T) | Nullable(T) | union(T, Void), union(Void, T) |
ENUM | Enum(8/16) | ENUM |
LIST | Array | LIST |
STRUCT | Tuple | STRUCT |
UINT32 | IPv4 | UINT32 |
DATA | IPv6 | DATA |
DATA | Int128/UInt128/Int256/UInt256 | DATA |
DATA | Decimal128/Decimal256 | DATA |
STRUCT(entries LIST(STRUCT(key Key, value Value))) | Map | STRUCT(entries LIST(STRUCT(key Key, value Value))) |
- 整数型は、入力/出力中に相互に変換できます。
- CapnProtoフォーマットでの
Enum
の取り扱いには、format_capn_proto_enum_comparising_mode 設定を使用してください。 - 配列はネスト可能で、
Nullable
型の値を引数として持つことができます。Tuple
およびMap
型もネストできます。
使用例
データの挿入と選択
次のコマンドを使用して、ファイルから ClickHouse テーブルに CapnProto データを挿入できます。
ここで、schema.capnp
は次のようになります。
次のコマンドを使用して、ClickHouse テーブルからデータを選択し、CapnProto
フォーマットでファイルに保存できます。
自動生成スキーマの使用
データに対する外部の CapnProto
スキーマがない場合でも、自動生成スキーマを使用して CapnProto
フォーマットでデータを出力/入力できます。
例えば:
この場合、ClickHouse はテーブル構造に基づいて CapnProto スキーマを自動生成し、structureToCapnProtoSchema 関数を使用して、このスキーマを使用して CapnProto フォーマットでデータをシリアライズします。
自動生成されたスキーマの CapnProto ファイルを読み取ることもできます(この場合、ファイルは同じスキーマを使用して作成する必要があります):
フォーマット設定
設定 format_capn_proto_use_autogenerated_schema
はデフォルトで有効であり、format_schema
が設定されていない場合に適用されます。
入力/出力中に output_format_schema
設定を使用して、自動生成されたスキーマをファイルに保存することもできます。
例えば:
この場合、自動生成された CapnProto
スキーマはファイル path/to/schema/schema.capnp
に保存されます。