Exemplo: resuma uma lista de registros
A maioria das automações é dado entrando e dado saindo: linhas de uma consulta, de um arquivo ou de uma API chegam, são transformadas e seguem para o próximo passo. Este exemplo faz a transformação numa lista que você passa como entrada, então roda em qualquer lugar, e devolve uma lista de objetos que o editor mostra como tabela ordenável.
- Receber uma lista de objetos como entrada
- Devolver linhas que o editor mostra como tabela
Uma lista entra, linhas saem
Um parâmetro tipado como lista de dicionários ganha um editor JSON no cartão Entradas, já preenchido com o padrão. Um resultado que é uma lista de objetos abre como tabela com busca, ordenação e exportação em CSV — e, num flow, um loop pode percorrer linha por linha.
O código
DEFAULT = [
{"city": "Recife", "total": 120.5},
{"city": "Curitiba", "total": 89.9},
{"city": "Recife", "total": 59.9},
]
def main(orders: list[dict] = DEFAULT):
by_city = {}
for o in orders:
c = by_city.setdefault(o["city"], {"city": o["city"], "orders": 0, "total": 0.0})
c["orders"] += 1
c["total"] = round(c["total"] + o["total"], 2)
rows = sorted(by_city.values(), key=lambda r: -r["total"])
print(f"{len(orders)} orders, {len(rows)} cities")
return rowsTrês detalhes deixam o resultado fácil de usar depois. Toda linha tem as mesmas chaves, então aparece como colunas. Os totais são arredondados em centavos, porque somar preços em ponto flutuante deixa caudas longas como 180.39999. E as linhas vêm ordenadas com a maior cidade primeiro, então a tabela responde à pergunta óbvia antes de alguém clicar num cabeçalho. A linha de log vai para os Logs e nunca se mistura com as linhas.
- Cole o código e clique em Executar com a lista padrão.
- Edite o JSON no campo orders — acrescente uma cidade — e rode de novo.
Vá além
Alimente com linhas de verdade: coloque um passo SQL antes dele num flow e ligue a entrada orders às linhas da consulta, ou agende e mande a tabela por e-mail — veja o exemplo do relatório.