Табличный движок AzureBlobStorage
Этот движок предоставляет интеграцию с экосистемой Azure Blob Storage.
Создание таблицы
Параметры движка
endpoint— URL конечной точки AzureBlobStorage с контейнером и префиксом. Дополнительно может содержатьaccount_name, если это требуется используемому методу аутентификации (http://azurite1:{port}/[account_name]{container_name}/{data_prefix}), либо эти параметры могут быть переданы отдельно с помощьюstorage_account_url,account_nameиcontainer. Для указания префикса должен использоватьсяendpoint.endpoint_contains_account_name— флаг, указывающий, содержит лиendpointaccount_name, так как это требуется только для некоторых методов аутентификации. (По умолчанию:true)connection_string|storage_account_url—connection_stringвключает имя учетной записи и ключ (Create connection string), либо здесь также можно указать URL учетной записи хранилища, а имя учетной записи и ключ учетной записи передать отдельными параметрами (см. параметрыaccount_nameиaccount_key).container_name— имя контейнера.blobpath— путь к файлу. Поддерживает следующие шаблоны (wildcards) в режиме только для чтения:*,**,?,{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).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.
Пример
Пользователи могут использовать эмулятор Azurite для локальной разработки с Azure Storage. Дополнительные сведения — здесь. При использовании локального экземпляра Azurite пользователям может потребоваться заменить http://localhost:10000 на http://azurite1:10000 в командах ниже, если предполагается, что Azurite доступен по хосту azurite1.
Виртуальные столбцы
_path— Путь к файлу. Тип:LowCardinality(String)._file— Имя файла. Тип:LowCardinality(String)._size— Размер файла в байтах. Тип:Nullable(UInt64). Если размер неизвестен, значение равноNULL._time— Время последнего изменения файла. Тип:Nullable(DateTime). Если время неизвестно, значение равноNULL.
Аутентификация
В настоящее время есть три способа аутентификации:
Managed Identity— может использоваться при указанииendpoint,connection_stringилиstorage_account_url.SAS Token— может использоваться при указанииendpoint,connection_stringилиstorage_account_url. Определяется по наличию символа '?' в URL. См. раздел azureBlobStorage с примерами.Workload Identity— может использоваться при указанииendpointилиstorage_account_url. Если параметрuse_workload_identityустановлен в конфигурации, для аутентификации используется механизм workload identity.
Кэш данных
Движок таблиц Azure поддерживает кэширование данных на локальном диске.
Параметры конфигурации и использование кэша файловой системы описаны в этом разделе.
Кэширование выполняется в зависимости от пути и ETag объекта хранилища, поэтому ClickHouse не будет читать устаревшую версию кэша.
Чтобы включить кэширование, используйте настройки filesystem_cache_name = '<name>' и enable_filesystem_cache = 1.
- добавьте следующий раздел в конфигурационный файл ClickHouse:
- повторно используйте конфигурацию кеша (и, соответственно, хранилище кеша) из секции
storage_configurationClickHouse, описанной здесь
PARTITION BY
PARTITION BY — необязательный параметр. В большинстве случаев ключ партиционирования не нужен, а когда он все же требуется, обычно нет необходимости делать его более детализированным, чем по месяцам. Партиционирование не ускоряет выполнение запросов (в отличие от выражения ORDER BY). Не следует использовать слишком детализированное партиционирование. Не партиционируйте данные по идентификаторам или именам клиентов (вместо этого сделайте идентификатор или имя клиента первым столбцом в выражении ORDER BY).
Для партиционирования по месяцам используйте выражение toYYYYMM(date_column), где date_column — это столбец с датой типа Date. Имена партиций в этом случае имеют формат "YYYYMM".
Стратегия партиционирования
WILDCARD (по умолчанию): заменяет подстановочный шаблон {_partition_id} в пути к файлу фактическим ключом партиции. Чтение не поддерживается.
HIVE реализует партиционирование в стиле Hive для операций чтения и записи. Чтение реализовано с использованием рекурсивного glob-шаблона. Запись генерирует файлы в следующем формате: <prefix>/<key1=val1/key2=val2...>/<snowflakeid>.<toLower(file_format)>.
Примечание: при использовании стратегии партиционирования HIVE настройка use_hive_partitioning не влияет на поведение.
Пример стратегии партиционирования HIVE:
┌─_path──────────────────────────────────────────────────────────────────────┬─year─┬─country─┬─counter─┐
- │ cont/hive_partitioned/year=2020/country=Russia/7351305360873664512.parquet │ 2020 │ Russia │ 1 │
- │ cont/hive_partitioned/year=2021/country=Brazil/7351305360894636032.parquet │ 2021 │ Brazil │ 2 │ └────────────────────────────────────────────────────────────────────────────┴──────┴─────────┴─────────┘