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

Функция Таблицы url

url функция создает таблицу из URL с заданным форматом и структурой.

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

Синтаксис

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

Параметры

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

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

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

Примеры

Получение первых 3 строк таблицы, содержащей колонки типа 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.