uso o Google Colab, digito o codigo:
1️⃣ Autenticar o Colab com as credenciais do GCP
from google.colab import auth
auth.authenticate_user()
2️⃣ Importar módulos necessários
from google.cloud import storage, bigquery
import pandas as pd
import json
3️⃣ Configurar IDs do projeto, bucket e arquivo
project_id = 'seu_projeto_id' # Substitua pelo ID do seu projeto
bucket_name = 'seu_bucket' # Substitua pelo nome do bucket
file_name = 'orders.json' # Substitua pelo nome do arquivo
4️⃣ Conectar ao GCS e baixar o arquivo
client_gcs = storage.Client(project=project_id)
bucket = client_gcs.bucket(bucket_name)
blob = bucket.blob(file_name)
file_content_str = blob.download_as_text()
Carregar JSON para Python
dados = json.loads(file_content_str)
5️⃣ Conectar ao BigQuery
client_bq = bigquery.Client(project=project_id)
Consulta SQL simples no BigQuery
consulta = """
SELECT order_id, order_status, order_purchase_timestamp,
order_estimated_delivery_date, order_delivered_customer_date
FROM seu_projeto_id.seu_dataset.orders
"""
query_job = client_bq.query(consulta)
df = query_job.to_dataframe() # 6️⃣ Converter resultados para DataFrame
7️⃣ Criar nova coluna de atraso em dias
df['atraso_dias'] = (pd.to_datetime(df['order_delivered_customer_date']) -
pd.to_datetime(df['order_estimated_delivery_date'])).dt.days
8️⃣ Carregar DataFrame transformado de volta para o BigQuery
tabela_destino = 'seu_projeto_id.seu_dataset.pedidos_atraso'
schema = [
bigquery.SchemaField("order_id", "STRING"),
bigquery.SchemaField("order_status", "STRING"),
bigquery.SchemaField("order_purchase_timestamp", "TIMESTAMP"),
bigquery.SchemaField("order_estimated_delivery_date", "TIMESTAMP"),
bigquery.SchemaField("order_delivered_customer_date", "TIMESTAMP"),
bigquery.SchemaField("atraso_dias", "INTEGER"),
]
job_config = bigquery.LoadJobConfig(
schema=schema,
write_disposition="WRITE_TRUNCATE" # Substitui tabela existente
)
job = client_bq.load_table_from_dataframe(df, tabela_destino, job_config=job_config)
job.result() # Esperar finalização do job
print(f"Tabela {tabela_destino} carregada com sucesso!")
9️⃣ Exportar DataFrame para CSV e enviar para GCS
df.to_csv('pedidos_atraso.csv', index=False)
destino_gcs = 'dados/pedidos_atraso.csv' # Caminho dentro do bucket
blob = bucket.blob(destino_gcs)
blob.upload_from_filename('pedidos_atraso.csv')
print(f"Arquivo CSV enviado para GCS: {destino_gcs}")
passo a passo
Autenticação: Google Colab com credenciais GCP.
Extração (Extract): Ler dados do GCS.
Transformação: Criar coluna atraso_diascalculando diferença entre dados.
Carga (Load):
Salvar no BigQuery (tabela pedidos_atraso).
Exportar para CSV e enviar como backup para o
