# JSON関数
JSON関数は、文字列型のデータを操作するために使用されます。
# JSONExtractString
JSONを解析し、文字列を抽出します。値が存在しない場合や型が間違っている場合は、空の文字列が返されます。値はエスケープされていません。エスケープの解除に失敗した場合は、空の文字列が返されます。
JSONExtractString(json[, indices_or_keys]…)
例
SELECT JSONExtractString('{"a": "hello", "b": [-100, 200.0, 300]}', 'a') = 'hello'
SELECT JSONExtractString('{"abc":"\\n\\u0000"}', 'abc') = '\n\0'
SELECT JSONExtractString('{"abc":"\\u263a"}', 'abc') = '☺'
SELECT JSONExtractString('{"abc":"\\u263"}', 'abc') = ''
SELECT JSONExtractString('{"abc":"hello}', 'abc') = ''
# toJSONString
値をそのJSON表現にシリアライズします。さまざまなデータ型やネストされた構造をサポートしています。64ビット以上の整数(UInt64
やInt128
など)はデフォルトで引用符で囲まれます。特殊な値NaN
とinf
はnull
に置き換えられます。Enum値をシリアライズする場合、関数はその名前を出力します。
toJSONString(value)
引数
value
- シリアライズする値。値は任意のデータ型である可能性があります。
返される値
- 値のJSON表現。
- 型:文字列
例
SELECT toJSONString(‘a:b’) = "a:b"
SELECT toJSONString(123456) = 123456
SELECT toJSONString(0x64) = 100
# JSONExtractArrayRaw
JSON配列の要素を、各要素を解析されていない文字列として表現した配列を返します。パートが存在しない場合や配列でない場合は、空の配列が返されます。
JSONExtractArrayRaw(json[, indices_or_keys…])
例
SELECT JSONExtractArrayRaw('{"a": "hello", "b": [-100, 200.0, "hello"]}', 'b') = ['-100', '200', '"hello"'];
INSERT INTO ChatArXivSELECT
abstract,
id,
vector,
metadata,
parseDateTimeBestEffort(JSONExtractString(toJSONString(metadata), 'pubdate')) AS pubdate,
JSONExtractString(toJSONString(metadata), 'title') AS title,
arrayMap(x->trim(BOTH '"' FROM x),
JSONExtractArrayRaw(toJSONString(metadata), 'categories')) AS categories,
arrayMap(x->trim(BOTH '"' FROM x),
JSONExtractArrayRaw(toJSONString(metadata), 'authors')) AS authors,
JSONExtractString(toJSONString(metadata), 'comment') AS comment,
JSONExtractString(toJSONString(metadata), 'primary_category') AS primary_category
FROM s3( 'https://myscale-demo.s3.ap-southeast-1.amazonaws.com/chat_arxiv/data.part*.zst', 'JSONEachRow', 'abstract String, id String, vector Array(Float32), metadata Object(''JSON'')', 'zstd' )