1
resposta

[Dúvida] Linhas que não estão presentes no vídeo

Essas partes estão no material baixado, mas não na aula:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade
Quais são suas funções e para contar o número de pedidos em atraso, deve ser usado a função COUNT na consulta atraso?

1 resposta

Olá, William. Como vai?

É muito comum que em cursos de Data Science o material de apoio ou os notebooks para download tragam algumas linhas de código extras. Elas servem tanto como um "desafio a mais" para os estudantes quanto para mostrar abordagens alternativas para manipular os mesmos dados.

Vamos destrinchar o que essas linhas destacadas em vermelho estão fazendo e responder à sua dúvida sobre a contagem de pedidos em atraso.


Partes 1 e 2: O que essas linhas extras fazem?

O código que você destacou mostra duas formas diferentes de lidar com os dados retornados pelo Google BigQuery:

results = query_job.result()
  • Função: Essa linha executa a query no BigQuery e guarda o resultado bruto em formato de um iterador de linhas (um objeto do SDK do Google Cloud) dentro da variável results.
  • Por que ela está aí? O professor incluiu isso para mostrar que você pode ler os dados da nuvem linha por linha diretamente, sem necessariamente precisar do Pandas.
for row in results:
    print(f"ID Pedido: {row.order_id}...")
    break
  • Função: Este laço for percorre o objeto results. A palavra-chave break no final é o segredo aqui: ela faz o loop parar imediatamente após ler a primeira linha.
  • Por que ela está aí? É uma técnica de inspeção rápida. Em vez de carregar ou imprimir uma tabela com milhares de registros na tela, o código faz um "micro-teste" imprimindo apenas uma linha para garantir que as colunas (order_id, order_status, etc.) vieram com os nomes e formatos corretos.

Como contar os pedidos em atraso: Devo usar o COUNT no SQL?

Sim, com certeza! Utilizar a função COUNT diretamente na sua consulta SQL (dentro do BigQuery) é a abordagem mais eficiente e performática no mundo real.

Abordagem 1: Fazendo a contagem na Nuvem (Melhor Prática)

Deixar o BigQuery processar o COUNT poupa memória da sua máquina e banda de internet, pois a nuvem faz todo o trabalho duro e devolve para o Python apenas um número final.

Sua consulta SQL (a variável consulta_pedidos ou uma nova chamada consulta_atrasos) seria estruturada mais ou menos assim:

SELECT COUNT(order_id) AS total_atrasos
FROM `seu_projeto.seu_dataset.seus_pedidos`
WHERE order_status = 'atrasado' 
   OR order_estimated_delivery_date < order_delivered_customer_date

Abordagem 2: Fazendo a contagem no Python (Utilizando o DataFrame)

Como o código do meio da sua imagem converteu os dados em um DataFrame do Pandas (pedidos = query_job.to_dataframe()), você também pode usar o próprio Python para filtrar e contar as linhas, caso já tenha baixado a tabela inteira:

# Filtrando as linhas onde o status é igual a 'atrasado' e medindo o tamanho
total_atrasos = len(pedidos[pedidos['order_status'] == 'atrasado'])
print(f"Quantidade de pedidos em atraso: {total_atrasos}")

Ambas as formas vão te dar exatamente o mesmo resultado numérico, mas focar no COUNT dentro da query SQL original é o que chamamos de boa prática de Query Pushdown (deixar o banco de dados robusto da nuvem fazer o cálculo).

Espero que possa ter lhe ajudado!