# 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ビット以上の整数(UInt64Int128など)はデフォルトで引用符で囲まれます。特殊な値NaNinfnullに置き換えられます。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' )
Last Updated: Thu Apr 11 2024 02:40:52 GMT+0000