Табличная функция azureBlobStorage
Предоставляет табличный интерфейс для чтения и записи файлов в Azure Blob Storage. Эта табличная функция аналогична функции s3.
Синтаксис
- Строка подключения
- URL учетной записи хранилища
- Именованная коллекция
Учетные данные включены в строку подключения, поэтому отдельные account_name/account_key не требуются:
Требуются account_name и account_key в виде отдельных аргументов:
Полный список поддерживаемых ключей см. в разделе Named Collections ниже:
Аргументы
| Аргумент | Описание |
|---|---|
connection_string | Строка подключения, включающая встроенные учетные данные (имя учетной записи + ключ учетной записи или токен SAS). При использовании этого варианта параметры account_name и account_key не должны передаваться отдельно. См. Настройка строки подключения. |
storage_account_url | URL конечной точки учетной записи хранилища, например https://myaccount.blob.core.windows.net/. При использовании этого варианта вы обязаны также передать account_name и account_key. |
container_name | Имя контейнера. |
blobpath | Путь к файлу. Поддерживает следующие подстановочные шаблоны в режиме только для чтения: *, **, ?, {abc,def} и {N..M}, где N, M — числа, а 'abc', 'def' — строки. |
account_name | Имя учетной записи хранилища. Обязательно, если используется storage_account_url без SAS; не должно передаваться при использовании connection_string. |
account_key | Ключ учетной записи хранилища. Обязателен, если используется storage_account_url без SAS; не должен передаваться при использовании connection_string. |
format | Формат файла. |
compression | Поддерживаемые значения: none, gzip/gz, brotli/br, xz/LZMA, zstd/zst. По умолчанию тип сжатия автоматически определяется по расширению файла (то же, что и установка auto). |
structure | Структура таблицы. Формат: 'column1_name column1_type, column2_name column2_type, ...'. |
partition_strategy | Необязательный параметр. Поддерживаемые значения: WILDCARD или HIVE. WILDCARD требует наличия {_partition_id} в пути, который заменяется ключом партиционирования. HIVE не допускает подстановочные шаблоны, предполагает, что путь — это корень таблицы, и создает каталоги партиций в стиле Hive с идентификаторами Snowflake в качестве имен файлов и форматом файла в качестве расширения. По умолчанию — WILDCARD. |
partition_columns_in_data_file | Необязательный параметр. Используется только со стратегией партиционирования HIVE. Указывает ClickHouse, следует ли ожидать, что столбцы партиции будут записаны в файл данных. По умолчанию — false. |
extra_credentials | Используйте client_id и tenant_id для аутентификации. Если заданы extra_credentials, они имеют приоритет над account_name и account_key. |
Именованные коллекции
Аргументы также могут передаваться с использованием именованных коллекций. В этом случае поддерживаются следующие ключи:
| Ключ | Обязательный | Описание |
|---|---|---|
container | Yes | Имя контейнера. Соответствует позиционному аргументу container_name. |
blob_path | Yes | Путь к файлу (с необязательными подстановочными знаками). Соответствует позиционному аргументу blobpath. |
connection_string | No* | Строка подключения со встроенными учетными данными. *Необходимо указать либо connection_string, либо storage_account_url. |
storage_account_url | No* | URL конечной точки учетной записи хранилища. *Необходимо указать либо connection_string, либо storage_account_url. |
account_name | No | Требуется при использовании storage_account_url. |
account_key | No | Требуется при использовании storage_account_url. |
format | No | Формат файла. |
compression | No | Тип сжатия. |
structure | No | Структура таблицы. |
client_id | No | Идентификатор клиента для аутентификации. |
tenant_id | No | Идентификатор арендатора для аутентификации. |
Имена ключей в именованной коллекции отличаются от имен позиционных аргументов функции: container (а не container_name) и blob_path (а не blobpath).
Пример:
Вы также можете переопределять значения именованных коллекций в момент выполнения запроса:
Возвращаемое значение
Таблица заданной структуры для чтения данных из указанного файла или записи их в него.
Примеры
Чтение с использованием варианта storage_account_url
Чтение с использованием connection_string
Запись с использованием партиций
Затем прочитайте определённую партицию:
Виртуальные столбцы
_path— Путь к файлу. Тип:LowCardinality(String)._file— Имя файла. Тип:LowCardinality(String)._size— Размер файла в байтах. Тип:Nullable(UInt64). Если размер файла неизвестен, значение —NULL._time— Время последнего изменения файла. Тип:Nullable(DateTime). Если время неизвестно, значение —NULL.
Запись с партиционированием
Стратегия партиционирования
Поддерживается только для запросов INSERT.
WILDCARD (по умолчанию): заменяет подстановочный символ {_partition_id} в пути к файлу фактическим ключом партиции.
HIVE реализует партиционирование в стиле Hive для чтения и записи. Файлы создаются в следующем формате: <prefix>/<key1=val1/key2=val2...>/<snowflakeid>.<toLower(file_format)>.
Пример стратегии партиционирования HIVE
настройка use_hive_partitioning
Это указание для ClickHouse при разборе файлов, партиционированных в стиле Hive, во время чтения. Оно не влияет на запись. Для симметричного чтения и записи используйте аргумент partition_strategy.
Когда настройка use_hive_partitioning установлена в значение 1, ClickHouse обнаружит партиционирование в стиле Hive в пути (/name=value/) и позволит использовать столбцы партиций как виртуальные столбцы в запросе. Эти виртуальные столбцы будут иметь те же имена, что и в пути партиций.
Пример
Использование виртуального столбца, созданного с помощью партиционирования в стиле Hive
Использование Shared Access Signatures (SAS)
Shared Access Signature (SAS) — это URI, который предоставляет ограниченный доступ к контейнеру или файлу в Azure Storage. Используйте его, чтобы предоставить ограниченный по времени доступ к ресурсам учетной записи хранения без передачи ключа учетной записи хранения. Подробнее здесь.
Функция azureBlobStorage поддерживает Shared Access Signatures (SAS).
Маркер Blob SAS содержит всю необходимую для аутентификации запроса информацию, включая целевой blob-объект, права доступа и период действия. Чтобы сформировать URL-адрес для blob-объекта, добавьте SAS-маркер к конечной точке службы blob. Например, если конечная точка — https://clickhousedocstest.blob.core.windows.net/, запрос будет выглядеть так:
В качестве альтернативы пользователи могут использовать сгенерированный URL-адрес SAS для BLOB-объекта: