Published on

October 21, 2018

Comprendre le désempilage SQL Server

Dans cet article, nous discuterons du concept de désempilage des données dans SQL Server. Le désempilage est le processus inverse du pivotement, où vous faites pivoter les données pour obtenir des lignes à partir de colonnes spécifiques, les noms de colonnes d’origine étant stockés en tant que valeurs dans une nouvelle colonne. Le désempilage est une opération courante dans la préparation des données en science des données, en particulier lorsqu’il s’agit de données dans des feuilles de calcul ou d’autres formats de table qui ne conviennent pas à une utilisation immédiate.

Commençons par regarder un exemple. Supposons que nous ayons une table appelée SalesPivoted avec la structure suivante:

Pays        | 2010    | 2011    | 2012    | 2013    | 2014
---------------------------------------------------------
Australie   | 20909.78| 2563732.25 | 2128407.46 | 4339443.38 | 8507.72
Canada      | 3578.27 | 571571.80 | 307604.52 | 1085632.65 | 9457.62

Dans cette table, les années sont représentées sous forme de colonnes et les données de vente sont stockées dans chaque cellule correspondante. Cependant, pour certaines tâches d’analyse de données, il peut être plus utile d’avoir les données dans un format différent, où chaque ligne représente une année spécifique et les données de vente sont stockées dans une seule colonne.

Pour y parvenir, nous pouvons utiliser l’opérateur UNPIVOT dans SQL Server. L’opérateur UNPIVOT nous permet de faire pivoter les données et de convertir les colonnes en lignes. Voici une requête exemple qui montre comment utiliser l’opérateur UNPIVOT:

SELECT Pays, Année, Ventes
FROM SalesPivoted
UNPIVOT (Ventes FOR Année IN ([2010], [2011], [2012], [2013], [2014])) AS U
ORDER BY Pays, Année;

Le résultat de cette requête sera:

Pays        | Année | Ventes
-------------------------
Australie   | 2010  | 20909.78
Australie   | 2011  | 2563732.25
Australie   | 2012  | 2128407.46
Australie   | 2013  | 4339443.38
Australie   | 2014  | 8507.72
Canada      | 2010  | 3578.27
Canada      | 2011  | 571571.80
Canada      | 2012  | 307604.52
Canada      | 2013  | 1085632.65
Canada      | 2014  | 9457.62

Comme vous pouvez le voir, les données ont été pivotées et chaque ligne représente maintenant une année spécifique avec les données de vente correspondantes.

Il est important de noter que l’opérateur UNPIVOT ne fait pas partie de la norme ANSI SQL. Si vous souhaitez que votre code soit compatible avec plusieurs systèmes de gestion de bases de données, vous voudrez peut-être utiliser des expressions SQL ANSI standard à la place.

Une autre façon d’obtenir le même résultat est d’utiliser une jointure croisée et une expression CASE. Voici une requête exemple qui montre cette approche:

SELECT Pays, Année, Ventes
FROM (
    SELECT Pays, [2010], [2011], [2012], [2013], [2014]
    FROM SalesPivoted
) AS D
CROSS JOIN (
    SELECT 2010 AS Année UNION ALL
    SELECT 2011 UNION ALL
    SELECT 2012 UNION ALL
    SELECT 2013 UNION ALL
    SELECT 2014
) AS A
WHERE Ventes IS NOT NULL
ORDER BY Pays, Année;

Cette requête permet d’obtenir le même résultat que la précédente, mais elle utilise des expressions SQL standard au lieu de l’opérateur UNPIVOT.

En plus de ces méthodes, il existe également d’autres façons de réaliser un désempilage dans SQL Server, telles que l’utilisation de l’opérateur CROSS APPLY ou de la clause VALUES. Cependant, ces méthodes sont spécifiques à SQL Server et peuvent ne pas être compatibles avec d’autres systèmes de gestion de bases de données.

Le désempilage peut également être effectué dans d’autres langages de programmation couramment utilisés en science des données, tels que R et Python. En R, vous pouvez utiliser la fonction stack() de l’installation de base ou la fonction melt() du package reshape. En Python, vous pouvez utiliser la méthode unstack() dans pandas ou la fonction melt() dans la bibliothèque pandas.

Une fois les données désempilées, vous pouvez effectuer diverses tâches d’analyse de données, telles que la prévision des ventes par pays et par années ou la création de visualisations pour mieux comprendre les données.

En conclusion, le désempilage est une opération utile dans la préparation des données en science des données, vous permettant de transformer les données d’un format pivoté à un format plus adapté à l’analyse. Que vous choisissiez d’utiliser l’opérateur UNPIVOT dans SQL Server ou d’autres méthodes dans différents langages de programmation, l’objectif est de rendre les données plus accessibles et plus faciles à manipuler.

Click to rate this post!
[Total: 0 Average: 0]

Let's work together

Send us a message or book free introductory meeting with us using button below.