Escolher entre SQL e Python
Os LakeFlow Pipelines oferecem suporte a interfaces SQL e Python para definir pipelines em lotes e de transmissão. Ambas as interfaces produzem o mesmo gráfico de fluxo de dados subjacente, proporcionando funcionalidade equivalente para a maioria do processamento de dados. Eles diferem em flexibilidade, acessibilidade e cobertura de recursos.
Use esta orientação para decidir qual interface usar:
- Se você puder expressar sua lógica em SQL, use SQL.
- Caso seja necessário controle programático ou um recurso exclusivo de Python, utilize Python.
- Se o senhor estiver mais confortável com Python, use Python. Cobre o conjunto completo de recursos do pipeline, então a familiaridade é motivo suficiente. O mesmo não é verdade no inverso: o SQL não abrange todos os recursos, então não o escolha apenas pela familiaridade.
Você também pode combinar ambas as interfaces no mesmo pipeline. Consulte Misturar SQL e Python.
Quando usar SQL
SQL é uma boa opção quando você quer:
- **Definições legíveis e declarativas**: Lógica clara que os engenheiros de dados e analistas podem manter.
- Tipos de tabela padrão : Pipelines construídos principalmente a partir de tabelas de transmissão e visualizações materializadas.
- **Cadeias de transformações lineares**: Ingestão e transformação diretas, como um fluxo de bronze para prata para ouro, sem lógica procedural.
- Tabelas autônomas: tabelas de transmissão autônomas ou views materializadas, que o senhor elabora em SQL.
Para uma visão geral de como desenvolver pipelines em SQL, consulte Desenvolver código de LakeFlow Pipelines com SQL.
Quando usar Python
Python é uma boa opção quando você precisa:
- Controle programático : Loops, condicionais e metaprogramação para gerar definições de pipeline dinamicamente.
- Bibliotecas externas : pacotes Python como
fakerouboto3. Consulte Gerenciar dependências do Python para pipelines. - Funções definidas pelo usuário (UDFs): o senhor define UDFs em Python e pode chamá-las de arquivos de origem Python e SQL. Consulte Funções escalares definidas pelo usuário - Python.
- Recursos somente para Python :
create_auto_cdc_from_snapshot_flow()para aplicar captura de dados de alterações (CDC) de um Snapshot de banco de dados.create_sink()eforeach_batch_sink()para gravar em transmissão de eventos externos ou destinos Delta.
Para uma visão geral do desenvolvimento de pipelines em Python, consulte Desenvolver código de pipeline com Python.
Misturar SQL e Python
Um único pipeline pode combinar definições de SQL e Python, mas cada linguagem deve estar em um arquivo de origem separado. Por exemplo, você pode definir suas tabelas bronze e prata em Python e suas tabelas ouro em SQL.
Disponibilidade de recursos
A tabela a seguir compara como cada interface oferece suporte a recursos comuns de pipeline:
Recurso | SQL | Python |
|---|---|---|
tabela de streaming |
|
|
Visualização materializada |
|
|
Visão materializada compatível com Iceberg (Pré-visualização Pública) |
| Não suportado |
View temporária |
|
|
Tabela privada |
|
|
CDC Automático |
|
|
Auto CDC a partir de snapshot | Não suportado |
|
Fluxo |
|
|
Afundar | Não suportado |
|
Expectativas |
|
|
Resumo da decisão
Caso seja necessário...
Objetivo | Interface recomendada |
|---|---|
Simplicidade e legibilidade | SQL |
Configuração declarativa rápida | SQL |
Tabela de transmissão autônoma ou view materializada | SQL |
Lógica condicional ou de looping | Python |
UDFs ou bibliotecas Python externas | Python |
Auto CDC de Snapshot ou coletores | Python |
Controle programático total e modularidade | Python |