Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
O Lakeflow Spark Declarative Pipelines (SDP) suporta interfaces SQL e Python para definir pipelines em lote e streaming. Ambas as interfaces produzem o mesmo grafo subjacente de fluxo de dados, pelo que fornecem funcionalidades equivalentes para a maioria dos processamentos de dados. Diferem em flexibilidade, acessibilidade e cobertura de funcionalidades.
Use esta orientação para decidir qual interface utilizar:
- Se conseguires expressar a tua lógica em SQL, usa SQL.
- Se precisares de controlo programático ou de uma funcionalidade só para Python, usa Python.
- Se te sentires mais confortável com Python, usa Python. Cobre todo o conjunto de funcionalidades do pipeline, por isso a familiaridade já é razão suficiente. O mesmo não acontece ao contrário: o SQL não cobre todas as funcionalidades, por isso não o escolha apenas pela familiaridade.
Também podes combinar ambas as interfaces no mesmo pipeline. Consulte Mix SQL and Python.
Quando usar SQL
SQL é uma boa opção quando queres:
- Definições legíveis e declarativas: Lógica clara que engenheiros de dados e analistas podem manter.
- Tipos de tabelas padrão: Pipelines construídos maioritariamente a partir de tabelas de streaming e visualizações materializadas.
- Cadeias de transformação lineares: Ingestão e transformação diretas, como um fluxo de bronze para prata para ouro, sem lógica procedimental.
- Tabelas independentes: Tabelas de streaming independentes ou vistas materializadas, que você cria em SQL.
Para uma visão geral do desenvolvimento de pipelines em SQL, veja Desenvolver código Lakeflow Spark Declarative Pipelines com SQL.
Quando usar Python
Python é uma boa opção quando precisares de:
- Controlo programático: Ciclos, condicionais e metaprogramação para gerar definições de pipeline de forma dinâmica.
-
Bibliotecas externas: Pacotes Python como
fakerouboto3. Consulte Gerenciar dependências Python para pipelines. - Funções definidas pelo utilizador (UDFs): Defines UDFs em Python e podes chamá-los tanto a partir de ficheiros fonte em Python como em SQL. Consulte Funções escalares definidas pelo usuário - Python.
-
Funcionalidades exclusivas de Python:
-
create_auto_cdc_from_snapshot_flow()para aplicar captura de dados de alterações a partir de um snapshot de base de dados. -
create_sink()eforeach_batch_sink()para gravar em destinos externos de transmissão de eventos ou destinos Delta.
-
Para 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 linguagem deve estar num ficheiro fonte separado. Por exemplo, podes definir as tabelas bronze e silver em Python e as tabelas gold em SQL.
Disponibilidade de funcionalidades
A tabela seguinte compara como cada interface suporta funcionalidades comuns de pipeline:
| Feature | SQL | Python |
|---|---|---|
| Tabela de streaming | CREATE STREAMING TABLE |
create_streaming_table(), table() |
| vista materializada | CREATE MATERIALIZED VIEW |
materialized_view() |
| Vista temporária | CREATE TEMPORARY VIEW |
temporary_view() |
| Mesa 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 | Não suportado | create_auto_cdc_from_snapshot_flow() |
| Flow | CREATE FLOW |
append_flow() |
| Sink | Não suportado |
create_sink(), foreach_batch_sink() |
| Expectations | CONSTRAINT ... EXPECT |
expect(), expect_or_drop(), expect_or_fail(), e as expect_all variantes |
Resumo da decisão
Se precisares...
| Objetivo | Interface recomendada |
|---|---|
| Simplicidade e legibilidade | SQL |
| Configuração declarativa rápida | SQL |
| Mesa de streaming autónoma ou visualização materializada | SQL |
| Lógica condicional ou de repetição | Python |
| UDFs ou bibliotecas externas de Python | Python |
| CDC automático a partir de snapshot ou sinks | Python |
| Controlo programático total e modularidade | Python |