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

オブジェクトデータ型

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ファミリーのテーブルを作成できるようにするため、ソートキーはそのカラムに抽出する必要があります。例えば、圧縮されたHTTPアクセスログのファイルをJSON形式で挿入するためには:

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]}}}