Pular para o conteúdo

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 4
dataforge
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()