Pular para o conteúdo

Muitos dados

Quando o arquivo não cabe: ler em pedaços, agregar sem guardar, e quando passar para um banco.

Um Quadro guarda tudo em memória. Para um arquivo de alguns milhões de linhas, isso ainda funciona; para dezenas de gigabytes, não. Três estratégias, em ordem de esforço.

EstratégiaQuandoCom
agregar enquanto lêa pergunta é uma soma, uma contagem, uma médiaum cycle sobre as linhas, sem guardar
ler em pedaçoscada pedaço é processado sozinhostream action que emite lotes
passar para um bancoa pergunta muda a cada diaSQLite com índice — Arcane.Database
dataforge
// Agregar enquanto le: memoria constante, qualquer tamanho.
stream action linhas_de(texto):
    cycle linha in texto.lines()[1:]:
        emit linha.split(",")

csv := "loja,valor\nA,10\nB,5\nA,20\nB,7"
total := {}
cycle campos in linhas_de(csv):
    loja := campos[0]
    total[loja] := (total[loja] ?? 0) + int(campos[1])

assert total is {"A": 30, "B": 12}

Para volume de verdade: Lago de dados e Parquet.