Skip to main content
Apache Airflow es una plataforma de código abierto para crear, programar y supervisar flujos de trabajo como código. Los flujos de trabajo se definen como grafos acíclicos dirigidos (DAG) de tareas escritas en Python. El proveedor apache-airflow-providers-clickhousedb conecta Airflow con ClickHouse, lo que le permite ejecutar consultas, crear tablas y cargar datos como parte de un DAG. Se conecta a través de la interfaz HTTP mediante el Client clickhouse-connect, y expone ClickHouse a través del marco SQL común de Airflow, por lo que el SQLExecuteQueryOperator estándar gestiona consultas DDL, DML y analíticas sin necesidad de un operador específico de ClickHouse.

Instala el proveedor

Instala el proveedor en el entorno donde se ejecutan el scheduler y los workers de Airflow:
El proveedor depende de apache-airflow-providers-common-sql y clickhouse-connect, que se instalan junto con él. Para pasar los resultados de la consulta a DataFrames de pandas o polars, instala los extras opcionales:

Crear una conexión de ClickHouse

El proveedor registra un tipo de conexión clickhouse. Cree una conexión desde la UI de Airflow en Admin > Connections o defínala mediante la CLI o una variable de entorno. En la UI, seleccione ClickHouse como tipo de conexión y complete los siguientes campos: Para ClickHouse Cloud o cualquier clúster autohospedado con TLS habilitado, establezca secure en true en el campo Extra y use el puerto TLS (8443).

Opciones adicionales de conexión

El proveedor expone opciones adicionales como campos específicos en el formulario de conexión. Si, en cambio, defines la conexión mediante URI, JSON o una variable de entorno, debes proporcionarlas como claves en el objeto JSON extra. Todas son opcionales:

Definir una conexión sin la UI

Configure la conexión mediante una variable de entorno. El formato URI incluye el host, las credenciales y la base de datos:
Todos los componentes del URI deben estar codificados para URL. Para TLS, los tiempos de espera o la configuración de la sesión, use el formato JSON, que expone los campos de Extra:
Todos los hooks y operadores usan el ID de conexión clickhouse_default, a menos que especifiques otro.

Ejecuta consultas con SQLExecuteQueryOperator

Configura el conn_id del operador para que use tu conexión de ClickHouse. El siguiente DAG crea una tabla, inserta filas, las lee de nuevo y elimina la tabla:
Los resultados de la consulta se obtienen con el handler predeterminado (fetch_all_handler). Para devolver algo distinto del conjunto completo de resultados, pase un handler diferente, como fetch_one_handler para devolver solo la primera fila.

Use una base de datos diferente para cada tarea

Cuando una conexión apunta a un clúster y las tareas individuales consultan distintas bases de datos, sobrescriba la base de datos mediante hook_params en lugar de crear una conexión independiente:

Usar el hook directamente

Para tareas que no encajan en un operador SQL — bulk inserts, streaming o llamadas del client específicas de ClickHouse — use ClickHouseHook dentro de una tarea de Python. El método bulk_insert_rows del hook usa la ruta de inserción columnar nativa de clickhouse-connect, que es mucho más rápida que las inserciones fila por fila para grandes volúmenes de datos. Establezca batch_size para limitar el uso máximo de memoria con entradas muy grandes:
Llama a get_client() para acceder al client subyacente de clickhouse-connect para cualquier función que el hook no exponga directamente:

Aplicar la configuración de sesión

Pasa la configuración de sesión al crear el hook, ya sea directamente o mediante el hook_params del operador. La configuración que se pasa al constructor se superpone a cualquier session_settings definido en el campo Extra de la conexión, y los valores del constructor prevalecen cuando hay conflicto entre claves:
Última modificación el 24 de julio de 2026