Olá! Vamos entender passo a passo como transformar os dados de CSV do nosso datalake para o Firestore. Vou explicar de um jeito bem simples, como se estivesse conversando com um adolescente. Vamos lá!

Preparando o Terreno

Primeiro, a gente precisa importar algumas ferramentas especiais para trabalhar com o Firebase. É como se estivéssemos pegando nossas "chaves" para entrar na casa do Firebase:

import firebase_admin
from firebase_admin import credentials, firestore, storage
import datetime

Pegando Nossa Chave Secreta

Agora, vamos pegar nossa chave secreta (que é um arquivo chamado 'datapipe.json') para poder entrar no Firebase:

file_path = 'datapipe.json'
cred = credentials.Certificate(file_path)

Abrindo a Porta do Firebase

Com nossa chave em mãos, vamos "abrir a porta" do Firebase:

firebase_admin.initialize_app(cred, {
    'storageBucket': 'datapipe-97e03.appspot.com'
})

Preparando Nossas Ferramentas

Agora que estamos dentro, vamos pegar nossas ferramentas para mexer no Firestore (que é como um armário gigante de dados) e no Storage (que é como um depósito de arquivos):

db = firestore.client()
bucket = storage.bucket()

Lendo os Arquivos do Nosso Depósito

Esta função vai olhar todos os arquivos no nosso depósito (Storage) e ler cada um deles:

def read_files_from_storage():
    blobs = bucket.list_blobs()  *# Lista todos os arquivos*
    for blob in blobs:
        file_content = blob.download_as_text()
        process_file(file_content, blob.name)

Processando Cada Arquivo

Aqui, vamos pegar cada linha do arquivo e transformar em um formato que o Firestore entenda:

def process_file(contents, file_name):
    linhas = contents.split('\\n')
    for linha in linhas:
        data_transformada = {
            'projeto': 'Datapipe',
            'data_linha': {'linha': linha},
            'tag': 'tag1',
            'data_ingestao': datetime.datetime.utcnow().isoformat()
        }
        salvar_no_firestore(data_transformada)

Guardando no Nosso Banco de Dados