Pivotar e despivotar
Linhas viram colunas (a tabela dinâmica) e voltam — e a célula sem dado que sai 0.
pivotar transforma valores de uma coluna em colunas — a tabela dinâmica da planilha. despivotar faz o caminho de volta. Os dois existem porque cada forma serve a uma coisa: a larga para ler, a longa para calcular.
dataforge
adopt Arcane.Quadro as Q
v := Q.de_vaults([
{"loja": "A", "mes": "jan", "valor": 10}, {"loja": "A", "mes": "fev", "valor": 20},
{"loja": "B", "mes": "jan", "valor": 5}, {"loja": "B", "mes": "jan", "valor": 5}])
larga := v.pivotar("loja", "mes", "valor") // soma por padrao
out larga.texto()
assert larga.onde(lambda l: l["loja"] is "B").coluna("jan") is [10]
longa := larga.despivotar(["loja"], "mes", "valor")
assert longa.altura() is 4dataforge
adopt Arcane.Quadro as Q
v := Q.de_vaults([{"loja": "A", "mes": "jan"}, {"loja": "B", "mes": "jan"}, {"loja": "B", "mes": "jan"}])
t := v.tabela_cruzada("loja", "mes")
assert t.onde(lambda l: l["loja"] is "B").coluna("jan") is [2]
out t.texto()