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 はテーブルの構造に基づいて関数 structureToCapnProtoSchema を使用して CapnProto スキーマを自動生成し、このスキーマを使用して CapnProto フォーマットでデータをシリアライズします。
自動生成されたスキーマの CapnProto ファイルを読み取ることもできます(この場合、ファイルは同じスキーマを使用して作成されている必要があります)。
フォーマット設定
設定 format_capn_proto_use_autogenerated_schema はデフォルトで有効になっており、format_schema が設定されていない場合に適用されます。
また、設定 output_format_schema を使用して、入出力中に自動生成されたスキーマをファイルに保存することもできます。
例えば:
この場合、自動生成された CapnProto スキーマがファイル path/to/schema/schema.capnp に保存されます。