Requêtes décisionnelles avec TPC H
Préparation
Lire le sujet du TME, et le schema de TPC-H
Configurer l'environnement Linux: vérifier que votre fichier /.bashrc contient bien la ligne suivante située à la fin du fichier:
- source /Infos/bd/config10
Si vous avez modifié votre fichier /.bashrc, ouvrez un nouveau terminal pour que les modifications soient prises en compte.
Installer les fichiers du TP
- tar zxvf $BD_TOOL/tpch-etu.tgz
- cd tpch-etu
Se connecter au serveur de données et configurer le compte oracle
- sqlplus bdwaN/bdwaN@ora2 ( N est un numéro de 1 à 49)
- SQL> @utlxplan10G (crée une structure pour stocker les plans des requêtes)
- SQL> @etu-synonym (crée les synonymes vers la base TPCH de petite taille)
- SQL> desc lineitem (affiche le schéma de la relation lineitem)
- SQL> quit
Exercice
Editer et tester la première requête
- emacs etu-r0.sql &
- depuis emacs se connecter au serveur de données ora2 (voir OracleSurLinux)
Editer et tester les requêtes décisionnelles R1 à R23.
Valeurs d'attributs à utiliser pour tester les requêtes
- Q1: l_shipdate <= '01/01/1993'
- Q2: r_name='EUROPE', p_type like '%COPPER', p_size=26
Documentation
Nom des attributs
- Dans la base TPCH, le nom des attributs est préfixé par la première lettre de la relation. Ex. la date de livraison est nommée L_shipdate. Le préfixe pour les attributs de Partsupp est PS.
Regroupement: group by : Impossible de projeter sur un attribut dont la valeur n'est pas identique pour tous les tuples d'un même groupe. Autrement dit: seuls les attributs mentionnés dans le group by peuvent apparaître dans le select, les autres attributs doivent être préalablement aggrégés. Exemples :
Erreur à cause de l'étoile :
Select * From Lineitem Group by L_linestatus;
Syntaxe correcte :
Select L_linestatus, count(*) From Lineitem Group by L_linestatus;
Requêtes paramétrées: define
- définir des variables pour les requêtes paramétrées, voir etu-r0.
- le livre SQL Reference de la DocumentationOracle
Divers
Pour installer l'extrait de la base TPC-H chez soi, récupérer le contenu sous la forme de 8 fichiers plats et le schéma de la base. Adaptez les instructions de création de la base à votre environnement.
Eventuellement, adapter le format par défaut des dates pour qu'il corresponde à celui du fichier texte
- alter session set NLS_DATE_FORMAT = 'DD/MM/YY';
- Spécification TPC-H (avec les requêtes SQL, à lire seulement en fin de TME...)