Skip to main content

accumulate

Acumular

Percorre os registos por grupo e por ordem e leva saldos de um para o seguinte, com regras.

  • Kind: step
  • Key: accumulate
  • Categoria: transform
  • Envelope: mapa (um objeto JSON em config)

Campos​

ChaveTipoObrigatórioOmissãoDescriçãoReferência
groupBylist de stringnão[]Colunas do grupo, pelos nomes do envelope: cada grupo tem os seus saldos. Vazio = um só grupo. Um registo sem valor numa delas passa sem ser percorrido (no_group).-
orderBylist de mapsim[]A ordem do percurso dentro de cada grupo.-
tieBreakexpressionnão""Desempate opcional depois da ordem, sobre row.x. Ex.: if(row.tipo == 'entrada', 0, 1) põe as entradas antes das saídas do mesmo dia.expressões {{record.coluna}}
openingSourceuuidnão""Carimbo _source do conjunto de abertura (opcional): o id da tabela lida em append. Casa pelo grupo; a última de cada grupo vale. É consumido.feature (uuid)
balanceslist de mapsim[]Os saldos com nome que correm de registo em registo.-
ruleslist de mapsim[]As regras, por ordem. Sem continue, a primeira que casa é a última. Um registo sem regra passa com os saldos como estavam.-
writeBacklist de stringnão[]Saldos escritos em cada registo, com o nome do saldo, já depois dele.-
finalBalancesbooleannãofalseUm registo por grupo com as colunas do grupo e os saldos finais (_source = id do passo).-

orderBy[]​

Cada elemento de orderBy é um objeto:

ChaveTipoObrigatórioOmissãoDescriçãoReferência
columnstringsim-Coluna, pelo nome que tem no envelope.-
descendingbooleannãofalseDo maior para o menor.-

balances[]​

Cada elemento de balances é um objeto:

ChaveTipoObrigatórioOmissãoDescriçãoReferência
namestringsim-Nome do saldo: before.<nome> e after.<nome> nas fórmulas, e nome da coluna escrita.-
startnumbernão0Valor inicial quando não há abertura (ou campo) no grupo.-
openingFieldstringnão""Campo do registo de abertura com o valor inicial.-
decimalsintegernão-Casas decimais à saída; o saldo corre sem arredondar.-

rules[]​

Cada elemento de rules é um objeto:

ChaveTipoObrigatórioOmissãoDescriçãoReferência
labelstringnão""Nome da regra, para as anotações.-
conditionexpressionnão""Fórmula com row.x, before.x (saldos antes do registo) e after.x (saldos já mexidos). Ex.: row.tipo == 'saida' and before.custo_medio == 0. Vazia casa sempre.expressões {{record.coluna}}
effectslist de mapnão[]Correm por ordem: um saldo definido fica em after.x, uma coluna escrita fica em row.x.-
continuebooleannãofalseAs regras seguintes também se aplicam.-

rules[].effects[]​

Cada elemento de rules[].effects é um objeto:

ChaveTipoObrigatórioOmissãoDescriçãoReferência
kindenumerationnão"balance"Saldo ou coluna do registo.-
targetstringsim-O saldo ou a coluna.-
expressionexpressionnão""Ex.: before.saldo + row.quantidade. Uma falha marca o registo formula_error e o run segue.expressões {{record.coluna}}
decimalsintegernão-Só nas colunas: casas decimais.-

Exemplo JSON​

{
"groupBy": [],
"orderBy": [],
"tieBreak": "",
"openingSource": "$f_exemplo",
"balances": [],
"rules": [],
"writeBack": [],
"finalBalances": false
}

Gerado de definitions.json versão 35a57cb3aa07. Esta página nasce no build: não se edita à mão.