Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Os pipelines do Lakeflow dão suporte a interfaces SQL e Python para definir pipelines de lote e streaming. Ambas as interfaces produzem o mesmo grafo de fluxo de dados subjacente, de modo que fornecem funcionalidade equivalente para a maioria dos processamentos de dados. Elas diferem em flexibilidade, acessibilidade e cobertura de recursos.
Use estas diretrizes para decidir qual interface usar:
- Se você puder expressar sua lógica em SQL, use SQL.
- Se você precisar de controle programático ou um recurso somente Python, use Python.
- Se você estiver mais confortável com Python, use Python. Ele abrange o conjunto completo de recursos do pipeline, portanto estar familiarizado com ele já é motivo suficiente. O mesmo não é verdadeiro ao contrário: o SQL não abrange todos os recursos, portanto, não o escolha apenas na familiaridade.
Você também pode combinar ambas as interfaces no mesmo pipeline. Veja Combinar SQL e Python.
Quando usar o SQL
O SQL é uma boa opção quando você deseja:
- Definições declarativas legíveis: lógica clara que engenheiros de dados e analistas podem manter.
- Tipos de tabela padrão: pipelines compostos principalmente por tabelas de streaming e visualizações materializadas.
- Cadeias de transformação lineares: ingestão e transformação simples, como um fluxo de bronze para prata para ouro, sem lógica processual.
- Tabelas autônomas: tabelas de streaming autônomas ou exibições materializadas, que você cria no SQL.
Para obter uma visão geral do desenvolvimento de pipelines no SQL, consulte Desenvolver código de pipelines do Lakeflow com SQL.
Quando usar Python
Python é uma boa opção quando você precisa:
- Controle programático: laços, condicionais e metaprogramação para gerar definições de pipeline dinamicamente.
-
Bibliotecas externas: Python pacotes como
fakerouboto3. Consulte Gerenciar dependências do Python para pipelines. - UDFs (funções definidas pelo usuário): você define UDFs em Python e pode chamá-las de arquivos de origem Python e SQL. Consulte Python UDFs (funções escalares definidas pelo usuário).
-
Recursos exclusivos do Python:
-
create_auto_cdc_from_snapshot_flow()para aplicar a captura de dados de alterações a partir de um instantâneo do banco de dados. -
create_sink()eforeach_batch_sink()para gravar em destinos externos de streaming de eventos ou Delta.
-
Para obter uma visão geral do desenvolvimento de pipelines em Python, consulte Desenvolver código de pipeline com Python.
Misture SQL e Python
Um único pipeline pode combinar definições de SQL e Python, mas cada idioma deve estar em um arquivo de origem separado. Por exemplo, você pode definir suas tabelas bronze e prata em Python e suas tabelas de ouro no SQL.
Disponibilidade de funcionalidades
A tabela a seguir compara como cada interface dá suporte a recursos comuns de pipeline:
| Característica | SQL | Python |
|---|---|---|
| tabela de streaming | CREATE STREAMING TABLE |
create_streaming_table(), table() |
| exibição materializada | CREATE MATERIALIZED VIEW |
materialized_view() |
| Visão materializada compatível com Iceberg (Visualização Pública) |
CREATE MATERIALIZED VIEW ... USING ICEBERG. Consulte Criar uma visão materializada compatível com leitores Iceberg externos. |
Sem suporte |
| Visualização temporária | CREATE TEMPORARY VIEW |
temporary_view() |
| Tabela privada |
CREATE PRIVATE STREAMING TABLE, CREATE PRIVATE MATERIALIZED VIEW |
table(private=True) |
| CDC automático | AUTO CDC ... INTO |
create_auto_cdc_flow() |
| CDC automático a partir de instantâneo | Sem suporte | create_auto_cdc_from_snapshot_flow() |
| Flow | CREATE FLOW |
append_flow() |
| Sink | Sem suporte |
create_sink(), foreach_batch_sink() |
| Expectations | CONSTRAINT ... EXPECT |
expect(), expect_or_drop(), expect_or_fail() e as variantes expect_all |
Resumo da decisão
Se você precisar...
| Objetivo | Interface recomendada |
|---|---|
| Simplicidade e legibilidade | SQL |
| Configuração declarativa rápida | SQL |
| Tabela de streaming autônoma ou exibição materializada | SQL |
| Lógica condicional ou de repetição | Python |
| UDFs ou bibliotecas de Python externas | Python |
| CDC automático a partir de instantâneo ou coletores | Python |
| Controle programático completo e modularidade | Python |