PIT Point In Time

PIT Point In Time

Introduction

Nous sommes souvent amenés à avoir des données descriptives dans nos modèles Power BI. Les données peuvent varier dans le temps et avoir des dates de validités. Ce qui peut devenir un vrai casse tête lors de la création de notre modèle de données.

Quelles données ?

Une voiture peut changer d’usines de production à travers le temps

  • Une voiture peut être proposées à la vente avec différents moteurs à travers le temps
  • Un client peut avoir à travers le temps :
    • Une ou plusieurs cartes de fidélités
    • Une ou plusieurs adresses

Quel types de données?

  • Données multiples
  • Avec une notion de temps. (L’information est valable d’une date à une autre et est potentiellement suivie ou chevauchée par une autre)

PIT – Point In Time – Datavault

Le Point In Time est une notion largement utilisée lors de la création de datawarehouse de type Datavault. Réaliser un snapshot et historiser les données permet une restitution beaucoup plus facile.

(Je ne débattrai pas des pour ou contre du Datavault, mais j’ai mes préférences ^^)

Si vous souhaitez en savoir plus, je vous invite à lire cet article. (Ecrit par Dan Linstedt)

Value of PIT and Bridge Tables in Data Vault 2.0

Demo

Que souhaitons nous faire?

Il est intéressant pour nos utilisateurs de naviguer à travers les données en y appliquant un filtre de temps (CFR Slicer Date)

Comment : En créant une mesures DAX. (#PIT Shoes)

L’exemple çi-dessus affiche dynamiquement les chaussures de Pauline.

Modèle de données

Notre modèle de données

L’exemple suivant est assez simple (Le fichier Power BI est disponible en téléchargement à la fin de cet article)

Beaucoup le savent, je suis passionné par Power BI, la course à pied mais beaucoup ignore ma folie acheteuse de chaussures de course à pied. (Personne n’est parfait !)

L’exemple fait référence à une liste de coureurs possédant à travers le temps d’une ou plusieurs paires de chaussures.

La table Runners:

La table Shoes

Spécificités du modèle

  • RunnerId (clé de la table Runner) est disponible pour toutes les chaussures.
  • Pour des raisons de performances, les bornes de date sont dupliquées et converties en type numérique.
    • ValidFrom – ValidFromInt 
    • ValidTo – ValidToInt

Pour les plus connaisseurs

C’est ici une dénormalisation de notre schéma en étoile composé d’un Bridge et d’une dimension.

Dans un Datawarehouse (Kimball), nous devrions avoir un Bridge: BridgeRunnerShoes et une dimension: DimShoes

Pourquoi ?

  • Pour des soucis de compréhension pour les utilisateurs. (Simplicité)
  • Le moteur Vertipaq se charge de compresser les informations redondantes
  • Cela évite une jointure / relation supplémentaire.

Plus d’information sur les Bridges

Multivalued Dimensions and Bridge Tables

Un modèle de données plus complet aurait pu ressembler à celui-ci

TimeLine

Analysons graphiquement les différentes intérections.

  1. L’utilisateur effectue un choix via le slicer PIT Date
  2. Le tableau change dynamiquement, pour n’afficher que les chaussures possédées à cette date.

P.S. La barre bleue dessinée sur la timeline a été ajoutée manuellement dans MS Paint. (Si vous connaissez un composant visuel qui permet de l’afficher, n’hésitez pas à me contacter)

Filter: 01/02/2019 | Pauline

Filter: 01/03/2019 | Pauline

Filter: 01/05/2019 | Pauline

Filter: 10/10/2019 | Pauline

Filter: 01/12/2019 | Pauline

Implémentation

Creation d’une table Calendrier

Il faut créer une table de type Date, qui ne sera pas associée à notre modèle. (Appelée ici PIT Calendar)

Pour créer rapidement une table Calendrier, je vous invite à le faire via le Query Builder. Les articles suivant vous donnerons la démarche.

Generating A Date Dimension Table In Power Query

https://www.mattmasson.com/2014/02/creating-a-date-dimension-with-a-power-query-script/

Création d’une mesure DAX

La mesure DAX suivante permet d’appliquer la date sélectionnée dans notre slicer PIT Calendar à la table Shoes

Comprendre la mesure DAX

ou

Reprendre la valeur sélectionnée pour notre slicer Date.

Cette variable sera appliquée dans notre filtre par la suite

Une variante de l’expression précédente peut être utilisée. Lorsque l’utilisateur ne spécifie pas de dates pour le slicer, nous appliquons la date du jour à notre PIT.

Pourquoi?

  • L’utilisateur souhaite avoir la situation du jour (sans devoir modifier le slicer PIT à chaque ouverture du rapport)
  • L’utilisateur à oublié de créer son rapport avec le slicer PIT. Plutôt que de lui proposer la situation dans le futur, on lui applique la situation actuelle.

La variable contenant maintenant la date sélectionnée par l’utilisateur est appliquée dynamiquement à notre set de données. (Shoes)

Conclusion

Vous savez maintenant comment rendre vos données vivantes.

N’hésitez pas à commenter si vous avez plus d’idées, des améliorations ou des astuces.

Retrouvez les exemples en téléchargeant le fichier Power BI:

https://github.com/arnaudgastelblum/LazySnail/raw/master/LazySnail_PointInTime.pbix

 

Learn DAX from examples: Lazy DAX

Learn DAX from examples: Lazy DAX

My colleague Mathieu Ricour and myself are happy to share you another way to learn DAX.

In Lazy DAX, you will found:

A Power BI Desktop file: https://github.com/arnaudgastelblum/LazySnail/blob/master/LazyDAX.pbix

  • It contains multiple examples based on a simple and understandable set of data
  • With multiple clear examples, you can change the expressions / scripts and directly see the result. (It will help you to understand and develop in DAX)
  • For now it covers:
    • The basics functions (COUNT, DISTINCTCOUNT, SUM, …)
    • CALCULATE function
    • Time Intelligence
    • Semi Additive measures
    • Calculated Columns
    • Rank
    • EARLIER
    • Variables
    • A concreate example: Churn Rate

A Power Point file: https://github.com/arnaudgastelblum/LazySnail/blob/master/LazyDAX.pptx

  • In this power point we provide you some explanations to learn step by step.
  • You can use it to understand the basics (maybe give you a first view of what you can do with DAX and Power BI)
  • If you have to prepare your own DAX training, it could be a starter.

If you have some ideas, amazing scripts, slides, changes or remarks we kindly request you to send us our .pbi or .ppt modified.

We will be happy to add new features, and learn some new stuffs.

I would like to thank Isabelle Van Campenhoudt and Tristan Malherbe for their help and motivation. (Now and for the coming days!!)

Our files are available for download on GitHub

https://github.com/arnaudgastelblum/LazySnail

Pin It on Pinterest