apache-airflow-providers-clickhousedb conecta o Airflow ao ClickHouse, permitindo executar consultas, criar tabelas e carregar dados como parte de um DAG. Ele se conecta pela interface HTTP usando o cliente clickhouse-connect e expõe o ClickHouse por meio do framework SQL padrão do Airflow, para que o SQLExecuteQueryOperator padrão lide com DDL, DML e consultas analíticas sem exigir um operador específico do ClickHouse.
Já usa o
airflow-clickhouse-plugin da comunidade? Ele utiliza um driver, protocolo e porta diferentes. Siga o
guia de migração para mover DAGs e conexões existentes para o provedor.Instale o provedor
Instale o provedor no ambiente onde o scheduler e os workers do Airflow são executados:apache-airflow-providers-common-sql e clickhouse-connect, que são instalados junto com ele. Para passar os resultados da consulta para DataFrames do pandas ou do polars, instale os extras opcionais:
Criar uma conexão com o ClickHouse
O provedor registra um tipo de conexãoclickhouse. Crie uma conexão pela UI do Airflow em Admin > Connections ou defina uma pela CLI ou por uma variável de ambiente.
Na UI, selecione ClickHouse como tipo de conexão e preencha os campos:
Para o ClickHouse Cloud ou qualquer cluster self-hosted com TLS habilitado, defina
secure como true no campo Extra e use a porta TLS (8443).
Opções extras de conexão
O provedor disponibiliza opções adicionais como campos específicos no formulário de conexão. Se, em vez disso, você definir a conexão por URI, JSON ou variável de ambiente, informe essas opções como chaves no objeto JSONextra. Todas são opcionais:
Defina uma conexão sem a UI
Defina a conexão por meio de uma variável de ambiente. O formato de URI abrange host, credenciais e banco de dados:clickhouse_default, a menos que você especifique outro.
Executar consultas com SQLExecuteQueryOperator
Defina oconn_id do operador para a sua conexão do ClickHouse. O DAG a seguir cria uma tabela, insere linhas, lê essas linhas novamente e exclui a tabela:
handler padrão (fetch_all_handler). Para retornar algo diferente do conjunto completo de resultados, passe um handler diferente, como fetch_one_handler, para retornar apenas a primeira linha.
Use um banco de dados diferente por tarefa
Quando uma conexão aponta para um cluster e tarefas individuais fazem consultas em bancos de dados diferentes, sobrescreva o banco de dados por meio dehook_params em vez de criar uma conexão separada:
Use o hook diretamente
Para casos que não se encaixam em um operador SQL — inserção em massa, streaming ou chamadas específicas do cliente ClickHouse — useClickHouseHook dentro de uma tarefa em Python.
O método bulk_insert_rows do hook usa o caminho nativo de inserção colunar em clickhouse-connect, que é muito mais rápido do que inserções linha por linha para grandes volumes de dados. Defina batch_size para limitar o pico de memória em entradas muito grandes:
get_client() para acessar o client subjacente do clickhouse-connect para tudo o que o hook não expõe diretamente:
Aplicar configurações de sessão
Passe configurações de sessão ao construir o hook, seja diretamente ou por meio dohook_params de um operador. As configurações passadas ao construtor são mescladas com quaisquer session_settings definidas no campo Extra da conexão, e os valores do construtor prevalecem em caso de conflito entre chaves: