| 入力 | 出力 | エイリアス |
|---|---|---|
| ✔ | ✔ |
説明
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 設定を使用してください。 Arrayはネストでき、引数としてNullable型の値を取ることもできます。Tuple型とMap型もネストできます。
使用例
データの挿入と取得
schema.capnp の内容は次のとおりです。
CapnProto フォーマットのファイルに保存できます。
自動生成されたスキーマを使用する
CapnProto スキーマがなくても、自動生成されたスキーマを使って CapnProto フォーマットでデータを出力/入力できます。
たとえば、次のようになります。
フォーマット設定
format_capn_proto_use_autogenerated_schema はデフォルトで有効になっており、format_schema が設定されていない場合に適用されます。
また、設定 output_format_schema を使用すると、入出力時に自動生成されたスキーマをファイルに保存できます。
例:
CapnProtoスキーマはpath/to/schema/schema.capnpファイルに保存されます。