1
resposta

[Projeto] 07 Faça como eu fiz: integrar Python à nuvem

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

1 resposta

Olá! Como vai?

Parabéns pela resolução das atividades!

E para compartilhar códigos de maneira ainda mais organizada aqui no fórum, você pode utilizar a opção abaixo:

Opção inserir bloco de código, da caixa de perguntas do fórum da alura

Após clicar, irá aparecer uma estrutura da seguinte maneira:

Opção de bloco de código sendo illustrada
O resultado será o seguinte:

Copie o seu código aqui

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

AluraConte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!