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

format テーブル関数

指定された入力フォーマットに従って、引数からデータをパースします。structure 引数が指定されていない場合は、データから自動的に抽出されます。

構文

format(format_name, [structure], data)

引数

  • format_name — データのフォーマット
  • structure - テーブル構造。省略可能。形式は column1_name column1_type, column2_name column2_type, ...
  • data — 指定したフォーマットのデータを含む文字列を返す文字列リテラルまたは定数式。

返される値

指定された形式および、指定または抽出された構造に従って data 引数を解析した結果を含むテーブル。

structure 引数なしの場合:

クエリ:

SELECT * FROM format(JSONEachRow,
$$
{"a": "Hello", "b": 111}
{"a": "World", "b": 123}
{"a": "Hello", "b": 112}
{"a": "World", "b": 124}
$$)

結果:

┌───b─┬─a─────┐
│ 111 │ こんにちは │
│ 123 │ 世界 │
│ 112 │ こんにちは │
│ 124 │ 世界 │
└─────┴───────┘

クエリ:

DESC format(JSONEachRow,
$$
{"a": "Hello", "b": 111}
{"a": "World", "b": 123}
{"a": "Hello", "b": 112}
{"a": "World", "b": 124}
$$)

結果:

┌─name─┬─type──────────────┬─default_type─┬─default_expression─┬─comment─┬─codec_expression─┬─ttl_expression─┐
│ b    │ Nullable(Float64) │              │                    │         │                  │                │
│ a    │ Nullable(String)  │              │                    │         │                  │                │
└──────┴───────────────────┴──────────────┴────────────────────┴─────────┴──────────────────┴────────────────┘

structure 引数を指定する場合:

クエリ:

SELECT * FROM format(JSONEachRow, 'a String, b UInt32',
$$
{"a": "Hello", "b": 111}
{"a": "World", "b": 123}
{"a": "Hello", "b": 112}
{"a": "World", "b": 124}
$$)

結果:

┌─a─────┬───b─┐
│ こんにちは │ 111 │
│ 世界       │ 123 │
│ こんにちは │ 112 │
│ 世界       │ 124 │
└───────┴─────┘