par Burton Roberts - Mis en ligne le 24/06/2003
Un rapport tabulaire, ou en colonnes,
présente l'information dans
des lignes, comme celles d'une base de
données. Les en-têtes de colonnes
d'un rapport tabulaire correspondent
aux noms des colonnes de la table. Un
rapport à tabulation croisée (crosstab
en raccourci) est une matrice ou une
feuille de calcul à deux dimensions qui
a des critères de recherche horizontaux
dans les en-têtes de colonnes et
verticaux dans les en-têtes de lignes, à
gauche. Les données que vous recherchez
- généralement résumées par
une fonction d'agrégation comme
SUM(), AVERAGE() ou COUNT() - occupent
les cellules intérieures de la matrice.
Droit au but avec ADO .Net

Supposons que vous travailliez
pour la célèbre chaîne de librairies
Pubs et que la Direction veuille
connaître les statistiques de ventes des
livres des différents auteurs, par magasin.
Vous pourriez créer un rapport tabulaire
à trois colonnes en utilisant une
vue comme celle du listing 1. Cette
vue, wwSales, donne la liste des ventes
de livres groupées par magasin et par
auteur, avec chaque triplette auteurmagasin-
ventes présente dans une
ligne. La figure 1 montre le rapport tabulaire
produit par la vue du listing 1. A
l’évidence, ce rapport serait plus facile
à lire et plus instructif si on le présentait
sous forme de colonnes comme celui
de la figure 2. Le rapport crosstab
présente les noms de magasins horizontalement
dans les en-têtes de colonnes
plutôt qu’à côté des noms d’auteurs
dans les lignes. Ainsi, pour
trouver les ventes de l’auteur
MacFeather à Bookbeat, on regarde
l’intersection de la ligne Stearns
MacFeather et de la colonne Bookbeat.
Les rapports crosstab existent en
deux catégories : largeur fixe et largeur
variable. Pour les rapports de largeur fixe, on connaît au moment de la
conception le nombre des colonnes du
rapport et leurs noms. Il est facile de
produire un rapport crosstab de largeur
fixe à l’aide d’une requête T-SQL,
parce que l’on peut coder en dur l’expression
CASE imbriquée dans une
fonction agrégée pour évaluer chaque
colonne de sortie. Le listing 2 montre
un exemple d’utilisation d’expression
CASE dans une requête crosstab de largeur
fixe pour notre application de librairies
Pubs. La première expression
CASE du listing 2 dit : si la valeur de la
colonne Store est égale à celle de
« Barnum », renvoyer la valeur dans la
colonne Sales ; sinon, renvoyer 0. La requête
crosstab utilise les fonctions
SUM() dans ses expressions de colonne,
donc il n’est pas nécessaire de
pré-agréger les données dans la vue
qu’elle utilise pour sa source de données.
Donc, dans sa clause FROM, la requête
crosstab du listing 2 utilise la vue
vwSales2 que le listing 3 crée, au lieu
de vwSales. Si vous utilisez COUNT()
ou AVG() comme fonction agrégée,
laissez « Else 0 » en dehors de l’expression
CASE ; sinon, les réponses feront
la moyenne ou le comptage des transactions
qui ont des valeurs sales de 0,
lesquelles n’existent pas vraiment.
Quand vous enlevez « Else 0 » de l’expression
CASE, vous obtenez des valeurs
NULL au lieu de zéros pour les couples auteur-magasin pour lesquels
il n’existe pas d’enregistrement.
Mais admettons que Pubs a une
centaine de librairies, avec de nouvelles
qui ouvrent et d’autres qui ferment
chaque fois. Dans ce cas, on a besoin
d’un rapport crosstab de largeur
variable qui lit dynamiquement les
noms de magasins à partir des données
et produit une colonne pour chacun,
indépendamment du nombre qui
existe ce mois-là . Nous allons explorer
deux méthodes très différentes de
création de rapports crosstab de largeur
variable. Le premier exemple utilise
dynamic SQL dans une procédure
stockée pour créer une chaîne de requête
crosstab qui contient des expressions
CASE. La commande EXEC exécute
la chaîne de requête pour fournir
le rapport en retour. Le second
exemple procède différemment. Au
lieu d’expressions CASE ou de dynamic
SQL, il utilise les nouvelles fonctions
relationnelles d’ADO.NET – le composant
d’accès aux données de Visual
Studio .NET – pour tabuler les données.
Au fil de la description, j’indiquerai
les avantages et inconvénients de
chaque méthode.
Téléchargez cette ressource

Guide de convergence du SOC et de la sécurité du cloud
Les menaces actuelles ne se cantonnent plus à une seule couche de votre environnement. Ressources cloud, systèmes d’entreprise, applications… elles se déplacent facilement par latéralisation. Pour protéger l’ensemble de votre infrastructure cloud, votre entreprise a besoin d’une approche unifiée qui place les données, la Threat Intelligence pilotée par IA et l’automatisation au service d’une protection complète. Découvrez tous les enjeux de la fusion entre CloudSec et SOC pour assurer une protection plus robuste, plus efficace de votre cloud.
Les articles les plus consultés
- L’utilisation des données pour survivre !
- 10 grandes tendances Business Intelligence
- 9 défis de transformation digitale !
- Intelligence Artificielle : DeepKube sécurise en profondeur les données des entreprises
- Stockage autonome, Evolutivité & Gestion intelligente, Pure Storage offre de nouvelles perspectives aux entreprises
Les plus consultés sur iTPro.fr
- Adopter l’IA augmenterait le PIB mondial à l’horizon 2035
- Renouvellement des certificats SSL tous les 45 jours : une mise en œuvre impossible sans automatisation ?
- Palo Alto Networks s’engage sur la cyber solidarité
- Recrudescence des cyberattaques pilotées par l’IA
- Quelles salles de réunion renforcent la dynamique et la confiance d’équipe ?
Sur le même sujet

La blockchain en pratique

ActiveViam fait travailler les data scientists et les décideurs métiers ensemble

Intelligence Artificielle : DeepKube sécurise en profondeur les données des entreprises

10 grandes tendances Business Intelligence

Les projets d’intégration augmentent la charge de travail des services IT
