Données d’échantillon : TPC-H

Comme décrit dans les spécifications TPC Benchmark™ H (TPC-H) :

« TPC-H est un benchmark d’aide à la décision. Il se compose d’une série de requêtes ad hoc orientées métier et de modifications simultanées des données. Les requêtes et les données alimentant la base de données ont été choisies de manière à ce qu’elles soient pertinentes pour l’ensemble du secteur. Ce benchmark illustre des systèmes d’aide à la décision qui examinent de grands volumes de données, exécutent des requêtes d’un haut degré de complexité et donnent des réponses à des questions commerciales critiques ».

Dans ce chapitre :

Base de données et schémas

TPC-H est fourni en différentes tailles d’ensemble de données pour tester différents facteurs d’échelle. À des fins de démonstration, nous avons partagé quatre versions des données TPC-H. Les données sont fournies dans les schémas suivants de la base de données partagée SNOWFLAKE_SAMPLE_DATA :

  • TPCH_SF1: Comprend la taille de la ligne de base (plusieurs millions d’éléments).

  • TPCH_SF10: Comprend la taille de la ligne de base x 10.

  • TPCH_SF100: Comprend la taille de la ligne de base x 100 (plusieurs centaines de millions d’éléments).

  • TPCH_SF1000: Comprend la taille de la ligne de base x 1000 (plusieurs milliards d’éléments).

Entités, relations et caractéristiques de base de données

Les composantes de TPC-H se composent de huit tables distinctes et individuelles (les tables de base). Les relations entre les colonnes de ces tables sont illustrées dans le diagramme ER suivant :

Schema for TPC-H benchmark data

(source : TPC spécifications standard Benchmark H)

Définitions de requête

Chaque requête TPC-H pose une question métier et inclut la requête correspondante pour y répondre. Certaines des requêtes TPC-H sont incluses dans les didacticiels de démarrage de Snowflake.

Ce chapitre décrit l’une des requêtes. Vous pouvez trouver plus d’informations sur TPC- et toutes les requêtes impliquées dans les spécifications officielles TPC Benchmark H.

Q1: Requête de rapport de récapitulatif de prix

Cette requête indique le montant des biens/prestations facturés, expédiés et renvoyés.

Question métier

La requête de rapport de récapitulatif de prix fournit un rapport récapitulatif de prix pour tous les éléments de ligne expédiés à une date donnée. La date se situe dans les 60 à 120 jours à partir de la date d’expédition la plus récente dans la base de données.

Définition de la requête fonctionnelle

La requête répertorie les totaux pour le prix étendu, le prix étendu réduit, le prix étendu réduit plus les taxes, la quantité moyenne, le prix étendu moyen et la remise moyenne. Ces agrégats sont regroupés par RETURNFLAG et LINESTATUS, et sont répertoriés par ordre croissant de RETURNFLAG et LINESTATUS. Un décompte du nombre d’éléments de ligne dans chaque groupe est inclus :

use schema snowflake_sample_data.tpch_sf1;   -- or snowflake_sample_data.{tpch_sf10 | tpch_sf100 | tpch_sf1000}

select
       l_returnflag,
       l_linestatus,
       sum(l_quantity) as sum_qty,
       sum(l_extendedprice) as sum_base_price,
       sum(l_extendedprice * (1-l_discount)) as sum_disc_price,
       sum(l_extendedprice * (1-l_discount) * (1+l_tax)) as sum_charge,
       avg(l_quantity) as avg_qty,
       avg(l_extendedprice) as avg_price,
       avg(l_discount) as avg_disc,
       count(*) as count_order
 from
       lineitem
 where
       l_shipdate <= dateadd(day, -90, to_date('1998-12-01'))
 group by
       l_returnflag,
       l_linestatus
 order by
       l_returnflag,
       l_linestatus;