> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-fix-nav-issues.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> Proporciona una interfaz de tipo tabla para seleccionar/insertar archivos en Azure Blob Storage. Similar a la función s3.

# Función de tabla azureBlobStorage

export const CloudNotSupportedBadge = () => {
  return <div className="cloudNotSupportedBadge">
            <div className="cloudNotSupportedIcon">
            <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
                <path strokeWidth="1.5" d="M6.33366 12.6666L12.3739 12.6667C13.6593 12.6667 14.7073 11.6187 14.7073 10.3334C14.7073 9.04804 13.6593 8.00003 12.3739 8.00003C12.3739 8.00003 12.3337 7.66659 12.0003 7.33325M10.667 5.33322C8.00033 2.33325 4.45395 4.78537 4.14195 6.68203C2.55728 6.7627 1.29395 8.06203 1.29395 9.6667C1.29395 11.3234 2.66699 12.6666 4.00033 12.6666" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
                <path strokeWidth="1.5" d="M2.66699 14L12.0003 4.66663" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
            </svg>

        </div>
            Not supported in ClickHouse Cloud
        </div>;
};

export const ExperimentalBadge = () => {
  return <div className="experimentalBadge">
            <div className="experimentalIcon">
            <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
                <path strokeWidth="1.25" d="M5.5 2H10.5" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
                <path strokeWidth="1.25" d="M9.50015 2V6.19625L13.4283 12.7425C13.4738 12.8183 13.4985 12.9049 13.4996 12.9934C13.5008 13.0818 13.4785 13.169 13.435 13.246C13.3914 13.323 13.3283 13.3871 13.2519 13.4317C13.1755 13.4764 13.0886 13.4999 13.0002 13.5H3.00015C2.91164 13.5 2.8247 13.4766 2.74822 13.432C2.67174 13.3874 2.60847 13.3233 2.56487 13.2463C2.52126 13.1693 2.49889 13.082 2.50004 12.9935C2.50119 12.905 2.52582 12.8184 2.5714 12.7425L6.50015 6.19625V2" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
                <path strokeWidth="1.25" d="M4.47656 9.56754C5.30344 9.41254 6.47656 9.47942 7.99969 10.25C10.0153 11.2707 11.4216 11.0569 12.2184 10.7282" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
            </svg>
        </div>
            Experimental feature. <u><a href="/docs/beta-and-experimental-features#experimental-features">Learn more.</a></u>
        </div>;
};

Proporciona una interfaz de tipo tabla para seleccionar/insertar archivos en [Azure Blob Storage](https://azure.microsoft.com/en-us/products/storage/blobs). Esta función de tabla es similar a la [función s3](/es/reference/functions/table-functions/s3).

<div id="syntax">
  ## Sintaxis
</div>

<Tabs>
  <Tab title="Cadena de conexión">
    Las credenciales están integradas en la cadena de conexión, por lo que no se requiere `account_name`/`account_key` por separado:

    ```sql theme={null}
    azureBlobStorage(connection_string, container_name, blobpath [, format, compression, structure])
    ```
  </Tab>

  <Tab title="URL de la cuenta de almacenamiento">
    Requiere `account_name` y `account_key` como argumentos independientes:

    ```sql theme={null}
    azureBlobStorage(storage_account_url, container_name, blobpath, account_name, account_key [, format, compression, structure])
    ```
  </Tab>

  <Tab title="Colección con nombre">
    Consulta [Colecciones con nombre](#named-collections) a continuación para ver la lista completa de claves compatibles:

    ```sql theme={null}
    azureBlobStorage(named_collection[, option=value [,..]])
    ```
  </Tab>
</Tabs>

<div id="arguments">
  ## Argumentos
</div>

| Argumento                        | Descripción                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| -------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `connection_string`              | Una cadena de conexión que incluye credenciales integradas (nombre de la cuenta + clave de la cuenta o SAS token). Al usar esta forma, `account_name` y `account_key` **no** deben pasarse por separado. Consulta [Configurar una cadena de conexión](https://learn.microsoft.com/en-us/azure/storage/common/storage-configure-connection-string?toc=%2Fazure%2Fstorage%2Fblobs%2Ftoc.json\&bc=%2Fazure%2Fstorage%2Fblobs%2Fbreadcrumb%2Ftoc.json#configure-a-connection-string-for-an-azure-storage-account). |
| `storage_account_url`            | La URL del endpoint de la cuenta de almacenamiento, por ejemplo `https://myaccount.blob.core.windows.net/`. Al usar esta forma, **debes** pasar también `account_name` y `account_key`.                                                                                                                                                                                                                                                                                                                        |
| `container_name`                 | Nombre del contenedor.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| `blobpath`                       | Ruta del archivo. Admite los siguientes comodines en modo de solo lectura: `*`, `**`, `?`, `{abc,def}` y `{N..M}`, donde `N` y `M` son números, y `'abc'` y `'def'` son cadenas.                                                                                                                                                                                                                                                                                                                               |
| `account_name`                   | Nombre de la cuenta de almacenamiento. **Obligatorio** al usar `storage_account_url` sin SAS; **no** debe pasarse al usar `connection_string`.                                                                                                                                                                                                                                                                                                                                                                 |
| `account_key`                    | Clave de la cuenta de almacenamiento. **Obligatoria** al usar `storage_account_url` sin SAS; **no** debe pasarse al usar `connection_string`.                                                                                                                                                                                                                                                                                                                                                                  |
| `format`                         | El [formato](/es/reference/formats) del archivo.                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| `compression`                    | Valores admitidos: `none`, `gzip/gz`, `brotli/br`, `xz/LZMA`, `zstd/zst`. De forma predeterminada, detectará automáticamente la compresión por la extensión del archivo (igual que si se establece `auto`).                                                                                                                                                                                                                                                                                                    |
| `structure`                      | Estructura de la tabla. Formato: `'column1_name column1_type, column2_name column2_type, ...'`.                                                                                                                                                                                                                                                                                                                                                                                                                |
| `partition_strategy`             | Opcional. Valores admitidos: `WILDCARD` o `HIVE`. `WILDCARD` requiere `{_partition_id}` en la ruta, que se reemplaza con 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 Snowflake IDs como nombres de archivo y el formato de archivo como extensión. El valor predeterminado es `WILDCARD`.                                                                                                             |
| `partition_columns_in_data_file` | Opcional. Solo se usa con la estrategia de partición `HIVE`. Indica a ClickHouse si debe esperar que las columnas de partición estén escritas en el archivo de datos. El valor predeterminado es `false`.                                                                                                                                                                                                                                                                                                      |
| `extra_credentials`              | Usa `client_id` y `tenant_id` para la autenticación. Si se proporcionan `extra_credentials`, tienen prioridad sobre `account_name` y `account_key`.                                                                                                                                                                                                                                                                                                                                                            |

<div id="named-collections">
  ## Colecciones con nombre
</div>

Los argumentos también pueden pasarse mediante [colecciones con nombre](/es/concepts/features/configuration/server-config/named-collections). En este caso, se admiten las siguientes claves:

| Key                   | Required | Description                                                                                                          |
| --------------------- | -------- | -------------------------------------------------------------------------------------------------------------------- |
| `container`           | Yes      | Nombre del contenedor. Corresponde al argumento posicional `container_name`.                                         |
| `blob_path`           | Yes      | Ruta del archivo (con comodines opcionales). Corresponde al argumento posicional `blobpath`.                         |
| `connection_string`   | No\*     | Cadena de conexión con credenciales incorporadas. \*Debe proporcionarse `connection_string` o `storage_account_url`. |
| `storage_account_url` | No\*     | URL del endpoint de la cuenta de almacenamiento. \*Debe proporcionarse `connection_string` o `storage_account_url`.  |
| `account_name`        | No       | Obligatorio cuando se usa `storage_account_url`                                                                      |
| `account_key`         | No       | Obligatorio cuando se usa `storage_account_url`                                                                      |
| `format`              | No       | Formato de archivo.                                                                                                  |
| `compression`         | No       | Tipo de compresión.                                                                                                  |
| `structure`           | No       | Estructura de la tabla.                                                                                              |
| `client_id`           | No       | ID de cliente para la autenticación.                                                                                 |
| `tenant_id`           | No       | ID del tenant para la autenticación.                                                                                 |

<Note>
  Los nombres de las claves de las colecciones con nombre son distintos de los nombres de los argumentos posicionales de la función: `container` (no `container_name`) y `blob_path` (no `blobpath`).
</Note>

**Ejemplo:**

```sql theme={null}
CREATE NAMED COLLECTION azure_my_data AS
    storage_account_url = 'https://myaccount.blob.core.windows.net/',
    container = 'mycontainer',
    blob_path = 'data/*.parquet',
    account_name = 'myaccount',
    account_key = 'mykey...==',
    format = 'Parquet';

SELECT *
FROM azureBlobStorage(azure_my_data)
LIMIT 5;
```

También puede sobrescribir los valores de la colección con nombre durante la consulta:

```sql theme={null}
SELECT *
FROM azureBlobStorage(azure_my_data, blob_path = 'other_data/*.csv', format = 'CSVWithNames')
LIMIT 5;
```

<div id="returned_value">
  ## Valor devuelto
</div>

Una tabla con la estructura especificada para leer o escribir datos en el archivo indicado.

<div id="examples">
  ## Ejemplos
</div>

<div id="reading-with-storage-account-url">
  ### Lectura con el formato `storage_account_url`
</div>

```sql theme={null}
SELECT *
FROM azureBlobStorage(
    'https://myaccount.blob.core.windows.net/',
    'mycontainer',
    'data/*.parquet',
    'myaccount',
    'mykey...==',
    'Parquet'
)
LIMIT 5;
```

<div id="reading-with-connection-string">
  ### Lectura con la forma `connection_string`
</div>

```sql theme={null}
SELECT *
FROM azureBlobStorage(
    'DefaultEndpointsProtocol=https;AccountName=myaccount;AccountKey=mykey...==;EndPointSuffix=core.windows.net',
    'mycontainer',
    'data/*.csv',
    'CSVWithNames'
)
LIMIT 5;
```

<div id="writing-with-partitions">
  ### Escritura por particiones
</div>

```sql theme={null}
INSERT INTO TABLE FUNCTION azureBlobStorage(
    'DefaultEndpointsProtocol=https;AccountName=myaccount;AccountKey=mykey...==;EndPointSuffix=core.windows.net',
    'mycontainer',
    'test_{_partition_id}.csv',
    'CSV',
    'auto',
    'column1 UInt32, column2 UInt32, column3 UInt32'
) PARTITION BY column3
VALUES (1, 2, 3), (3, 2, 1), (78, 43, 3);
```

Luego, vuelva a leer una partición específica:

```sql theme={null}
SELECT *
FROM azureBlobStorage(
    'DefaultEndpointsProtocol=https;AccountName=myaccount;AccountKey=mykey...==;EndPointSuffix=core.windows.net',
    'mycontainer',
    'test_1.csv',
    'CSV',
    'auto',
    'column1 UInt32, column2 UInt32, column3 UInt32'
);
```

```response theme={null}
┌─column1─┬─column2─┬─column3─┐
│       3 │       2 │       1 │
└─────────┴─────────┴─────────┘
```

<div id="virtual-columns">
  ## Columnas virtuales
</div>

* `_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 del archivo, el valor es `NULL`.
* `_time` — Fecha y hora de la última modificación del archivo. Tipo: `Nullable(DateTime)`. Si se desconoce la hora, el valor es `NULL`.

<div id="partitioned-write">
  ## Escritura particionada
</div>

<div id="partition-strategy">
  ### Estrategia de partición
</div>

Solo se admite para consultas `INSERT`.

`WILDCARD` (predeterminado): reemplaza el comodín `{_partition_id}` en la ruta del archivo por la clave de partición correspondiente.

`HIVE` implementa el particionamiento de estilo Hive para lecturas y escrituras. Genera archivos con el siguiente formato: `<prefix>/<key1=val1/key2=val2...>/<snowflakeid>.<toLower(file_format)>`.

**Ejemplo de estrategia de partición `HIVE`**

```sql theme={null}
INSERT INTO TABLE FUNCTION azureBlobStorage(
    azure_conf2,
    storage_account_url = 'https://myaccount.blob.core.windows.net/',
    container = 'cont',
    blob_path = 'azure_table_root',
    format = 'CSVWithNames',
    compression = 'auto',
    structure = 'year UInt16, country String, id Int32',
    partition_strategy = 'hive'
) PARTITION BY (year, country)
VALUES (2020, 'Russia', 1), (2021, 'Brazil', 2);
```

```result theme={null}
SELECT _path, * FROM azureBlobStorage(
    azure_conf2,
    storage_account_url = 'https://myaccount.blob.core.windows.net/',
    container = 'cont',
    blob_path = 'azure_table_root/**.csvwithnames'
)

   ┌─_path───────────────────────────────────────────────────────────────────────────┬─id─┬─year─┬─country─┐
1. │ cont/azure_table_root/year=2021/country=Brazil/7351307847391293440.csvwithnames │  2 │ 2021 │ Brazil  │
2. │ cont/azure_table_root/year=2020/country=Russia/7351307847378710528.csvwithnames │  1 │ 2020 │ Russia  │
   └─────────────────────────────────────────────────────────────────────────────────┴────┴──────┴─────────┘
```

<div id="hive-style-partitioning">
  ## ajuste `use_hive_partitioning`
</div>

Esta es una indicación para que ClickHouse analice archivos particionados con estilo Hive en el momento de la lectura. No tiene efecto al escribir. Para que la lectura y la escritura sean simétricas, use el argumento `partition_strategy`.

Cuando `use_hive_partitioning` se establece en 1, ClickHouse detecta el particionamiento de estilo Hive en la ruta (`/name=value/`) y permite usar las columnas de partición como columnas virtuales en la consulta. Estas columnas virtuales tendrán los mismos nombres que en la ruta particionada.

**Ejemplo**

Use una columna virtual creada con particionamiento de estilo Hive

```sql theme={null}
SELECT * FROM azureBlobStorage(config, storage_account_url='...', container='...', blob_path='http://data/path/date=*/country=*/code=*/*.parquet') WHERE date > '2020-01-01' AND country = 'Netherlands' AND code = 42;
```

<div id="using-shared-access-signatures-sas-sas-tokens">
  ## Uso de firmas de acceso compartido (SAS)
</div>

Una firma de acceso compartido (SAS) es un URI que concede acceso restringido a un contenedor o archivo de Azure Storage. Úsela para proporcionar acceso temporal a los recursos de una cuenta de almacenamiento sin compartir la clave de la cuenta. Más información [aquí](https://learn.microsoft.com/en-us/rest/api/storageservices/delegate-access-with-shared-access-signature).

La función `azureBlobStorage` admite firmas de acceso compartido (SAS).

Un [token SAS de blob](https://learn.microsoft.com/en-us/azure/ai-services/translator/document-translation/how-to-guides/create-sas-tokens?tabs=Containers) contiene toda la información necesaria para autenticar la solicitud, incluido el blob de destino, los permisos y el período de validez. Para construir una URL de blob, agregue el token SAS al endpoint del servicio Blob. Por ejemplo, si el endpoint es `https://clickhousedocstest.blob.core.windows.net/`, la solicitud pasa a ser:

```sql theme={null}
SELECT count()
FROM azureBlobStorage('BlobEndpoint=https://clickhousedocstest.blob.core.windows.net/;SharedAccessSignature=sp=r&st=2025-01-29T14:58:11Z&se=2025-01-29T22:58:11Z&spr=https&sv=2022-11-02&sr=c&sig=Ac2U0xl4tm%2Fp7m55IilWl1yHwk%2FJG0Uk6rMVuOiD0eE%3D', 'exampledatasets', 'example.csv')

┌─count()─┐
│      10 │
└─────────┘

1 row in set. Elapsed: 0.425 sec.
```

Como alternativa, los usuarios pueden usar la [URL SAS del blob](https://learn.microsoft.com/en-us/azure/ai-services/translator/document-translation/how-to-guides/create-sas-tokens?tabs=Containers):

```sql theme={null}
SELECT count()
FROM azureBlobStorage('https://clickhousedocstest.blob.core.windows.net/?sp=r&st=2025-01-29T14:58:11Z&se=2025-01-29T22:58:11Z&spr=https&sv=2022-11-02&sr=c&sig=Ac2U0xl4tm%2Fp7m55IilWl1yHwk%2FJG0Uk6rMVuOiD0eE%3D', 'exampledatasets', 'example.csv')

┌─count()─┐
│      10 │
└─────────┘

1 row in set. Elapsed: 0.153 sec.
```

<div id="related">
  ## Relacionado
</div>

* [Motor de tabla AzureBlobStorage](/es/reference/engines/table-engines/integrations/azureBlobStorage)
