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.
Instale o provedor
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
clickhouse. 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
extra. Todas são opcionais:
Defina uma conexão sem a UI
clickhouse_default, a menos que você especifique outro.
Executar consultas com SQLExecuteQueryOperator
conn_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
hook_params em vez de criar uma conexão separada:
Use o hook diretamente
ClickHouseHook 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
hook_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: