Движок таблиц 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
- Этот флаг используется для указания, содержит ли конечная точка account_name, так как это необходимо только для некоторых методов аутентификации. (По умолчанию: true)connection_string|storage_account_url
— 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 в качестве имен файлов и формата файла в качестве расширения. По умолчанию:WILDCARD
partition_columns_in_data_file
- Используется только с стратегией партиционированияHIVE
. Указывает ClickHouse, ожидать ли записи столбцов партиции в файле данных. По умолчаниюfalse
.extra_credentials
- Используйтеclient_id
иtenant_id
для аутентификации. Если предоставлены дополнительные учетные данные, им будет предоставлено преимущество перед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
.
Аутентификация
В настоящее время существует 3 способа аутентификации:
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_configuration
clickhouse, описанного здесь
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
: