メインコンテンツへスキップ

説明

CapnProto フォーマットは、Protocol BuffersThrift に似たバイナリメッセージ形式ですが、JSONMessagePack のような自己記述型の形式ではありません。 CapnProto メッセージは厳密に型付けされており、自己記述型ではないため、外部のスキーマ記述が必要です。スキーマはその場で適用され、各クエリごとにキャッシュされます。 関連項目: フォーマットスキーマ

データ型の対応

以下の表は、サポートされているデータ型と、INSERT および SELECT クエリにおいてそれらが ClickHouse のデータ型にどのように対応するかを示しています。
  • 整数型は、入出力時に相互変換できます。
  • CapnProto フォーマットで Enum を扱うには、format_capn_proto_enum_comparising_mode 設定を使用してください。
  • Array はネストでき、引数として 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ファイルに保存されます。
最終更新日 2026年7月1日