2025-03-26
Les groupes de calcul offrent des possibilités énormes en termes de dynamisme et de fonctionnalité du modèle. Et avec elles les fonctions d’intelligence temporelle peuvent être appliquées à tous les calculs d’un modèle. J’ai essayé de regrouper ici un maximum de calculs qui exploitent les fonctions de time intelligence.
Standard calculation = SELECTEDMEASURE() // Calcul par défaut : pas d'impact
Previous year = CALCULATE(SELECTEDMEASURE(), SAMEPERIODLASTYEAR('Calendar'[Date])) // Valeur sur la même période mais pour l'année précédente
Previous month = CALCULATE(SELECTEDMEASURE(), DATEADD('Calendar'[Date], -1, MONTH) // Valeur sur la même période mais pour le mois précédent
Previous period = CALCULATE(SELECTEDMEASURE(), DATESINPERIOD('Calendar'[Date], MIN('Calendar'[Date]) - 1, DATEDIFF(MAX('Calendar'[Date]), MIN('Calendar'[Date]), DAY) - 1, DAY)) // Valeur sur le même nombre de jours précedents la période observée
YoY Variation = DIVIDE(SELECTEDMEASURE(), CALCULATE(SELECTEDMEASURE(), SAMEPERIODLASTYEAR('Calendar'[Date]))) - 1 // Variation entre l'année courante et l'année précédente
MoM Variation = DIVIDE(SELECTEDMEASURE(), CALCULATE(SELECTEDMEASURE(), DATEADD('Calendar'[Date], -1, MONTH))) - 1 // Variation entre le mois courant et le mois précédent
Versus previous year = CALCULATE(SELECTEDMEASURE(), SAMEPERIODLASTYEAR('Calendar'[Date])) - SELECTEDMEASURE() // Ecart (soustraction) entre l'année courante et l'année précédente
6 rolling month = CALCULATE(SELECTEDMEASURE(), DATESINPERIOD('Calendar'[Date], MAX('Calendar'[Date]), -6, MONTH)) // Cumul sur les six derniers mois glissants
12 rolling month = CALCULATE(SELECTEDMEASURE(), DATESINPERIOD('Calendar'[Date], MAX('Calendar'[Date]), -12, MONTH)) // Cumul sur les douze derniers mois glissants
YTD = CALCULATE(SELECTEDMEASURE(), DATESYTD('Calendar'[Date])) // Valeurs cumulées du début de l'année jusqu'à la période courante
YTD from june = CALCULATE(SELECTEDMEASURE(), DATESYTD('Calendar'[Date], "05-31")) // Valeurs cumulées du début du mois de juin jusqu'à la période courante
YTD due month = CALCULATE(SELECTEDMEASURE(), FILTER(DATESYTD('Calendar'[Date]), [Date] <= EOMONTH(MAX('Calendar'[Date]) + 1, -1))) // Valeurs cumulées du début de l'année jusqu'à la fin du dernier mois complet
Il peut être fastidieux d’écrire chaque calcul un-à-un. Pour gagner du temps, on peut insérer les calculs directment dans les fichiers sources du modèle.
table 'Time intelligence'
lineageTag: 6a4a2417-7603-414f-92bb-862acf99748a
calculationGroup
calculationItem 'Standard calculation' = SELECTEDMEASURE()
calculationItem 'Previous year' = CALCULATE(SELECTEDMEASURE(), SAMEPERIODLASTYEAR('Calendar'[Date])) // Valeur sur la même période mais pour l'année précédente
calculationItem 'Previous month' = CALCULATE(SELECTEDMEASURE(), DATEADD('Calendar'[Date], -1, MONTH) // Valeur sur la même période mais pour le mois précédent
calculationItem 'Previous period' = CALCULATE(SELECTEDMEASURE(), DATESINPERIOD('Calendar'[Date], MIN('Calendar'[Date]) - 1, DATEDIFF(MAX('Calendar'[Date]), MIN('Calendar'[Date]), DAY) - 1, DAY)) // Valeur sur le même nombre de jours précedents la période observée
calculationItem 'YoY Variation' = DIVIDE(SELECTEDMEASURE(), CALCULATE(SELECTEDMEASURE(), SAMEPERIODLASTYEAR('Calendar'[Date]))) - 1 // Variation entre l'année courante et l'année précédente
calculationItem 'MoM Variation' = DIVIDE(SELECTEDMEASURE(), CALCULATE(SELECTEDMEASURE(), DATEADD('Calendar'[Date], -1, MONTH))) - 1 // Variation entre le mois courant et le mois précédent
calculationItem 'Versus previous year' = CALCULATE(SELECTEDMEASURE(), SAMEPERIODLASTYEAR('Calendar'[Date])) - SELECTEDMEASURE() // Ecart (soustraction) entre l'année courante et l'année précédente
calculationItem '6 rolling month' = CALCULATE(SELECTEDMEASURE(), DATESINPERIOD('Calendar'[Date], MAX('Calendar'[Date]), -6, MONTH)) // Cumul sur les six derniers mois glissants
calculationItem '12 rolling month' = CALCULATE(SELECTEDMEASURE(), DATESINPERIOD('Calendar'[Date], MAX('Calendar'[Date]), -12, MONTH)) // Cumul sur les douze derniers mois glissants
calculationItem 'YTD' = CALCULATE(SELECTEDMEASURE(), DATESYTD('Calendar'[Date])) // Valeurs cumulées du début de l'année jusqu'à la période courante
calculationItem 'YTD from june' = CALCULATE(SELECTEDMEASURE(), DATESYTD('Calendar'[Date], "05-31")) // Valeurs cumulées du début du mois de juin jusqu'à la période courante
calculationItem 'YTD due month' = CALCULATE(SELECTEDMEASURE(), FILTER(DATESYTD('Calendar'[Date]), [Date] <= EOMONTH(MAX('Calendar'[Date]) + 1, -1))) // Valeurs cumulées du début de l'année jusqu'à la fin du dernier mois complet
column 'Time intelligence calculation'
dataType: string
lineageTag: 5a250460-66c0-4a3b-a562-23a34d4d9cfe
summarizeBy: none
sourceColumn: Name
sortByColumn: Ordinal
annotation SummarizationSetBy = Automatic
column Ordinal
dataType: int64
formatString: 0
lineageTag: eb100106-9f8f-4e9f-80b2-c55b9baf990c
summarizeBy: sum
sourceColumn: Ordinal
annotation SummarizationSetBy = Automatic
Et voila 👍