Pular para o conteúdo

Juntar quadros

Os quatro JOIN — dentro, esquerda, direita, fora — e as linhas que somem ou se multiplicam.

juntar cruza dois quadros por uma coluna em comum, como o JOIN do SQL. O tipo decide o que acontece com as linhas que não casam — e é aí que moram os erros.

dataforge
adopt Arcane.Quadro as Q

vendas := Q.de_vaults([
    {"loja": "A", "valor": 10}, {"loja": "A", "valor": 20},
    {"loja": "B", "valor": 5}, {"loja": "B", "valor": 5}])
lojas := Q.de_vaults([{"loja": "A", "cidade": "Recife"}, {"loja": "C", "cidade": "Natal"}])

assert vendas.juntar(lojas, "loja").altura() is 2             // so o que casa
assert vendas.juntar(lojas, "loja", "esquerda").altura() is 4 // toda venda
assert vendas.juntar(lojas, "loja", "fora").altura() is 5     // tudo, dos dois lados

esq := vendas.juntar(lojas, "loja", "esquerda")
assert esq.onde(lambda l: l["loja"] is "B").coluna("cidade") is [void, void]
out esq.texto()
TipoMantémUso típico
dentrosó as linhas que casam nos doisvendas com cadastro válido
esquerdatoda linha da esquerda; a direita vira void onde faltao mais comum: enriquecer sem perder venda
direitatoda linha da direitalojas, com ou sem venda
foratudo dos dois ladosconciliar duas fontes