Табличная функция url
Функция url создаёт таблицу на основе URL с заданными format и structure.
Функция url может использоваться в запросах SELECT и INSERT к данным в таблицах URL.
Синтаксис
Параметры
| Параметр | Описание |
|---|---|
URL | HTTP- или 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.
Вставка данных из URL-адреса в таблицу:
Глоб-шаблоны в 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
Разрешение относительных URL
Параметр url_base позволяет передавать в функцию url относительный URL. Если задан url_base и аргумент функции является относительной ссылкой, она разрешается относительно базового URL в соответствии с RFC 3986.
Правила разрешения следующие:
- Относительно пути (например,
data.csv): объединяется с путём базового URL — всё после последнего/в базовом пути заменяется. Наличие завершающего слеша имеет значение:https://example.com/dir/+data.csvдаётhttps://example.com/dir/data.csv, аhttps://example.com/dir+data.csvдаётhttps://example.com/data.csv. Сегменты с точками (./и../) нормализуются. - Относительно хоста (например,
/test/data.csv): разрешается с использованием схемы и хоста базового URL. - Относительно схемы (например,
//other.com/test/data.csv): разрешается с использованием схемы базового URL. - Только строка запроса (например,
?x=1): добавляется к полному базовому пути, заменяя существующую строку запроса или фрагмент. - Только фрагмент (например,
#frag): добавляется к базовому URL, сохраняя строку запроса и заменяя существующий фрагмент. - Пустой: возвращает базовый URL без фрагмента.
- Абсолютный URL: передаётся без изменений;
url_baseигнорируется.
Пример
Настройки хранения
- engine_url_skip_empty_files — позволяет пропускать пустые файлы при чтении. По умолчанию отключено.
- enable_url_encoding — позволяет включать или отключать декодирование/кодирование пути в URI. По умолчанию включено.
- url_base — базовый URL для разрешения относительных URL, передаваемых в функцию
url.
Разрешения
Функция url требует прав CREATE TEMPORARY TABLE. Поэтому она не будет работать для пользователей с настройкой readonly = 1. Требуется как минимум readonly = 2.