Перейти к основному содержанию
Перейти к основному содержанию

Табличная функция format

Разбирает данные из аргументов в соответствии с указанным входным форматом. Если аргумент структуры не указан, структура определяется по данным.

Синтаксис

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 │
└───────┴─────┘