Табличная функция azureBlobStorage
Предоставляет табличный интерфейс для чтения и записи файлов в Azure Blob Storage. Эта табличная функция аналогична функции s3.
Синтаксис
Аргументы
| Аргумент | Описание |
|---|---|
connection_string| storage_account_url | connection_string включает имя и ключ учетной записи (Create connection string), либо вы можете указать здесь URL учетной записи хранилища, а имя учетной записи и ключ учетной записи — как отдельные параметры (см. параметры account_name и account_key) |
container_name | Имя контейнера |
blobpath | Путь к файлу. Поддерживает следующие подстановочные шаблоны в режиме только для чтения: *, **, ?, {abc,def} и {N..M}, где N, M — числа, 'abc', 'def' — строки. |
account_name | Если используется storage_account_url, то здесь может быть указано имя учетной записи |
account_key | Если используется storage_account_url, то здесь может быть указан ключ учетной записи |
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. |
Возвращаемое значение
Таблица заданной структуры для чтения данных из указанного файла или записи их в него.
Примеры
Аналогично движку таблиц AzureBlobStorage, пользователи могут использовать эмулятор Azurite для локальной разработки с использованием Azure Storage. Дополнительные сведения см. здесь. Ниже предполагается, что Azurite доступен по имени хоста azurite1.
Запишите данные в хранилище Azure Blob, используя следующее:
Затем его можно прочитать с помощью
или с использованием строки подключения
Виртуальные столбцы
_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-объекта: