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.