Amostra de dados: TPC-DS

TPC-DS é um benchmark que modela o sistema de suporte a decisões de um fornecedor de produtos de varejo. Ele tem dados de clientes, pedidos e produtos. O Snowflake fornece versões de 10TB e 100TB dos dados TPC-DS para você explorar, em esquemas denominados TPCDS_SF10TCL e TPCDS_SF100TCL, respectivamente, no banco de dados compartilhado SNOWFLAKE_SAMPLE_DATA.

Como descrito na especificação TPC Benchmark™ DS (TPC-DS):

“A fim de abordar a enorme variedade de tipos de consulta e comportamentos de usuários encontrados por um sistema de suporte à decisão, TPC-DS utiliza um modelo de consulta generalizada. Este modelo permite que o benchmark capture aspectos importantes da natureza interativa e iterativa do processamento analítico on-line (OLAP), as consultas complexas de longo prazo de mineração de dados e descoberta de conhecimento, e o comportamento mais planejado de consultas de relatórios bem conhecidas.”

Neste tópico:

Como faço para adicionar o conjunto de dados TPC-DS à minha conta?

Você pode acessar os conjuntos de dados TPC-DS fornecidos pela Snowflake diretamente do Snowflake Marketplace no Snowsight. Consulte Como obter os dados TPC-DS a partir do Snowflake Marketplace. Você também pode acessar a lista de consultas TPC-DS baixando este script.

Entidades, relacionamentos e características do banco de dados

O conjunto de dados TPC-DS consiste em 7 tabelas de fatos e 17 dimensões nos seguintes esquemas:

  • TPCDS_SF100TCL: A versão de 100 TB (fator de escala de 100.000) representa 100 milhões de clientes e mais de 500.000 itens armazenados, com dados de vendas abrangendo 3 canais – lojas, catálogos e a Web – cobrindo um período de 5 anos. A maior tabela, STORE_SALES, contém quase 300 bilhões de linhas, e as tabelas contêm mais de 560 bilhões de linhas no total.

  • TPCDS_SF10TCL: A versão de 10 TB (fator de escala de 10.000) representa 65 milhões de clientes e mais de 400.000 itens armazenados, com dados de vendas abrangendo 3 canais – lojas, catálogos e a Web – cobrindo um período de 5 anos. A maior tabela, STORE_SALES, contém quase 29 bilhões de linhas, e as tabelas contêm mais de 56 bilhões de linhas no total.

As relações entre fatos e dimensões são representadas através de junções em chaves alternativas. As relações detalhadas são muito numerosas para serem exibidas aqui, mas podem ser encontradas na especificação TPC-DS.

Definições de consulta

O TPC-DS contém um conjunto de 99 consultas com grande variação de complexidade e diversidade de dados verificados. Cada consulta TPC-DS faz uma pergunta comercial e inclui a consulta correspondente para responder à pergunta. Geramos amostras de todas as 99 consultas TPC-DS para que você possa explorar. Alternativamente, você pode usar as ferramentas no Kit de benchmark do TPC-DS para gerar muitas versões diferentes destas consultas que variam de acordo com os valores dos parâmetros.

Abaixo, descrevemos apenas uma das consultas. Mais informações sobre TPC-DS e todas as consultas envolvidas podem ser encontradas na especificação oficial do TPC-DS.

O script TPC-DS, fornecido pela Snowflake, contém a lista completa de consultas TPC-DS. Você pode salvar o arquivo em seu sistema de arquivos local para referência.

Um exemplo: discrepâncias do call center de vendas de catálogo (Q57)

Esta consulta analisa os dados da tabela CATALOG_SALES de um ano e revela as categorias e marcas em que as vendas em um mês variam mais de 10% em relação à média para um determinado call center.

Questão comercial

Encontre as marcas e categorias de itens para cada call center e seus números de vendas mensais para um determinado ano onde o número de vendas mensais desviou mais de 10% da média de vendas mensais do ano, classificadas por desvio e call center. Relate o desvio de vendas em relação aos mês anterior e seguinte.

Definição da consulta funcional

A consulta relaciona os seguintes totais:

  • Preço estendido

  • Preço estendido com desconto

  • Preço estendido com desconto mais imposto

  • Quantidade média

  • Preço estendido médio

  • Desconto médio

Estes agregados são agrupados por RETURNFLAG e LINESTATUS e são listados em ordem crescente de RETURNFLAG e LINESTATUS. Está incluída uma contagem do número de itens de linha em cada grupo:

use schema snowflake_sample_data.tpcds_sf10Tcl;

-- QID=TPC-DS_query57

with
v1 as(
  select i_category, i_brand,
         cc_name,
         d_year, d_moy,
         sum(cs_sales_price) sum_sales,
         avg(sum(cs_sales_price)) over
           (partition by i_category, i_brand, cc_name, d_year) avg_monthly_sales,
         rank() over (partition by i_category, i_brand, cc_name order by d_year, d_moy) rn
  from item, catalog_sales, date_dim, call_center
  where cs_item_sk = i_item_sk and
        cs_sold_date_sk = d_date_sk and
        cc_call_center_sk= cs_call_center_sk and
          (
            d_year = 2001 or
          ( d_year = 2001-1 and d_moy =12) or
          ( d_year = 2001+1 and d_moy =1)
          )
  group by i_category, i_brand,
           cc_name , d_year, d_moy),
v2 as(
  select v1.i_brand
    ,v1.d_year, v1.d_moy
    ,v1.avg_monthly_sales
    ,v1.sum_sales, v1_lag.sum_sales psum, v1_lead.sum_sales nsum
  from v1, v1 v1_lag, v1 v1_lead
  where v1.i_category = v1_lag.i_category and
    v1.i_category = v1_lead.i_category and
    v1.i_brand = v1_lag.i_brand and
    v1.i_brand = v1_lead.i_brand and
    v1.cc_name = v1_lag. cc_name and
    v1.cc_name = v1_lead. cc_name and
    v1.rn = v1_lag.rn + 1 and
    v1.rn = v1_lead.rn - 1)
select  *
from v2
where d_year = 2001 and
  avg_monthly_sales > 0 and
  case when avg_monthly_sales > 0
       then abs(sum_sales - avg_monthly_sales) / avg_monthly_sales
       else null
       end > 0.1
order by sum_sales - avg_monthly_sales, nsum
limit 100;
Copy

Como obter os dados TPC-DS a partir do Snowflake Marketplace

Você pode acessar os dados TPC-DS diretamente do Snowflake Marketplace no Snowsight. Você pode criar e consultar sua própria instância dos seguintes conjuntos de dados:

Os dados do conjunto de dados do Iceberg gerenciado são armazenados fisicamente no formato Iceberg, em vez do formato de tabela proprietário do Snowflake. Você pode obter os dois conjuntos de dados e comparar o comportamento dos dois formatos.

Para obter esses conjuntos de dados:

  1. Procure por TPC-DS no Snowflake Marketplace. (Faça login no Snowsight se for solicitado)

  2. Selecione um dos conjuntos de dados TPC-DS.

  3. Selecione Get.

    Solicite acesso ao seu administrador, se necessário. Sua função de login pode não ter acesso a esses conjuntos de dados.

  4. Em Options, forneça ao seu banco de dados TPC-DS um nome definido pelo usuário e selecione a função que usará para acessá-lo. Como alternativa, prossiga com as seleções padrão.

  5. Selecione Get it for Free.

    Em alguns segundos, você verá a seguinte janela pop-up, que indica que sua instância do banco de dados TPC-DS foi criada e está disponível para inspeção e consulta.

    Janela pop-up que mostra que o conjunto de dados TPC-DS foi gravado em um banco de dados que você pode consultar.
  6. Selecione Query Data.

  7. Consulte os dados no banco de dados usando a planilha fornecida ou o script TPC-DS, que contém todas as consultas.

Se você já tiver usado Get para criar um desses bancos de dados, poderá acessá-lo selecionando Open nos resultados de pesquisa do marketplace.