Pular para conteúdo

lakehouse reader

fonte

lê uma tabela de qualquer camada (bronze, silver, gold) de qualquer lakehouse do workspace, com seleção de colunas, filtros, agregação e sql customizado — sem precisar conhecer o caminho físico dos dados.


quando usar

  • encadear pipelines: o resultado de um pipeline (ex: bronze) alimenta o próximo (ex: silver)
  • montar um pipeline de transformação/agregação inteiramente sobre dados que já estão no lakehouse
  • implementar a arquitetura medallion completa (bronze → silver → gold) com um lakehouse writer ao final de cada etapa e um lakehouse reader no início da seguinte
  • fazer consultas analíticas ad hoc (com filtros e agregação) sobre uma tabela já governada, sem duplicar dados

configuração

origem dos dados

campo tipo obrigatório descrição
layer string sim slug do lakehouse de origem (ex: lh_01_bronze)
lakehouse_display_name string não nome de exibição do lakehouse (apenas informativo)
table_name string sim nome da tabela dentro do lakehouse
lakehouse_id uuid não força um lakehouse específico do workspace, em vez de resolver por nome/slug
format enum não parquet (padrão) ou iceberg — iceberg habilita time travel

modo de consulta

o nó tem dois modos de edição, escolhidos no campo mode:

modo como funciona
lowcode monta a consulta visualmente a partir de selected_columns, where_conditions, group_by e order_by
sql você escreve o sql livremente em custom_sql

modo lowcode

campo tipo descrição
selected_columns lista colunas a incluir no resultado · vazio = todas as colunas
where_conditions lista de {field, operator, value} filtros combinados com AND · operadores: =, !=, >, >=, <, <=, LIKE, IN, IS NULL, IS NOT NULL
group_by lista colunas para agrupamento
order_by lista de {field, direction} ordenação · direction: ASC ou DESC

modo sql

campo tipo descrição
custom_sql string consulta sql livre sobre a tabela selecionada

time travel (somente format="iceberg")

campo tipo descrição
snapshot_id string lê a tabela exatamente nesse snapshot (tem prioridade sobre as_of_timestamp)
as_of_timestamp string (iso 8601) lê o snapshot mais recente disponível até esse instante
iceberg_namespace string namespace iceberg, quando diferente do padrão do workspace

exemplos

lowcode — seleção simples com filtro

{
  "mode": "lowcode",
  "layer": "lh_01_silver",
  "table_name": "clientes",
  "selected_columns": ["id", "nome", "email", "plano"],
  "where_conditions": [
    { "field": "plano", "operator": "=", "value": "premium" }
  ],
  "order_by": [{ "field": "nome", "direction": "ASC" }]
}

lowcode — agregação

{
  "mode": "lowcode",
  "layer": "lh_01_gold",
  "table_name": "vendas",
  "selected_columns": ["regiao", "total_vendido"],
  "group_by": ["regiao"]
}

sql customizado

{
  "mode": "sql",
  "layer": "lh_01_bronze",
  "table_name": "pedidos",
  "custom_sql": "SELECT cliente_id, COUNT(*) AS total_pedidos FROM bronze__pedidos GROUP BY cliente_id HAVING COUNT(*) > 10"
}

no modo sql, referencie a tabela de origem usando o alias {layer}__{table_name} (no exemplo acima, bronze__pedidos) — a plataforma resolve esse alias para a tabela real do lakehouse automaticamente.

time travel (iceberg)

{
  "format": "iceberg",
  "layer": "lh_01_gold",
  "table_name": "vendas_mensais",
  "as_of_timestamp": "2026-06-01T00:00:00Z"
}

lê a tabela vendas_mensais exatamente como ela estava até 2026-06-01, mesmo que tenha sido sobrescrita depois — útil para auditoria e reprocessamento histórico.


pipeline medallion típico

pipeline bronze:
  [fonte externa] → [schema cast] → [lakehouse writer: camada bronze]

pipeline silver:
  [lakehouse reader: bronze] → [fábrica / quality gate] → [lakehouse writer: camada silver]

pipeline gold:
  [lakehouse reader: silver] → [agregação] → [lakehouse writer: camada gold]

dados não encontrados

se a tabela ainda não existir na camada informada (nenhum pipeline escreveu nela ainda), o nó retorna um erro. garanta que o pipeline produtor (com um lakehouse writer) já foi executado com sucesso antes de rodar o consumidor.