Transformar dados com SQL e expressões
~30 minutos · um filtro, uma junção, uma coluna calculada
Grande parte do trabalho num fluxo de trabalho resume-se a um pequeno movimento repetido: pegar numa tabela, remodelá-la e escrever o resultado numa nova tabela. Este tutorial ensina esse movimento — selecionar e filtrar linhas, unir uma segunda tabela e adicionar uma coluna calculada — com as duas ferramentas a que recorre constantemente: SQL e expressões de coluna. Aprenda o padrão uma vez e aplica-se a quase todos os passos de transformação que alguma vez vai criar.
O objetivo aqui é a forma do trabalho e saber onde consultar as coisas — não memorizar funções. O PlaidCloud inclui mais de mil funções SQL; vai ligar-se à referência, nunca reproduzi-la.
O que vai criar
Seção intitulada “O que vai criar”Um único passo de tabela que lê uma tabela orders em bruto, mantém apenas as encomendas concluídas, une cada uma a uma tabela customers para obter a região e adiciona uma coluna calculada net_amount — escrevendo o resultado numa nova tabela orders_clean.
orders ─┐ ├─► select · filter · join · calculated column ─► orders_cleancustomers ─┘Todas as tabelas de origem permanecem intactas. Um passo de transformação lê de uma ou mais origens e escreve num destino — os originais ficam exatamente como estavam, o que torna um fluxo de trabalho seguro de executar de novo e de auditar.
Duas formas de dar forma a uma coluna
Seção intitulada “Duas formas de dar forma a uma coluna”Antes dos passos, a distinção que vale a pena ter presente:
| Ferramenta | O que é | Onde a escreve |
|---|---|---|
| SQL | A consulta que seleciona, filtra e une tabelas inteiras | O editor de SQL do passo |
| Expressão | Uma única fórmula que produz o valor de uma coluna, linha a linha | A célula de expressão do mapeador de colunas |
Recorre ao SQL para decidir que linhas e que tabelas. Recorre a uma expressão para decidir o que uma coluna contém. Muitos passos permitem combinar ambos — um passo SQL para dar forma ao conjunto, células de expressão para calcular as colunas.
Pré-requisitos
Seção intitulada “Pré-requisitos”- Uma área de trabalho PlaidCloud e um projeto onde trabalhar (comece uma avaliação gratuita se precisar de uma).
- Duas tabelas já existentes no projeto — este tutorial pressupõe
orders(comorder_id,customer_id,status,amount,tax) ecustomers(comcustomer_id,region). Se não as tiver, o tutorial Carregar, transformar e publicar dados importa primeiro as tabelas a partir de CSV. - Um fluxo de trabalho aberto no Workflow Explorer — abra o separador Fluxos de trabalho de um projeto e faça duplo clique no fluxo de trabalho. Consulte Criar um fluxo de trabalho se ainda não tiver um.
Passo 1: Selecionar e filtrar com SQL
Seção intitulada “Passo 1: Selecionar e filtrar com SQL”Comece de forma restrita: obtenha apenas as colunas e as linhas que realmente pretende.
-
Adicione um passo de transformação de tabela e abra o respetivo editor de SQL.
-
Aponte a origem do passo para a sua tabela
orders. -
Escreva uma consulta que mantenha apenas as colunas de que precisa e elimine as linhas de que não precisa:
SELECTorder_id,customer_id,amount,taxFROM ordersWHERE status = 'completed'AND amount > 0
Essa cláusula WHERE é o filtro — tudo o que não seja uma encomenda concluída e com valor diferente de zero nunca chega ao destino. Selecionar apenas quatro colunas em vez de SELECT * mantém a tabela seguinte enxuta e a sua intenção evidente.
Escreva SQL para ser lido. Uma cláusula por linha, uma coluna por linha,
CASE/WHENalinhados — nunca uma linha única e densa. O botão Embelezar do editor (ou Shift+Alt+F, Shift+Option+F no macOS) reformata-o no local sem alterar o que faz. Consulte Embelezar (formatar) código nos editores.
Passo 2: Unir a segunda tabela
Seção intitulada “Passo 2: Unir a segunda tabela”Uma junção traz colunas de uma segunda tabela para junto da primeira, associadas por uma chave comum. Aqui pretende a region de cada encomenda, que se encontra em customers.
-
Adicione
customerscomo segunda origem do passo. -
Alargue a consulta para unir pela chave comum e obter a coluna de que precisa:
SELECTo.order_id,o.customer_id,o.amount,o.tax,c.regionFROM orders AS oINNER JOIN customers AS cON o.customer_id = c.customer_idWHERE o.status = 'completed'AND o.amount > 0
INNER JOIN mantém apenas as encomendas que têm um cliente correspondente. Se preferir manter todas as encomendas mesmo quando nenhum cliente corresponde — com region a nulo — use antes LEFT JOIN. Uma chave de junção incorreta ou que não corresponde é a causa mais comum de uma junção que devolve linhas a mais ou a menos, por isso confirme o número de linhas na pré-visualização (próximo passo) antes de avançar.
Nomes de tabelas na consulta. Refira cada origem pelo nome que o passo lhe atribui. Nos armazéns Lakehouse predefinidos, o id físico de uma tabela pode conter hífenes — nesse caso, coloque-o entre acentos graves (por exemplo
`analyzetable_9f3c...`) para que o motor o leia como um único identificador.
Passo 3: Adicionar uma coluna calculada com uma expressão
Seção intitulada “Passo 3: Adicionar uma coluna calculada com uma expressão”Agora calcule um valor que não existe em nenhuma das origens. Uma coluna calculada (de expressão) executa uma fórmula por linha e escreve o resultado numa nova coluna. Adicione net_amount — o valor depois de impostos.
-
No mapeador de colunas do passo, adicione uma nova coluna de destino com o nome
net_amount. -
Na respetiva célula de expressão, escreva a fórmula:
amount - tax -
Para qualquer situação condicional, as expressões incluem a lógica habitual. Por exemplo, um indicador de envio:
("free"if amount >= 100else "standard")
Uma célula de expressão é uma única fórmula, não um script. É avaliada como uma expressão simples, pelo que uma expressão de várias linhas tem de incluir os seus próprios parênteses exteriores (como acima) — caso contrário, falha na execução. Limite cada célula ao valor de uma coluna; use o passo SQL para tudo o que abranja várias linhas ou tabelas.
A existência de uma determinada função, e o comportamento exato dos seus argumentos, depende da geração do Lakehouse em que o seu projeto é executado — as duas seguem motores de base diferentes. Não adivinhe o nome de uma função; consulte-o:
| Lakehouse | Biblioteca de funções |
|---|---|
| v1 | Funções SQL do Databend |
| v2 | Funções SQL do StarRocks 4.1 |
A referência de expressões é o ponto de partida — operações com texto, cálculo de datas, lógica condicional, conversão de tipos e agregações — com a sintaxe canónica de origem ligada para cada geração. Trate-a como a consulta a que regressa, não como algo para ler de uma ponta à outra.
O Embelezar também formata células de expressão, aplicando o espaçamento e as quebras de linha habituais do Python — útil para uma condicional longa.
Passo 4: Pré-visualizar antes de executar
Seção intitulada “Passo 4: Pré-visualizar antes de executar”Não precisa de executar todo o fluxo de trabalho para ver se o passo fez o que pretendia. O painel lateral Pré-visualização de dados mostra o resultado de um passo — as primeiras 100 linhas com colunas tipificadas — diretamente no Workflow Explorer.
- Execute apenas este passo para que produza a tabela de saída. (Enquanto não tiver sido executado uma vez, a pré-visualização indica “No data yet — run the step to generate this table.”)
- Abra a pré-visualização: selecione o passo e escolha Pré-visualizar dados de saída (também no menu de contexto do passo).
- Confirme a forma: as colunas que selecionou estão presentes, a
regionveio da junção, anet_amountfoi calculada corretamente e o número de linhas reflete o filtro.
Com o painel aberto, selecionar qualquer outro passo redireciona a pré-visualização para o resultado desse passo — percorra uma cadeia de passos e veja os dados mudarem de forma em cada fase. Para ver além das primeiras 100 linhas, ou para segmentar e filtrar, clique em Abrir no Explorador de tabelas. Os detalhes completos estão em Pré-visualizar dados de um passo.
O padrão, generalizado
Seção intitulada “O padrão, generalizado”Cada um destes movimentos é a mesma primitiva:
Ler uma ou mais tabelas de origem, remodelá-las, escrever um novo destino. O SQL decide as linhas e as tabelas; as expressões decidem o valor de cada coluna; a pré-visualização confirma o resultado antes de se comprometer com uma execução completa. Encadeie alguns destes e tem um pipeline — o destino de cada passo passa a ser a origem do seguinte.
Escreva os resultados intermédios em tabelas quando um passo posterior ou um painel de controlo precisar dos dados materializados, e em vistas quando preferir calcular na leitura e poupar armazenamento — uma vista não contém dados próprios e atualiza-se automaticamente quando as suas origens mudam.
Quando uma transformação ultrapassa por completo o SQL e as expressões — Python à medida, um pacote externo, lógica personalizada — recorra a um passo User Defined Transform. Isso é a exceção, não o caso do dia a dia; o SQL e as expressões cobrem a esmagadora maioria do trabalho de modelação.
Para onde ir a seguir
Seção intitulada “Para onde ir a seguir”- Referência de expressões — todas as funções disponíveis para colunas calculadas, por geração do Lakehouse.
- Referência dos passos de fluxo de trabalho — o catálogo completo de passos de transformação, importação e exportação.
- Guia de fluxos de trabalho — condições, ciclos, variáveis e tratamento de erros em torno dos seus passos.
- Pré-visualizar dados de um passo — o painel lateral, em pormenor.
- Carregar, transformar e publicar dados — o pipeline completo em que este passo se integra.