0% ont trouvé ce document utile (0 vote)
104 vues14 pages

Fonctions Time Intelligence

Transféré par

sandro.keisser
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
104 vues14 pages

Fonctions Time Intelligence

Transféré par

sandro.keisser
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd

Fonctions Time Intelligence

Table des matières


Fonctions Time Intelligence....................................................................................................................1
Introduction........................................................................................................................................2
Utiliser des fonctions Time Intelligence DAX..........................................................................3
Spécification de la table de dates......................................................................................3
Synthèses dans le temps......................................................................................................4
Comparaisons dans le temps..............................................................................................5
Calculs Time Intelligence supplémentaires............................................................................8
Calculer de nouvelles occurrences........................................................................................9
Calculs d’instantanés...............................................................................................................11
Résumé..............................................................................................................................................15
Introduction
Effectué100 XP

 1 minute

Time Intelligence concerne les calculs dans le temps. Plus précisément,


Time Intelligence est associé aux calculs de dates, de mois, de trimestres
ou d’années, et probablement du temps. Il est rare que vous deviez
calculer au fil du temps en termes d’heures, de minutes ou de secondes.

Dans les calculs DAX (Data Analysis Expressions), Time Intelligence


correspond à la modification du contexte de filtre pour les filtres de date.

Par exemple, dans la société Adventure Works, l’année financière


commence le 1er juillet et se termine le 30 juin de l’année suivante. La
société produit un visuel de table qui affiche le chiffre d’affaires mensuel
et le chiffre d’affaires en cumul annuel jusqu’à ce jour (YTD).

Le contexte de filtre pour Août 2017 contient chacune des 31 dates du


mois d’août, qui sont stockées dans la table Date. Toutefois, le chiffre
d’affaires en cumul annuel jusqu’à ce jour calculé pour Août
2017 applique un contexte de filtre différent. Celui-ci va de la première
date de l’année jusqu’à la dernière date dans le contexte de filtre. Dans
cet exemple, il s’agit du 1er juillet 2017 au 31 août 2017.

Les calculs Time Intelligence modifient les contextes de filtre de date. Ils
peuvent vous aider à répondre à ces questions relatives au temps :
 Quelle est l’accumulation du chiffre d’affaires pour l’année, le
trimestre ou le mois ?
 Quel chiffre d’affaires a été produit pour la même période l’année
dernière ?
 Quelle croissance du chiffre d’affaires a été réalisée par rapport à la
même période l’année dernière ?
 Combien de nouveaux clients ont passé leur première commande
chaque mois ?
 Quelle est la valeur disponible du stock d’inventaire pour les produits
de l’entreprise ?

Ce module décrit comment créer des mesures Time Intelligence pour


répondre à ces questions.

Utiliser des fonctions Time Intelligence DAX


Effectué100 XP

 5 minutes

DAX comprend plusieurs fonctions Time Intelligence pour simplifier la


tâche de modification du contexte de filtre de date. Vous pouvez écrire un
grand nombre de ces formules Time Intelligence à l’aide d’une
fonction CALCULATE qui modifie les filtres de date, mais cela requiert plus de
travail.

Notes

De nombreuses fonctions Time Intelligence DAX se concentrent sur les


périodes de date standard, notamment les années, les trimestres et les
mois. Si vous avez des périodes de temps irrégulières (par exemple, des
mois financiers qui commencent au milieu du mois civil) ou si vous devez
travailler avec des semaines ou des périodes de temps (heures, minutes,
etc.), les fonctions Time Intelligence DAX ne vous seront pas utiles. Au lieu
de cela, vous devrez utiliser la fonction CALCULATE et transmettre des filtres
de date ou d’heure élaborés à la main.

Spécification de la table de dates

Pour utiliser les fonctions Time Intelligence DAX, vous devez respecter la
configuration requise du modèle prérequis qui indique qu’au moins
une table de dates doit être présente dans votre modèle. Une table de
dates est une table qui répond aux exigences suivantes :

 Elle doit avoir une colonne de type de données Date (ou date/heure),
connue sous le nom de colonne de date.
 La colonne de dates doit contenir des valeurs uniques.
 La colonne de dates ne doit pas contenir de valeurs vides.
 Il ne doit pas y avoir de dates manquantes dans la colonne de dates.
 La colonne de dates doit couvrir des années entières. Une année
n’est pas nécessairement une année civile (janvier-décembre).
 La table de dates doit être indiquée comme une table de dates.

Pour plus d’informations, consultez Créer des tables de dates dans Power
BI Desktop.

Synthèses dans le temps

Un groupe de fonctions Time Intelligence DAX s’intéresse aux synthèses


dans le temps :

 DATESYTD : retourne une table à une seule colonne qui contient des
dates pour YTD (année à ce jour) dans le contexte de filtre actuel. Ce
groupe comprend également les fonctions
DAX DATESMTD et DATESQTD MTD (mois à ce jour) et QTD
(trimestre à ce jour). Vous pouvez transmettre ces fonctions en tant
que filtres dans la fonction DAX CALCULATE.
 TOTALYTD : évalue une expression pour YTD dans le contexte de
filtre actuel. Les fonctions DAX QTD et MTD équivalentes
de TOTALQTD et TOTALMTD sont également incluses.
 DATESBETWEEN : retourne une table contenant une colonne de
dates qui commence à une date de début donnée et continue jusqu’à
une date de fin donnée.
 DATESINPERIOD : retourne une table contenant une colonne de
dates qui commence à une date de début donnée et continue pour le
nombre d’intervalles spécifié.
Notes

Alors que la fonction TOTALYTD est simple à utiliser, vous êtes limité à la
transmission d’une seule expression de filtre. Si vous devez appliquer
plusieurs expressions de filtre, utilisez la fonction CALCULATE, puis
transmettez la fonction DATESYTD comme l’une des expressions de filtre.

Dans l’exemple suivant, vous allez créer votre premier calcul Time
Intelligence qui utilisera la fonction TOTALYTD. La syntaxe est la suivante :

TOTALYTD(<expression>, <dates>, [, <filter>][, <year_end_date>])

La fonction requiert une expression et, comme c’est le cas pour toutes les
fonctions Time Intelligence, une référence à la colonne de date d’une table
de dates marquée. Si vous le souhaitez, une expression de filtre unique ou
la date de fin d’année peut être transmise (obligatoire uniquement lorsque
l’année ne se termine pas le 31 décembre).

Téléchargez et ouvrez le fichier Adventure Works DW 2020 [Link].


Ensuite, ajoutez la définition de mesure suivante à la table Sales qui
calcule le chiffre d’affaires YTD. Mettez en forme la mesure en tant que
devise avec deux décimales.
Revenue YTD =
TOTALYTD([Revenue], 'Date'[Date], "6-30")

La valeur de date de fin d’année "6-30" représente le 30 juin.

Sur la page 1 du rapport, ajoutez la mesure Revenue YTD (Chiffre


d’affaires en cumul annuel à ce jour) au visuel matrice. Notez que cela
produit une synthèse des montants des chiffres d’affaires à partir du début
de l’année jusqu’au mois filtré.

Comparaisons dans le temps

Un autre groupe de fonctions Time Intelligence DAX s’intéresse aux


périodes de temps décalées :

 DATEADD : retourne une table qui contient une colonne de dates,


décalées en avant ou en arrière dans le temps du nombre
d’intervalles spécifié par rapport aux dates dans le contexte de filtre
actuel.
 PARALLELPERIOD : retourne une table contenant une colonne de
dates qui représente une période parallèle aux dates de la colonne de
dates spécifiée, dans le contexte de filtre actuel. Les dates sont
avancées ou reculées dans le temps d’un certain nombre
d’intervalles.
 SAMEPERIODLASTYEAR : retourne une table qui contient une
colonne de dates décalées d’une année en arrière par rapport aux
dates de la colonne de dates spécifiée, dans le contexte de filtre
actuel.
 Il existe de nombreuses fonctions DAX d’assistance pour naviguer
vers l’arrière ou vers l’avant pour des périodes de temps spécifiques,
qui retournent toutes une table de dates. Ces fonctions d’assistance
sont les
suivantes : NEXTDAY, NEXTMONTH, NEXTQUARTER, NEXTYEAR et
PREVIOUSDAY, PREVIOUSMONTH, PREVIOUSQUARTER et PREVIO
USYEAR.

À présent, vous allez ajouter une mesure à la table Sales qui calcule le
chiffre d’affaires de l’année précédente à l’aide de la
fonction SAMEPERIODLASTYEAR. Mettez en forme la mesure en tant que devise
avec deux décimales.

Revenue PY =
VAR RevenuePriorYear = CALCULATE([Revenue],
SAMEPERIODLASTYEAR('Date'[Date]))
RETURN
RevenuePriorYear

Ajoutez la mesure Revenue PY (Chiffre d’affaires par année) au visuel


matrice. Notez qu’elle produit des résultats similaires aux montants du
chiffre d’affaires de l’année précédente.
Ensuite, vous allez modifier la mesure en la
renommant Revenue YoY % puis en mettant à jour la clause RETURN pour
calculer le taux de modification. Veillez à modifier le format en
pourcentage avec deux décimales.

Revenue YoY % =
VAR RevenuePriorYear = CALCULATE([Revenue],
SAMEPERIODLASTYEAR('Date'[Date]))
RETURN
DIVIDE(
[Revenue] - RevenuePriorYear,
RevenuePriorYear
)

Notez que la mesure Revenue YoY % produit un rapport du facteur de


changement pour le chiffre d’affaires mensuel de l’année précédente. Par
exemple, Juillet 2018 représente une augmentation de 106,53 % par
rapport au chiffre d’affaires mensuel de l’année précédente, et Novembre
2018 représente une diminution de 24,22 % par rapport au chiffre
d’affaires mensuel de l’année précédente.
Notes

La mesure Revenue YoY % illustre une bonne utilisation des variables


DAX. La mesure améliore la lisibilité de la formule et vous permet
d’effectuer des tests unitaires sur une partie de la logique de mesure (en
retournant la valeur de la variable RevenuePriorYear). En outre, la
mesure est une formule optimale, car elle n’a pas besoin de récupérer
deux fois la valeur du chiffre d’affaires de l’année précédente. Si vous
l’avez stockée dans une variable, la clause RETURN utilise la valeur de la
variable deux fois.

Calculs Time Intelligence supplémentaires


Effectué100 XP

 5 minutes

Il existe d’autres fonctions Time Intelligence DAX qui retournent une seule
date. Vous en apprendrez davantage sur ces fonctions en les appliquant
dans deux scénarios différents.

Les fonctions DAX FIRSTDATE et LASTDATE retournent la première et la


dernière date dans le contexte de filtre actuel pour la colonne de dates
spécifiée.

Calculer de nouvelles occurrences

Une autre utilisation des fonctions Time Intelligence consiste à compter les
nouvelles occurrences. L’exemple suivant montre comment vous pouvez
calculer le nombre de nouveaux clients pour une période donnée. Un
nouveau client est compté au cours de la période pendant laquelle il a
effectué son premier achat.

Votre première tâche consiste à ajouter la mesure suivante à la


table Sales qui compte le nombre de clients distincts à ce jour (LTD, « life-
to-date »). L’expression « à ce jour » signifie depuis le début de la période
jusqu’à la dernière date du contexte de filtre. Mettez en forme la mesure
en tant que nombre entier en utilisant le séparateur de milliers.

Customers LTD =
VAR CustomersLTD =
CALCULATE(
DISTINCTCOUNT(Sales[CustomerKey]),
DATESBETWEEN(
'Date'[Date],
BLANK(),
MAX('Date'[Date])
),
'Sales Order'[Channel] = "Internet"
)
RETURN
CustomersLTD

Ajoutez la mesure Customers LTD au visuel matrice. Notez qu’il produit


un résultat de clients distincts LTD jusqu’à la fin de chaque mois.

La fonction DATESBETWEEN retourne une table contenant une colonne de


dates qui commence à une date de début donnée et continue jusqu’à une
date de fin donnée. Lorsque la date de début est vide, la première date de
la colonne de date est utilisée. (Inversement, lorsque la date de fin est
vide, la dernière date de la colonne de date est utilisée.) Dans ce cas, la
date de fin est déterminée par la fonction MAX, qui retourne la dernière
date dans le contexte de filtre. Ainsi, si le mois d’août 2017 est dans le
contexte de filtre, la fonction MAX retourne le 31 août 2017, tandis que la
fonction DATESBETWEEN retourne toutes les dates jusqu’au 31 août 2017.

Ensuite, vous allez modifier la mesure en la renommant New


Customers (Nouveaux clients) et en ajoutant une deuxième variable pour
stocker le nombre de clients distincts avant la période dans le contexte de
filtre. La clause RETURN soustrait maintenant cette valeur des clients LTD
pour produire un résultat, qui correspond au nombre de nouveaux clients
dans la période.

New Customers =
VAR CustomersLTD =
CALCULATE(
DISTINCTCOUNT(Sales[CustomerKey]),
DATESBETWEEN(
'Date'[Date],
BLANK(),
MAX('Date'[Date])
),
'Sales Order'[Channel] = "Internet"
)
VAR CustomersPrior =
CALCULATE(
DISTINCTCOUNT(Sales[CustomerKey]),
DATESBETWEEN(
'Date'[Date],
BLANK(),
MIN('Date'[Date]) - 1
),
'Sales Order'[Channel] = "Internet"
)
RETURN
CustomersLTD - CustomersPrior

Pour la variable CustomersPrior, notez que la fonction DATESBETWEEN inclut


les dates jusqu’à la première date dans le contexte de filtre moins une.
Étant donné que Microsoft Power BI stocke en interne les dates sous forme
de nombres, vous pouvez ajouter ou soustraire des nombres pour déplacer
une date.

Calculs d’instantanés

Parfois, des données de faits sont stockées en tant qu’instantanés dans le


temps. Les exemples courants incluent des niveaux de stock ou des soldes
de compte. Un instantané des valeurs est chargé périodiquement dans la
table.

Lors de la synthèse des valeurs d’instantané (comme les niveaux de


stock), vous pouvez synthétiser les valeurs sur n’importe quelle
dimension, à l’exception de la date. L’ajout des décomptes du niveau de
stock entre les catégories de produits donne une synthèse significative,
mais pas l’ajout des décomptes du niveau de stock entre les dates. L’ajout
du niveau du stock d’hier à celui d’aujourd’hui n’est pas une opération
utile (à moins que vous ne souhaitiez obtenir une moyenne de ce résultat).

Lorsque vous synthétisez des tables d’instantanés, les formules de mesure


peuvent utiliser des fonctions Time Intelligence DAX pour appliquer un
filtre de date unique.

Dans l’exemple suivant, vous allez explorer un scénario pour la société


Adventure Works. Basculez vers la vue de modèle et sélectionnez le
diagramme de modèle Inventory (Inventaire).

Notez que le diagramme affiche trois


tables : Product (Produit), Date et Inventory (Inventaire). La
table Inventory stocke des instantanés des soldes unitaires pour chaque
date et chaque produit. Plus important encore, la table ne contient aucune
date manquante et aucune entrée dupliquée pour un produit à la même
date. En outre, le dernier enregistrement d’instantané est stocké pour la
date du 15 juin 2020.

Maintenant, basculez vers la vue rapport et sélectionnez la page 2 du


rapport. Ajoutez la colonne UnitsBalance de la table Inventory au visuel
matrice. Sa synthèse par défaut est définie sur les valeurs de somme.
Cette configuration visuelle est un exemple de la manière de ne pas
synthétiser une valeur d’instantané. L’ajout de soldes d’instantané
quotidiens ne produit pas un résultat significatif. Par conséquent,
supprimez le champ UnitsBalance du visuel matrice.

À présent, vous allez ajouter à la table Inventory une mesure qui


additionne la valeur UnitsBalancepour une seule date. La date est la
dernière date de chaque période. Cela s’obtient à l’aide de la
fonction LASTDATE. Mettez en forme la mesure en tant que nombre entier
avec le séparateur de milliers.

Stock on Hand =
CALCULATE(
SUM(Inventory[UnitsBalance]),
LASTDATE('Date'[Date])
)
Notes

Notez que la formule de mesure utilise la fonction SUM. Une fonction


d’agrégation doit être utilisée (les mesures n’autorisent pas les références
directes aux colonnes), mais étant donné qu’une seule ligne existe pour
chaque produit pour chaque date, la fonction SUM ne fonctionne que sur
une seule ligne.

Ajoutez la mesure Stock on Hand (Stock disponible) au visuel matrice. La


valeur pour chaque produit est maintenant basée sur le dernier solde
unitaire enregistré pour chaque mois.

La mesure retourne des cellules vides pour « June 2020 », car aucun
enregistrement n’existe pour la dernière date en juin. Selon les données, il
n’est pas encore arrivé.

Le filtrage sur la dernière date du contexte de filtre présente des


problèmes inhérents : Une date enregistrée n’existe peut-être pas, car elle
ne s’est pas encore produite, ou peut-être parce que les soldes du stock
ne sont pas enregistrés les week-ends.

L’étape suivante consiste à ajuster la formule de mesure afin de


déterminer la dernière date qui a un résultat non vide puis de filtrer sur
cette date. Vous pouvez accomplir cette tâche à l’aide de la fonction
DAX LASTNONBLANK.

Utilisez la définition de mesure suivante pour modifier la


mesure Stock on Hand.

Stock on Hand =
CALCULATE(
SUM(Inventory[UnitsBalance]),
LASTNONBLANK(
'Date'[Date],
CALCULATE(SUM(Inventory[UnitsBalance]))
)
)

Dans le visuel matrice, notez les valeurs pour juin 2020 et le total
(représentant l’année entière).

La fonction LASTNONBLANK est une fonction d’itérateur. Elle retourne la


dernière date qui produit un résultat non vide. Elle obtient ce résultat en
effectuant une itération sur toutes les dates dans le contexte de filtre dans
l’ordre chronologique décroissant. (À l’inverse, la
fonction FIRSTNONBLANK itère dans l’ordre chronologique croissant.) Pour
chaque date, elle évalue l’expression transmise. Lorsqu’elle rencontre un
résultat non vide, la fonction retourne la date. Cette date est ensuite
utilisée pour filtrer la fonction CALCULATE.

Notes

La fonction LASTNONBLANK évalue son expression dans le contexte de ligne.


La fonction CALCULATE doit être utilisée pour effectuer la transition du
contexte de ligne vers le contexte de filtre, afin d’évaluer correctement
l’expression.

Maintenant, masquez la colonne UnitsBalance de la table Inventory.


Cela empêchera les auteurs de rapports de synthétiser de manière
inappropriée les soldes unitaires d’instantané.

Résumé
Effectué100 XP

 5 minutes

Dans ce module, vous avez appris que les calculs Time Intelligence
s’appliquent à la modification du contexte de filtre pour les filtres de date.
Vous avez découvert de nombreuses fonctions Time Intelligence DAX, qui
prennent en charge la création de calculs, comme YTD (year-to-date) ou
YoY (year-over-year). Vous avez également appris que les calculs LTD (life-
to-date) peuvent vous aider à compter de nouvelles occurrences sur vos
données de faits, et que les données d’instantané peuvent être filtrées de
façon à garantir qu’une seule valeur d’instantané est retournée.

Vous aimerez peut-être aussi