メインコンテンツまでスキップ
メインコンテンツまでスキップ

Object Data Type

Deprecated feature

この機能は本番環境向けではなく、非推奨です。 JSON ドキュメントを扱う必要がある場合は、代わりにこのガイドを参照してください。JSON オブジェクトをサポートする新しい実装がベータ版で提供されています。詳細についてはこちらをご覧ください。


JavaScript Object Notation (JSON) ドキュメントを単一のカラムに格納します。

JSONは、use_json_alias_for_old_object_typeが有効な場合にObject('json')のエイリアスとして使用できます。

例 1

JSON カラムを持つテーブルを作成し、データを挿入します:

CREATE TABLE json
(
    o JSON
)
ENGINE = Memory
INSERT INTO json VALUES ('{"a": 1, "b": { "c": 2, "d": [1, 2, 3] }}')
SELECT o.a, o.b.c, o.b.d[3] FROM json
┌─o.a─┬─o.b.c─┬─arrayElement(o.b.d, 3)─┐
│   1 │     2 │                      3 │
└─────┴───────┴────────────────────────┘

例 2

順序つきの MergeTree ファミリー テーブルを作成するには、ソートキーをカラムに抽出する必要があります。たとえば、JSON 形式の圧縮された HTTP アクセスログのファイルを挿入するには、次のようにします:

CREATE TABLE logs
(
    timestamp DateTime,
    message JSON
)
ENGINE = MergeTree
ORDER BY timestamp
INSERT INTO logs
SELECT parseDateTimeBestEffort(JSONExtractString(json, 'timestamp')), json
FROM file('access.json.gz', JSONAsString)

JSON カラムの表示

JSON カラムを表示すると、ClickHouse はデフォルトでフィールド値のみを表示します(内部的にはタプルとして表現されています)。フィールド名を表示するには、output_format_json_named_tuples_as_objects = 1 を設定することができます:

SET output_format_json_named_tuples_as_objects = 1

SELECT * FROM json FORMAT JSONEachRow
{"o":{"a":1,"b":{"c":2,"d":[1,2,3]}}}