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

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

Функция url создаёт таблицу на основе URL с заданными format и structure.

Функция url может использоваться в запросах SELECT и INSERT к данным в таблицах URL.

Синтаксис

url(URL [,format] [,structure] [,headers])

Параметры

ПараметрОписание
URLHTTP- или HTTPS-адрес сервера в одинарных кавычках, который может принимать запросы GET или POST (для запросов SELECT или INSERT соответственно). Тип: String.
formatФормат данных. Тип: String.
structureСтруктура таблицы в формате 'UserID UInt64, Name String'. Определяет имена и типы столбцов. Тип: String.
headersЗаголовки в формате 'headers('key1'='value1', 'key2'='value2')'. Позволяет задать заголовки для HTTP-запроса.

Возвращаемое значение

Таблица с указанным форматом и структурой, содержащая данные из заданного URL-адреса.

Примеры

Получение первых трёх строк таблицы, содержащей столбцы типов String и UInt32, с HTTP-сервера, который отвечает в формате CSV.

SELECT * FROM url('http://127.0.0.1:12345/', CSV, 'column1 String, column2 UInt32', headers('Accept'='text/csv; charset=utf-8')) LIMIT 3;

Вставка данных из URL-адреса в таблицу:

CREATE TABLE test_table (column1 String, column2 UInt32) ENGINE=Memory;
INSERT INTO FUNCTION url('http://127.0.0.1:8123/?query=INSERT+INTO+test_table+FORMAT+CSV', 'CSV', 'column1 String, column2 UInt32') VALUES ('http interface', 42);
SELECT * FROM test_table;

Глоб-шаблоны в URL

Шаблоны в фигурных скобках { } используются для формирования набора шардов или указания резервных адресов. Поддерживаемые типы шаблонов и примеры см. в описании функции remote. Символ | внутри шаблонов используется для указания резервных адресов. Они перебираются в том же порядке, в котором перечислены в шаблоне. Количество сгенерированных адресов ограничивается настройкой glob_expansion_max_elements.

Виртуальные столбцы

  • _path — Путь к URL. Тип: LowCardinality(String).
  • _file — Имя ресурса в URL. Тип: LowCardinality(String).
  • _size — Размер ресурса в байтах. Тип: Nullable(UInt64). Если размер неизвестен, значение — NULL.
  • _time — Время последнего изменения файла. Тип: Nullable(DateTime). Если время неизвестно, значение — NULL.
  • _headers — Заголовки HTTP-ответа. Тип: Map(LowCardinality(String), LowCardinality(String)).

настройка use_hive_partitioning

Когда настройка use_hive_partitioning установлена в 1, ClickHouse будет распознавать секционирование в стиле Hive в пути (/name=value/) и позволит использовать столбцы секций как виртуальные столбцы в запросе. Эти виртуальные столбцы будут иметь те же имена, что и в пути секционирования, но с префиксом _.

Пример

Использование виртуального столбца, созданного с помощью секционирования в стиле Hive

SELECT * FROM url('http://data/path/date=*/country=*/code=*/*.parquet') WHERE _date > '2020-01-01' AND _country = 'Netherlands' AND _code = 42;

Настройки хранения

  • engine_url_skip_empty_files — позволяет пропускать пустые файлы при чтении. По умолчанию отключено.
  • enable_url_encoding — позволяет включать или отключать декодирование/кодирование пути в URI. По умолчанию включено.

Разрешения

Функция url требует прав CREATE TEMPORARY TABLE. Поэтому она не будет работать для пользователей с настройкой readonly = 1. Требуется как минимум readonly = 2.