Saltar al contenido principal
Este motor ofrece integración con el ecosistema de Azure Blob Storage.

CREATE TABLE

CREATE TABLE azure_blob_storage_table (name String, value UInt32)
    ENGINE = AzureBlobStorage(connection_string|storage_account_url, container_name, blobpath, [account_name, account_key, format, compression, partition_strategy, partition_columns_in_data_file, extra_credentials(client_id=, tenant_id=)])
    [PARTITION BY expr]
    [SETTINGS ...]

Parámetros del motor

  • endpoint — URL del endpoint de AzureBlobStorage con contenedor y prefijo. Opcionalmente, puede incluir account_name si el método de autenticación utilizado lo requiere. (http://azurite1:{port}/[account_name]{container_name}/{data_prefix}) o estos parámetros pueden proporcionarse por separado mediante storage_account_url, account_name y container. Para especificar el prefijo, se debe usar endpoint.
  • endpoint_contains_account_name - Esta marca se usa para indicar si endpoint incluye account_name, ya que solo es necesario para ciertos métodos de autenticación. (Valor predeterminado: true)
  • connection_string|storage_account_url — connection_string incluye el nombre y la clave de la cuenta (Crear una connection string) o también puede proporcionar aquí la URL de la cuenta de almacenamiento, así como el nombre y la clave de la cuenta como parámetros independientes (consulte los parámetros account_name y account_key)
  • container_name - Nombre del contenedor
  • blobpath - ruta del archivo. Admite los siguientes comodines en modo readonly: *, **, ?, {abc,def} y {N..M}, donde N, M — números, 'abc', 'def' — cadenas.
  • account_name - si se usa storage_account_url, aquí puede especificarse el nombre de la cuenta
  • account_key - si se usa storage_account_url, aquí puede especificarse la clave de la cuenta
  • format — El formato del archivo.
  • compression — Valores admitidos: none, gzip/gz, brotli/br, xz/LZMA, zstd/zst. De forma predeterminada, detectará automáticamente la compresión según la extensión del archivo. (equivale a establecer auto).
  • partition_strategy – Opciones: WILDCARD o HIVE. WILDCARD requiere {_partition_id} en la ruta, que se sustituye por la clave de partición. HIVE no permite comodines, asume que la ruta es la raíz de la tabla y genera directorios particionados con estilo Hive, con ID de Snowflake como nombres de archivo y el formato de archivo como extensión. El valor predeterminado es WILDCARD
  • partition_columns_in_data_file - Solo se usa con la estrategia de partición HIVE. Indica a ClickHouse si debe esperar que las columnas de partición se escriban en el archivo de datos. El valor predeterminado es false.
  • extra_credentials - Use client_id y tenant_id para la autenticación. Si se proporcionan extra_credentials, tienen prioridad sobre account_name y account_key.
Ejemplo Los usuarios pueden usar el emulador Azurite para el desarrollo local de Azure Storage. Más detalles aquí. Si usa una instancia local de Azurite, puede que deba sustituir http://localhost:10000 por http://azurite1:10000 en los comandos siguientes, donde asumimos que Azurite está disponible en el host azurite1.
CREATE TABLE test_table (key UInt64, data String)
    ENGINE = AzureBlobStorage('DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;BlobEndpoint=http://azurite1:10000/devstoreaccount1/;', 'testcontainer', 'test_table', 'CSV');

INSERT INTO test_table VALUES (1, 'a'), (2, 'b'), (3, 'c');

SELECT * FROM test_table;
┌─key──┬─data──┐
│  1   │   a   │
│  2   │   b   │
│  3   │   c   │
└──────┴───────┘

Columnas virtuales

  • _path — Ruta del archivo. Tipo: LowCardinality(String).
  • _file — Nombre del archivo. Tipo: LowCardinality(String).
  • _size — Tamaño del archivo en bytes. Tipo: Nullable(UInt64). Si se desconoce el tamaño, el valor es NULL.
  • _time — Hora de la última modificación del archivo. Tipo: Nullable(DateTime). Si se desconoce la hora, el valor es NULL.

Autenticación

Actualmente, hay 3 formas de autenticarse:
  • Managed Identity - Se puede usar proporcionando un endpoint, connection_string o storage_account_url.
  • SAS Token - Se puede usar proporcionando un endpoint, connection_string o storage_account_url. Se identifica por la presencia de ? en la URL. Consulta azureBlobStorage para ver ejemplos.
  • Workload Identity - Se puede usar proporcionando un endpoint o storage_account_url. Si el parámetro use_workload_identity está establecido en la configuración, se usa workload identity para la autenticación.

Caché de datos

El motor de tabla Azure admite el almacenamiento en caché de datos en disco local. Consulte las opciones de configuración y el uso de la caché del sistema de archivos en esta sección. La caché se basa en la ruta y el ETag del objeto de almacenamiento, por lo que ClickHouse no leerá una versión obsoleta de la caché. Para habilitar la caché, use la configuración filesystem_cache_name = '<name>' y enable_filesystem_cache = 1.
SELECT *
FROM azureBlobStorage('DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;BlobEndpoint=http://azurite1:10000/devstoreaccount1/;', 'testcontainer', 'test_table', 'CSV')
SETTINGS filesystem_cache_name = 'cache_for_azure', enable_filesystem_cache = 1;
  1. añade la siguiente sección al archivo de configuración de ClickHouse:
<clickhouse>
    <filesystem_caches>
        <cache_for_azure>
            <path>path to cache directory</path>
            <max_size>10Gi</max_size>
        </cache_for_azure>
    </filesystem_caches>
</clickhouse>
  1. reutilizar la configuración de la caché (y, por lo tanto, el almacenamiento en caché) de la sección storage_configuration de ClickHouse, descrita aquí

PARTITION BY

PARTITION BY — Opcional. En la mayoría de los casos no necesita una clave de partición y, si la necesita, por lo general no hace falta que sea más granular que por mes. El particionado no acelera las consultas (a diferencia de la expresión ORDER BY). Nunca debe usar un particionado demasiado granular. No particione sus datos por identificadores o nombres de clientes (en su lugar, haga que el identificador o nombre del cliente sea la primera columna de la expresión ORDER BY). Para particionar por mes, use la expresión toYYYYMM(date_column), donde date_column es una columna de tipo Date. Los nombres de las particiones aquí tienen el formato "YYYYMM".

Estrategia de partición

WILDCARD (por defecto): sustituye el comodín {_partition_id} en la ruta del archivo por la clave de partición real. No admite lectura. HIVE implementa el particionamiento de estilo Hive para lectura y escritura. La lectura se implementa mediante un patrón glob recursivo. La escritura genera archivos con el siguiente formato: <prefix>/<key1=val1/key2=val2...>/<snowflakeid>.<toLower(file_format)>. Nota: al usar la estrategia de partición HIVE, la configuración use_hive_partitioning no tiene efecto. Ejemplo de estrategia de partición HIVE:
arthur :) create table azure_table (year UInt16, country String, counter UInt8) ENGINE=AzureBlobStorage(account_name='devstoreaccount1', account_key='Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==', storage_account_url = 'http://localhost:30000/devstoreaccount1', container='cont', blob_path='hive_partitioned', format='Parquet', compression='auto', partition_strategy='hive') PARTITION BY (year, country);

arthur :) insert into azure_table values (2020, 'Russia', 1), (2021, 'Brazil', 2);

arthur :) select _path, * from azure_table;

   ┌─_path──────────────────────────────────────────────────────────────────────┬─year─┬─country─┬─counter─┐
1. │ cont/hive_partitioned/year=2020/country=Russia/7351305360873664512.parquet2020 │ Russia  │       1
2. │ cont/hive_partitioned/year=2021/country=Brazil/7351305360894636032.parquet2021 │ Brazil  │       2
   └────────────────────────────────────────────────────────────────────────────┴──────┴─────────┴─────────┘

Véase también

Función de tabla de Azure Blob Storage
Última modificación el 10 de junio de 2026