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

質問

materialized view で抽出するには、ソーステーブルまたはランディングテーブルで JSON メッセージをどのように扱えばよいですか? Experimental な JSON Object を使わずに JSON をどのように扱えばよいですか?

回答

JSONデータを扱う一般的なパターンとして、まずデータをランディングテーブルに送信し、次にJSONExtract関数を使って、materialized view のトリガーにより新しいテーブルへデータを抽出します。 通常は、次のようなフローで行います。
ランディングテーブルには、生の JSON を格納するための raw 文字列フィールドが必要です。また、テーブルを管理するためのフィールドを 1 ~ 2 個追加しておく必要があります。これにより、データの経過に応じてパーティション化や古いデータの削除を行えるようになります。 *一部のインテグレーションでは、元のデータにフィールドを追加できます。たとえば、ClickHouse Kafka Connector Sink を使用する場合です。 簡略化した例を以下に示します。
  • example データベースを作成する
  • 生のJSONが挿入されるランディングテーブルを作成します:
  • materialized view の基となるテーブルを作成する
  • 基となるテーブルに対する materialized view を作成する
  • サンプル行をいくつか挿入する
  • 抽出結果と、クエリで使用する materialized view を表示する
追加の参考リンク: materialized view: https://clickhouse.com/docs/guides/developer/cascading-materialized-views JSON の扱い: https://clickhouse.com/docs/integrations/data-formats/json#other-approaches JSON 関数: https://clickhouse.com/docs/sql-reference/functions/json-functions
最終更新日 2026年7月2日