Движок таблицы 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 ID в качестве имён файлов и форматом файла в качестве расширения. По умолчанию используется настройкаfile_like_engine_default_partition_strategy(wildcardпри настройкахcompatibilityстарее26.6, в противном случаеhive).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} в пути к файлу фактическим ключом партиционирования. Чтение не поддерживается. Выбирается по умолчанию только при значении настройки compatibility ниже 26.6; в противном случае по умолчанию используется hive (см. настройку file_like_engine_default_partition_strategy).
hive реализует партиционирование в стиле Hive для операций чтения и записи. Чтение реализовано с использованием рекурсивного glob-шаблона. Запись генерирует файлы в следующем формате: <prefix>/<key1=val1/key2=val2...>/<snowflakeid>.<toLower(file_format)>.
Примечание: при использовании стратегии партиционирования hive настройка use_hive_partitioning не влияет на поведение.
Пример стратегии партиционирования hive: