| 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 |
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.
- Visão Geral
- Escopo do Projeto
- Tabela de Destino
- Fontes de Dados
- Lógica de Construção
- Dicionário de Features
- Exemplo de Uso
- Boas Práticas e Avisos
- Histórico de Versões
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
| Atributo | Valor |
|---|---|
| Projeto | Feature Store — Olist |
| Programa | Pós Graduação em Data Science Analytics |
| Turma | T06 — 2026 |
| # | Nome |
|---|---|
| 1 | Anoel Azeredo |
| 2 | Claudio Melo |
| 3 | Felipe Rodrigo |
| 4 | Juliana Souza |
| 5 | Laynne Ribeiro |
| 6 | Tiago Faustino |
| 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) |
| 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 |
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. |
| 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 |
| 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 |
| 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. |
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. |
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.
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. |
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. |
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;
⚠️ Data Leakage: o filtrob.order_purchase_timestamp < sp.ref_monthgarante que nenhuma informação futura ao mês de referência é utilizada no cálculo das features.
- Divisão por zero: o uso de
NULLIFnos 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_installmentsconsidera apenas registros compayment_installments > 0. - Performance: a tabela
order_paymentsé lida uma única vez na CTEtb_pagamentos, consolidando valor, quantidade e parcelamento em uma única passagem.
| Versão | Data | Autor | Descrição |
|---|---|---|---|
| 1.0 | Jun/2026 | Equipe T06 | Versão inicial — consolidação das 4 views originais em CTE única. |