CREATE TABLE
Параметры движка
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- Этот флаг указывает, содержит ли endpoint account_name, так как он нужен только для некоторых методов аутентификации. (По умолчанию: true)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).partition_strategy– Варианты:WILDCARDилиHIVE. ДляWILDCARDтребуется{_partition_id}в пути, который заменяется ключом партиционирования.HIVEне допускает подстановочных шаблонов, предполагает, что путь является корнем таблицы, и создаёт каталоги партиций в стиле Hive, где в качестве имён файлов используются Snowflake ID, а в качестве расширения — формат файла. По умолчанию —WILDCARDpartition_columns_in_data_file- Используется только со стратегией партиционированияHIVE. Указывает ClickHouse, следует ли ожидать, что столбцы партиции будут записаны в файл данных. По умолчаниюfalse.extra_credentials- Используйтеclient_idиtenant_idдля аутентификации. Если указаны extra_credentials, они имеют приоритет надaccount_nameиaccount_key.
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: