Skip to content

ASN-ROCKS/olist-ativacao-t06

Repository files navigation

Breve descritivo das variáveis

Variável Descrição da variável Como foi criada Dependência
seller_id Identificador único do vendedor. Mantido diretamente da tabela sellers. workspace.olist.sellers
seller_city Cidade cadastrada do seller. MAX(seller_city) no agrupamento por seller. seller_city
seller_state UF cadastrada do seller. MAX(seller_state) no agrupamento por seller. seller_state
regiao_seller Região geográfica brasileira onde o seller está localizado. CASE em cima da UF do seller. seller_state
flag_seller_capital Indica se a cidade do seller é uma capital brasileira. CASE verificando se seller_city está na lista de capitais. seller_city
volume_total_pedidos_estado_seller Volume total de pedidos feitos por sellers localizados no mesmo estado daquele seller. COUNT(DISTINCT order_id) agrupado por seller_state. seller_state, order_id
volume_total_pedidos_cidade_seller Volume total de pedidos feitos por sellers localizados na mesma cidade daquele seller. COUNT(DISTINCT order_id) agrupado por seller_state e seller_city. seller_state, seller_city, order_id
qtd_pedidos_seller Total de pedidos do seller no período analisado. COUNT(DISTINCT order_id) por seller_id. seller_id, order_id
receita_total_seller Receita total gerada pelo seller no período. SUM(price + freight_value) agregado por seller. price, freight_value, seller_id
qtd_ufs_atendidas Quantidade de UFs diferentes para onde o seller vendeu. COUNT(DISTINCT customer_state) por seller. customer_state
qtd_cidades_atendidas Quantidade de cidades diferentes para onde o seller vendeu. COUNT(DISTINCT CONCAT(customer_state, customer_city)). customer_state, customer_city
qtd_pedidos_proprio_estado Quantidade de pedidos em que o cliente está no mesmo estado do seller. Conta pedidos onde customer_state = seller_state. seller_state, customer_state, order_id
qtd_pedidos_propria_cidade Quantidade de pedidos em que o cliente está na mesma cidade do seller. Conta pedidos onde customer_state = seller_state e customer_city = seller_city. seller_state, seller_city, customer_state, customer_city, order_id
pct_pedidos_proprio_estado Percentual dos pedidos do seller entregues no próprio estado. qtd_pedidos_proprio_estado / qtd_pedidos_seller. qtd_pedidos_proprio_estado, qtd_pedidos_seller
pct_pedidos_propria_cidade Percentual dos pedidos do seller entregues na própria cidade. qtd_pedidos_propria_cidade / qtd_pedidos_seller. qtd_pedidos_propria_cidade, qtd_pedidos_seller
participacao_pedidos_seller_proprio_estado Participação do seller nos pedidos totais do seu próprio estado de destino. Pedidos do seller no próprio estado divididos pelo total de pedidos daquele estado. qtd_pedidos_proprio_estado, qtd_pedidos_total_estado_destino
participacao_pedidos_seller_propria_cidade Participação do seller nos pedidos totais da sua própria cidade de destino. Pedidos do seller na própria cidade divididos pelo total de pedidos daquela cidade. qtd_pedidos_propria_cidade, qtd_pedidos_total_cidade_destino
rank_seller_pedidos_estado Ranking do seller em volume de pedidos dentro do seu estado. RANK() particionado por seller_state, ordenando por qtd_pedidos_seller DESC. seller_state, qtd_pedidos_seller
rank_seller_pedidos_cidade Ranking do seller em volume de pedidos dentro da sua cidade. RANK() particionado por seller_state e seller_city, ordenando por qtd_pedidos_seller DESC. seller_state, seller_city, qtd_pedidos_seller
receita_proprio_estado Receita do seller gerada por pedidos entregues no próprio estado. Soma da receita quando customer_state = seller_state. receita_total, seller_state, customer_state
receita_propria_cidade Receita do seller gerada por pedidos entregues na própria cidade. Soma da receita quando customer_state = seller_state e customer_city = seller_city. receita_total, seller_city, customer_city
participacao_receita_proprio_estado Participação da receita do seller dentro da receita total do próprio estado de destino. receita_proprio_estado / receita_total_estado_destino. receita_proprio_estado, receita_total_estado_destino
participacao_receita_propria_cidade Participação da receita do seller dentro da receita total da própria cidade de destino. receita_propria_cidade / receita_total_cidade_destino. receita_propria_cidade, receita_total_cidade_destino
estado_maior_qtd_pedidos_seller Estado de destino com maior quantidade de pedidos do seller. ROW_NUMBER() por seller, ordenando quantidade de pedidos por estado desc. customer_state, order_id
cidade_maior_qtd_pedidos_seller Cidade de destino com maior quantidade de pedidos do seller. ROW_NUMBER() por seller, ordenando quantidade de pedidos por cidade desc. customer_state, customer_city, order_id
principal_estado_pedidos_seller Principal UF de destino dos pedidos do seller. Mesmo cálculo de maior estado de destino, com nome voltado para análise de concentração. tb_principal_estado
principal_cidade_pedidos_seller Principal cidade de destino dos pedidos do seller. Mesmo cálculo de maior cidade de destino, com nome voltado para análise de concentração. tb_principal_cidade
qtd_pedidos_principal_estado Quantidade de pedidos no principal estado de destino do seller. Quantidade associada ao estado com maior volume de pedidos do seller. tb_principal_estado
qtd_pedidos_principal_cidade Quantidade de pedidos na principal cidade de destino do seller. Quantidade associada à cidade com maior volume de pedidos do seller. tb_principal_cidade
pct_pedidos_principal_estado_destino Percentual dos pedidos concentrados no principal estado de destino. qtd_pedidos_principal_estado / qtd_pedidos_seller. qtd_pedidos_principal_estado, qtd_pedidos_seller
pct_pedidos_principal_cidade_destino Percentual dos pedidos concentrados na principal cidade de destino. qtd_pedidos_principal_cidade / qtd_pedidos_seller. qtd_pedidos_principal_cidade, qtd_pedidos_seller
media_distancia_km Distância média, em km, entre seller e customer nos pedidos do seller. AVG(distancia_km) por seller. distancia_km
mediana_distancia_km Distância mediana aproximada, em km, entre seller e customer. PERCENTILE_APPROX(distancia_km, 0.5). distancia_km
max_distancia_km Maior distância, em km, observada entre seller e customer. MAX(distancia_km) por seller. distancia_km
min_distancia_km Menor distância, em km, observada entre seller e customer. MIN(distancia_km) por seller. distancia_km
qtd_pedidos_curta_distancia Quantidade de pedidos com distância curta. Conta pedidos com distancia_km <= 100. distancia_km, order_id
qtd_pedidos_media_distancia Quantidade de pedidos com distância média. Conta pedidos com distancia_km > 100 AND distancia_km <= 500. distancia_km, order_id
qtd_pedidos_longa_distancia Quantidade de pedidos com distância longa. Conta pedidos com distancia_km > 500. distancia_km, order_id
pct_pedidos_curta_distancia Percentual dos pedidos do seller classificados como curta distância. qtd_pedidos_curta_distancia / qtd_pedidos_seller. qtd_pedidos_curta_distancia, qtd_pedidos_seller
pct_pedidos_media_distancia Percentual dos pedidos do seller classificados como média distância. qtd_pedidos_media_distancia / qtd_pedidos_seller. qtd_pedidos_media_distancia, qtd_pedidos_seller
pct_pedidos_longa_distancia Percentual dos pedidos do seller classificados como longa distância. qtd_pedidos_longa_distancia / qtd_pedidos_seller. qtd_pedidos_longa_distancia, qtd_pedidos_seller
media_pedidos_sellers_mesmo_estado Média de pedidos dos sellers localizados no mesmo estado. AVG(qtd_pedidos_seller) agrupado por seller_state. seller_state, qtd_pedidos_seller
media_pedidos_sellers_mesma_cidade Média de pedidos dos sellers localizados na mesma cidade. AVG(qtd_pedidos_seller) agrupado por seller_state e seller_city. seller_state, seller_city, qtd_pedidos_seller
dif_pedidos_vs_media_estado Diferença entre o volume de pedidos do seller e a média dos sellers do mesmo estado. qtd_pedidos_seller - media_pedidos_sellers_mesmo_estado. qtd_pedidos_seller, media_pedidos_sellers_mesmo_estado
dif_pedidos_vs_media_cidade Diferença entre o volume de pedidos do seller e a média dos sellers da mesma cidade. qtd_pedidos_seller - media_pedidos_sellers_mesma_cidade. qtd_pedidos_seller, media_pedidos_sellers_mesma_cidade
razao_pedidos_vs_media_estado Razão entre o volume de pedidos do seller e a média dos sellers do mesmo estado. qtd_pedidos_seller / media_pedidos_sellers_mesmo_estado. qtd_pedidos_seller, media_pedidos_sellers_mesmo_estado
razao_pedidos_vs_media_cidade Razão entre o volume de pedidos do seller e a média dos sellers da mesma cidade. qtd_pedidos_seller / media_pedidos_sellers_mesma_cidade. qtd_pedidos_seller, media_pedidos_sellers_mesma_cidade
soma_gap_estado_positivo Soma dos gaps positivos entre a distribuição de estados do seller e a distribuição do mercado. Soma somente dos gap_estado > 0. tb_gap_estado
soma_abs_gap_estado Soma dos valores absolutos dos gaps entre seller e mercado por estado. SUM(ABS(gap_estado)). tb_gap_estado
score_cobertura_estado Score que mede o quão parecida é a distribuição de destinos do seller em relação ao mercado. Quanto mais próximo de 1, mais distribuído; quanto mais próximo de 0, mais concentrado. 1 - (SUM(ABS(gap_estado)) / 2). tb_gap_estado
flag_seller_sem_pedido Indica se o seller não teve nenhum pedido no período analisado. CASE WHEN qtd_pedidos_seller = 0 THEN 1 ELSE 0 END. qtd_pedidos_seller

📦 Feature Store — Olist

fs_seller_meio_pagamento

Documentação técnica da feature de meio de pagamento por seller. Parte da Feature Store do projeto Olist — Pós Graduação em Data Science Analytics, Turma T06, 2026.


📋 Índice

  1. Visão Geral
  2. Escopo do Projeto
  3. Tabela de Destino
  4. Fontes de Dados
  5. Lógica de Construção
  6. Dicionário de Features
  7. Exemplo de Uso
  8. Boas Práticas e Avisos
  9. Histórico de Versões

1. Visão Geral

A tabela fs_seller_meio_pagamento concentra métricas históricas de comportamento de pagamento por seller, calculadas em quatro janelas temporais (D28, D56, D365 e vida toda). Todas as features são construídas de forma retroativa ao mês de referência, garantindo ausência de data leakage.

As métricas cobrem quatro dimensões:

  • Valor médio pago por meio de pagamento
  • Parcelamento médio dos pedidos
  • Share de quantidade de transações por meio de pagamento
  • Share de valor transacionado por meio de pagamento

2. Escopo do Projeto

Atributo Valor
Projeto Feature Store — Olist
Programa Pós Graduação em Data Science Analytics
Turma T06 — 2026

👥 Equipe

# Nome
1 Anoel Azeredo
2 Claudio Melo
3 Felipe Rodrigo
4 Juliana Souza
5 Laynne Ribeiro
6 Tiago Faustino

3. Tabela de Destino

Atributo Valor
Catálogo workspace.olist
Tabela fs_seller_meio_pagamento
Granularidade seller_id × ref_month
Período coberto Até 2018-06-01 (exclusive)
Filtro de corte order_purchase_timestamp < '2018-07-01'
Atualização INSERT OVERWRITE completo
Total de colunas 66 (2 chaves + 64 features)

4. Fontes de Dados

Tabela fonte Uso
workspace.olist.orders Base de pedidos — aplica o filtro de corte temporal
workspace.olist.order_items Associa order_id ao seller_id
workspace.olist.order_payments Valores, tipos e parcelas de pagamento por pedido

5. Lógica de Construção

A query é estruturada em uma única CTE com cinco etapas antes do SELECT final:

orders  ──┐
           ├──► tb_pedidos ──┐
order_items ──► tb_seller ───┤
                              ├──► tb_base ──► tb_estrutura ──► SELECT final
order_payments ► tb_pagamentos ┘
CTE Descrição
tb_pedidos Filtra orders com order_purchase_timestamp < '2018-07-01'.
tb_seller Associa cada order_id ao seller_id via order_items.
tb_pagamentos Agrega por order_id: valor e quantidade por tipo de pagamento + máximo de parcelas. Leitura única da tabela.
tb_base JOIN central pedidos × seller × pagamentos. Unidade: 1 linha por pedido × seller.
tb_estrutura Grade de combinações seller_id × mês de referência (DATE_TRUNC month).
SELECT final LEFT JOIN tb_estrutura → tb_base com filtro < ref_month. Calcula todas as métricas nas 4 janelas.

🕐 Janelas Temporais

Sufixo Janela Descrição
_d28 28 dias Últimos 28 dias anteriores ao mês de referência
_d56 56 dias Últimos 56 dias anteriores ao mês de referência
_d365 365 dias Últimos 365 dias anteriores ao mês de referência
_vida Histórico Todo o histórico disponível anterior ao mês de referência

💳 Meios de Pagamento

Código Descrição
credit_card Cartão de crédito
boleto Boleto bancário
voucher Voucher
debit_card Cartão de débito
outros Qualquer tipo não listado acima

6. Dicionário de Features

🔑 Chaves

Coluna Tipo Descrição
seller_id STRING Identificador único do seller.
ref_month STRING Mês de referência no formato yyyyMM. Todas as métricas consideram apenas informações anteriores a este mês.

💰 Valor Médio por Meio de Pagamento (avg_vlr_*)

20 features — valor médio (R$) pago por tipo de pagamento em cada janela.

Coluna Tipo Descrição
avg_vlr_credit_card_d28 DOUBLE Valor médio pago via cartão de crédito nos últimos 28 dias.
avg_vlr_boleto_d28 DOUBLE Valor médio pago via boleto nos últimos 28 dias.
avg_vlr_voucher_d28 DOUBLE Valor médio pago via voucher nos últimos 28 dias.
avg_vlr_debit_card_d28 DOUBLE Valor médio pago via cartão de débito nos últimos 28 dias.
avg_vlr_outros_d28 DOUBLE Valor médio pago por outros meios nos últimos 28 dias.
avg_vlr_credit_card_d56 DOUBLE Valor médio pago via cartão de crédito nos últimos 56 dias.
avg_vlr_boleto_d56 DOUBLE Valor médio pago via boleto nos últimos 56 dias.
avg_vlr_voucher_d56 DOUBLE Valor médio pago via voucher nos últimos 56 dias.
avg_vlr_debit_card_d56 DOUBLE Valor médio pago via cartão de débito nos últimos 56 dias.
avg_vlr_outros_d56 DOUBLE Valor médio pago por outros meios nos últimos 56 dias.
avg_vlr_credit_card_d365 DOUBLE Valor médio pago via cartão de crédito nos últimos 365 dias.
avg_vlr_boleto_d365 DOUBLE Valor médio pago via boleto nos últimos 365 dias.
avg_vlr_voucher_d365 DOUBLE Valor médio pago via voucher nos últimos 365 dias.
avg_vlr_debit_card_d365 DOUBLE Valor médio pago via cartão de débito nos últimos 365 dias.
avg_vlr_outros_d365 DOUBLE Valor médio pago por outros meios nos últimos 365 dias.
avg_vlr_credit_card_vida DOUBLE Valor médio histórico pago via cartão de crédito.
avg_vlr_boleto_vida DOUBLE Valor médio histórico pago via boleto.
avg_vlr_voucher_vida DOUBLE Valor médio histórico pago via voucher.
avg_vlr_debit_card_vida DOUBLE Valor médio histórico pago via cartão de débito.
avg_vlr_outros_vida DOUBLE Valor médio histórico pago por outros meios.

🔢 Parcelamento Médio (avg_payment_installments_*)

4 features — número médio de parcelas por janela.

Coluna Tipo Descrição
avg_payment_installments_d28 DOUBLE Quantidade média de parcelas dos pagamentos nos últimos 28 dias.
avg_payment_installments_d56 DOUBLE Quantidade média de parcelas dos pagamentos nos últimos 56 dias.
avg_payment_installments_d365 DOUBLE Quantidade média de parcelas dos pagamentos nos últimos 365 dias.
avg_payment_installments_vida DOUBLE Quantidade média histórica de parcelas dos pagamentos.

Nota: considera apenas registros com payment_installments > 0.


📊 Share de Quantidade por Meio de Pagamento (share_qtde_*)

20 features — participação percentual de cada meio na quantidade de transações.

Coluna Tipo Descrição
share_qtde_credit_card_d28 DOUBLE % de transações via cartão de crédito nos últimos 28 dias.
share_qtde_boleto_d28 DOUBLE % de transações via boleto nos últimos 28 dias.
share_qtde_voucher_d28 DOUBLE % de transações via voucher nos últimos 28 dias.
share_qtde_debit_card_d28 DOUBLE % de transações via cartão de débito nos últimos 28 dias.
share_qtde_outros_d28 DOUBLE % de transações via outros meios nos últimos 28 dias.
share_qtde_credit_card_d56 DOUBLE % de transações via cartão de crédito nos últimos 56 dias.
share_qtde_boleto_d56 DOUBLE % de transações via boleto nos últimos 56 dias.
share_qtde_voucher_d56 DOUBLE % de transações via voucher nos últimos 56 dias.
share_qtde_debit_card_d56 DOUBLE % de transações via cartão de débito nos últimos 56 dias.
share_qtde_outros_d56 DOUBLE % de transações via outros meios nos últimos 56 dias.
share_qtde_credit_card_d365 DOUBLE % de transações via cartão de crédito nos últimos 365 dias.
share_qtde_boleto_d365 DOUBLE % de transações via boleto nos últimos 365 dias.
share_qtde_voucher_d365 DOUBLE % de transações via voucher nos últimos 365 dias.
share_qtde_debit_card_d365 DOUBLE % de transações via cartão de débito nos últimos 365 dias.
share_qtde_outros_d365 DOUBLE % de transações via outros meios nos últimos 365 dias.
share_qtde_credit_card_vida DOUBLE % histórica de transações via cartão de crédito.
share_qtde_boleto_vida DOUBLE % histórica de transações via boleto.
share_qtde_voucher_vida DOUBLE % histórica de transações via voucher.
share_qtde_debit_card_vida DOUBLE % histórica de transações via cartão de débito.
share_qtde_outros_vida DOUBLE % histórica de transações via outros meios.

💵 Share de Valor por Meio de Pagamento (share_valor_*)

20 features — participação percentual de cada meio no valor total transacionado.

Coluna Tipo Descrição
share_valor_credit_card_d28 DOUBLE % do valor pago via cartão de crédito nos últimos 28 dias.
share_valor_boleto_d28 DOUBLE % do valor pago via boleto nos últimos 28 dias.
share_valor_voucher_d28 DOUBLE % do valor pago via voucher nos últimos 28 dias.
share_valor_debit_card_d28 DOUBLE % do valor pago via cartão de débito nos últimos 28 dias.
share_valor_outros_d28 DOUBLE % do valor pago via outros meios nos últimos 28 dias.
share_valor_credit_card_d56 DOUBLE % do valor pago via cartão de crédito nos últimos 56 dias.
share_valor_boleto_d56 DOUBLE % do valor pago via boleto nos últimos 56 dias.
share_valor_voucher_d56 DOUBLE % do valor pago via voucher nos últimos 56 dias.
share_valor_debit_card_d56 DOUBLE % do valor pago via cartão de débito nos últimos 56 dias.
share_valor_outros_d56 DOUBLE % do valor pago via outros meios nos últimos 56 dias.
share_valor_credit_card_d365 DOUBLE % do valor pago via cartão de crédito nos últimos 365 dias.
share_valor_boleto_d365 DOUBLE % do valor pago via boleto nos últimos 365 dias.
share_valor_voucher_d365 DOUBLE % do valor pago via voucher nos últimos 365 dias.
share_valor_debit_card_d365 DOUBLE % do valor pago via cartão de débito nos últimos 365 dias.
share_valor_outros_d365 DOUBLE % do valor pago via outros meios nos últimos 365 dias.
share_valor_credit_card_vida DOUBLE % histórica do valor pago via cartão de crédito.
share_valor_boleto_vida DOUBLE % histórica do valor pago via boleto.
share_valor_voucher_vida DOUBLE % histórica do valor pago via voucher.
share_valor_debit_card_vida DOUBLE % histórica do valor pago via cartão de débito.
share_valor_outros_vida DOUBLE % histórica do valor pago via outros meios.

7. Exemplo de Uso

SELECT
  seller_id,
  ref_month,
  avg_vlr_credit_card_d28,
  avg_payment_installments_d28,
  share_qtde_credit_card_d28,
  share_valor_credit_card_d28
FROM workspace.olist.fs_seller_meio_pagamento
WHERE ref_month = '201806'
ORDER BY seller_id;

8. Boas Práticas e Avisos

⚠️ Data Leakage: o filtro b.order_purchase_timestamp < sp.ref_month garante que nenhuma informação futura ao mês de referência é utilizada no cálculo das features.

  • Divisão por zero: o uso de NULLIF nos denominadores dos shares evita erros em sellers sem transações na janela.
  • Overwrite completo: a tabela é recriada integralmente a cada execução — não há append incremental.
  • Alta variância em D28: sellers com poucos pedidos podem apresentar médias instáveis na janela curta; considere filtros de volume mínimo no modelo downstream.
  • Parcelamento: o campo max_payment_installments considera apenas registros com payment_installments > 0.
  • Performance: a tabela order_payments é lida uma única vez na CTE tb_pagamentos, consolidando valor, quantidade e parcelamento em uma única passagem.

9. Histórico de Versões

Versão Data Autor Descrição
1.0 Jun/2026 Equipe T06 Versão inicial — consolidação das 4 views originais em CTE única.

About

Projeto de prediçao de (in)ativaçao de vendedores na Olist

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors