CapnProto
| 入力 | 出力 | エイリアス |
|---|---|---|
| ✔ | ✔ |
説明
CapnProto フォーマットは、Protocol Buffers フォーマットや Thrift に似たバイナリメッセージフォーマットであり、JSON や MessagePack とは異なります。
CapnProto メッセージは厳密に型付けされており、自己記述的ではないため、外部のスキーマ記述が必要です。スキーマは動的に適用され、クエリごとにキャッシュされます。
Format Schema も参照してください。
データ型の対応
以下の表は、サポートされているデータ型と、それらが 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型も入れ子にできます。
使用例
データの挿入と選択
次のコマンドを実行すると、ファイル内の CapnProto データを ClickHouse のテーブルに挿入できます。
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 というファイルに保存されます。