Conseils et formations : vos deux atouts pour réussir !
Accueil > Analysis Services > Messages > Pivoter une table de faits
Pivoter une table de faits

Introduction :

En partant d'une base relationnelle normalisée pour charger le cube, vous aurez bien sûr à gérer les différences d'approches :

  • Gestion des NULL values
  • Dénormalisation

 

Voici un exemple de dénormalisation de la 1ère forme normale :

Partir d'un tableau vertical pour aller dans un tableau horizontal : c'est le cas typique du tableau croisé.

 

Comment le faire ?

 

Plusieurs possibilités s'offrent à vous :

  • Ecrire un programme : ceci a beaucoup d'inconvénients, notamment le temps de développement, la maintenance, les performances..
  • Utiliser SSIS : il existe effectivement une tâche de PIVOT mais je considère que le point fort de SSIS est de travailler sur des fichiers pas des tables
  • Le faire en SQL : c'est cette 3ème voie que je vais développer ici

 

Pivoter dynamiquement la table :

 

Voici la table source (comme je l'ai dit elle est en 1ère forme normale, et stocke des données d'enquête, mais elle pourrait stocker n'importe quoi, par exemple des cumuls d'heures par motifs,etc…)

 

 

 

Mon souhait est de pivoter ces valeurs en horizontal afin d'obtenir les données de mes mesures (certains se diront : pourquoi ne garde-t-il pas les données telles quelles dans le cube ? en faisant une dimension sur le type de valeur ? C'est l'un des thèmes abordés dans mon cours sur les performances avec SSAS)

 

Voici quelques données de IDValeur :

 

Le nombre de lignes DOIT être grand et il peut bouger… malheureusement, la requête PIVOT de SQLServer a une liste de colonnes en dur….

 

Qu'à cela ne tienne, il suffit de la générer :

 

Qui donne :

 

Et à utiliser cette technique dans la clause PIVOT :

 

 

Voici le temps d'exécution pour 900 000 faits et 30 colonnes :

 

Tout à fait correct donc …

 

Il reste à créer les mesures à partir de cette nouvelle table de fait, si possible en dynamique, mais ceci est un autre sujet…

Commentaires

Aucun commentaire sur ce message.

Titre


Corps *


Pièces jointes

 ‭(Masqué)‬ WebPart1 Web Part

/SSAS/defaut/