Dimension à variation lente (SCD) dans Power BI, partie 1, introduction à SCD

Dimension à variation lente (SCD) dans Power BI, partie 1, introduction à SCD

[ad_1]

Dimension changeant lentement (CDS) est un concept d’entreposage de données inventé par l’incroyable Ralph Kimball. Le concept SCD traite du déplacement d’un ensemble spécifique de données d’un état à un autre. Imaginez que nous ayons un ressources humaines (HEURE) système; Stephen Jiang est un Directeur commercial, gérant 10 commerciaux dans son équipe. La capture d’écran suivante montre les exemples de données :

SCD dans Power BI, Stephen Jiang est le directeur commercial d'une équipe de 10 commerciaux
Image 1 : Stephen Jiang est le directeur commercial d’une équipe de 10 commerciaux

Aujourd’hui, Stephen Jiang a obtenu sa promotion au Vice-président des ventes rôle, son équipe est donc passée de 10 à 17. Stephen est la même personne, mais son rôle a maintenant changé, comme le montre l’image suivante :

SCD dans Power BI, l'équipe de Stephen après sa promotion au poste de vice-président des ventes
Image 2 : L’équipe de Stephen après sa promotion Vice-président des ventes

Un autre exemple est lorsque l’adresse d’un client change dans un système de vente. Encore une fois, le client est le même, mais son adresse est désormais différente. Du point de vue de l’entreposage de données, nous avons différentes options pour traiter les données en fonction des besoins de l’entreprise, ce qui nous conduit à différents types de SDC. Il est crucial de noter que les données évoluent dans les systèmes sources transactionnels (dans nos exemples, le système RH ou un système commercial). Nous déplaçons et transformons les données des systèmes transactionnels via des processus d’extraction, de transformation et de chargement (ETL) et les déposons dans un entrepôt de données, où le concept SCD entre en jeu. SCD concerne la manière dont les modifications apportées aux systèmes sources reflètent les données dans le entrepôt de données. Ces types de changements dans le système source ne se produisent pas très souvent, d’où le terme qui change lentement. De nombreux types de SCD ont été développés au fil des ans, ce qui sort du cadre de cet article, mais pour votre information, nous couvrons les trois premiers types comme suit.

Type SCD zéro (SCD 0)

Avec ce type de SCD, nous ignorons tous les changements dans une dimension. Ainsi, lorsque l’adresse résidentielle d’une personne change dans le système source (un système RH, dans notre exemple), nous ne modifions pas la dimension d’atterrissage dans notre entrepôt de données. En d’autres termes, nous ignorons les changements dans la source de données. SCD 0 est également appelé dimensions fixes.

 

SCD de type 1 (SCD 1)

Avec un type SCD 1, nous écrasons les anciennes données avec les nouvelles. Un excellent exemple de type SCD 1 est lorsque l’entreprise n’a pas besoin de l’ancienne adresse du client et n’a besoin que de conserver l’adresse actuelle du client.

SCD de type 2 (SCD 2)

Avec ce type de SCD, nous conservons l’historique des modifications de données dans l’entrepôt de données lorsque l’entreprise a besoin de conserver les adresses anciennes et actuelles du client. Dans un scénario SCD 2, nous devons conserver l’historique, nous insérons donc une nouvelle ligne de données dans l’entrepôt de données chaque fois qu’un système transactionnel change. L’insertion d’une nouvelle ligne de données provoque des duplications de données dans l’entrepôt de données, ce qui signifie que nous ne pouvons pas utiliser le CléClient colonne comme clé primaire de la dimension. Par conséquent, nous devons introduire un nouvel ensemble de colonnes, comme suit :

  • Une nouvelle colonne clé qui garantit l’unicité des lignes dans le Clients dimension. Cette nouvelle colonne de clé est simplement un index représentant chaque ligne de données stockée dans une dimension d’entrepôt de données. La nouvelle clé est un soi-disant Clé de substitution. Bien que la clé de substitution garantisse que chaque ligne de la dimension est unique, nous devons toujours conserver la clé primaire du système source. Par définition, les clés primaires du système source sont désormais appelées clés d’affaires ou touches alternatives dans le monde de l’entreposage de données.
  • UN Date de début Et un Date de fin La colonne représente la période pendant laquelle une ligne de données est dans son état actuel.
  • Une autre colonne affiche l’état de chaque ligne de données.

Le SCD 2 est le type le plus courant de SCD.

Reprenons notre exemple précédent lorsque Stephen Jiang a été promu de Directeur commercial à Vice-président des ventes. La capture d’écran suivante montre les données avant que Stephen n’obtienne la promotion :

SCD dans Power BI, les données des employés avant que Stephen ne soit promu
Image 3 : Les données des employés avant que Stephen ne soit promu

La EmployeeKey la colonne est la Clé de substitution de la dimension, et la colonne EmployeeBusinessKey est la clé métier (la clé primaire du client dans le système source) ; la Date de début la colonne indique la date Stephen Jiang a commencé son travail comme Responsable des ventes Amérique du Nordla Date de fin colonne a été laissée vide (null), et la Statut la colonne montre Courant. Examinons maintenant les données après que Stephen ait obtenu la promotion, illustrées dans la capture d’écran suivante :

SCD dans Power BI, les données des employés après la promotion de Stephen
Image 4 : Les données des employés après la promotion de Stephen

Comme le montre l’image ci-dessus, Stephan Jiang a commencé son nouveau rôle de Vice-président des ventes sur 13/10/2012 et a terminé son travail comme Responsable des ventes Amérique du Nord sur 10/12/2012.

Voyons ce que signifie SCD 2 en matière de modélisation de données dans Power BI. La première question est : Pouvons-nous implémenter SCD 2 directement dans Power BI Desktop sans disposer d’un entrepôt de données ? Pour répondre à cette question, nous devons nous rappeler que nous créons une couche sémantique lors de la construction d’un modèle de données dans Power BI. Dans un billet précédent, j’expliquais les différents composants d’une solution BI, dont la couche sémantique. Mais je le répète ici. La couche sémantique, par définition, est une vue des données source (généralement un entrepôt de données), optimisée à des fins de reporting et d’analyse. La couche sémantique ne remplace pas l’entrepôt de données ou une autre version de l’entrepôt de données. La réponse est donc non, nous ne pouvons pas implémenter la fonctionnalité SCD 2 dans Power BI. Nous avons donc soit besoin d’un entrepôt de données, soit le système transactionnel dispose d’un mécanisme pour prendre en charge la maintenance des données historiques, tel qu’un mécanisme temporel. Un mécanisme temporel est une fonctionnalité que certains systèmes de gestion de bases de données relationnelles tels que SQL Server offrent pour fournir des informations sur les données conservées dans une table à tout moment au lieu de conserver uniquement les données actuelles. En apprendre davantage sur tables temporelles dans SQL Server, vérifiez ceci.

Après avoir chargé les données dans le modèle de données dans Power BI Desktop, nous avons toutes les données actuelles et historiques dans les tables de dimension. Par conséquent, nous devons être prudents lorsque nous traitons avec des SCD. Par exemple, la capture d’écran suivante montre les ventes des revendeurs pour les employés :

SCD dans Power BI, SCD dans Power BI, Ventes revendeur pour les employés sans tenir compte de SCD
Image 5 : Ventes des revendeurs pour les employés sans tenir compte du SCD

A première vue, les chiffres semblent corrects. Eh bien, ils ont peut-être raison; ils peuvent avoir tort. Cela dépend de ce que l’entreprise s’attend à voir sur un rapport. Regarder Image 4, qui montre les changements de Stephen. Stephen avait des valeurs de vente lorsqu’il était Responsable des ventes Amérique du Nord (EmployeeKey 272). Mais après sa promotion (EmployeeKey 277), il ne vend plus. Nous n’avons pas pris en compte SCD lorsque nous avons créé le tableau précédent, ce qui signifie que nous considérons les valeurs des ventes de Stephen (EmployeeKey 272). Mais est-ce ce que l’entreprise exige? L’entreprise s’attend-elle à voir les ventes de tous les employés sans tenir compte de leur statut ? Pour plus de clarté, ajoutons le Statut colonne au tableau.

SCD dans Power BI, les ventes des revendeurs pour les employés et leur statut sans tenir compte du SCD
Image 6 : Ventes des revendeurs pour les employés et leur statut sans tenir compte du SCD

Que se passe-t-il si l’entreprise doit uniquement afficher les valeurs de vente uniquement pour les employés lorsque leur statut est Courant? Dans ce cas, nous devrions prendre en compte le SCD dans l’équation et filtrer les valeurs des ventes de Stephen. Selon les besoins de l’entreprise, nous devrons peut-être ajouter le Statut colonne comme filtre dans les visualisations, alors que dans d’autres cas, nous pourrions avoir besoin de modifier les mesures en ajoutant le Date de début, Date de finet Statut colonnes pour filtrer les résultats. La capture d’écran suivante montre les résultats lorsque nous utilisons des filtres visuels pour éliminer les ventes de Stephen :

SCD dans Power BI, SCD dans Power BI, Ventes de revendeurs pour les employés envisageant SCD
Image 7 : Ventes des revendeurs pour les employés envisageant le SCD

Traiter avec les SCD n’est pas toujours aussi simple que cela. Parfois, nous devons apporter des modifications à notre modèle de données.

Alors, tout ce qui précède signifie-t-il que nous ne pouvons implémenter aucun type de SCD dans Power BI ? La réponse, comme toujours, est « ça dépend ». Dans certains scénarios, nous pouvons implémenter une solution similaire à la SCD 1 fonctionnalité, que j’explique dans un autre article de blog. Mais nous n’avons pas de chance dans la mise en œuvre de la DSC 2 fonctionnalité purement dans Power BI.

Avez-vous utilisé des SCD dans Power BI, je suis curieux de connaître les défis auxquels vous avez été confrontés. Alors s’il vous plaît partagez vos pensées dans la section des commentaires ci-dessous.