La création de la colonne Semaine : quelle norme ?

Proposé par André Meyer-Roussilhon

13 novembre 2019

Data club | Daxologie

création de table | modèle de données | semaine | time intelligence

Restez à l'écoute, abonnez-vous à la newsletter (2 fois / mois)

7 + 5 =

Les normes de calcul de la semaine

Deux systèmes de calcul du numéro de semaine co-existent (dans Power BI ou ailleurs) : pour le calendrier grégorien, la semaine 1 commence le premier janvier, et se termine le premier dimanche ou le premier lundi de l’année (respectivement WEEKNUM([Date] ;1) ou WEEKNUM([Date] ;2) en DAX). C’est le système utilisé aux USA notamment.

L’autre système, largement utilisé en Europe, « est un système de calendrier faisant partie de la norme d’horodatage ISO 8601. Le système est principalement utilisé par les gouvernements et entreprises pour baser également les années comptables et fiscales et la planification de projets à cycles hebdomadaires de travail, ainsi que pour le paiement des salaires ou des loyers (quand ceux-ci sont versés hebdomadairement) » (Wikipédia). Dans cette norme, la première semaine de l’année est celle contenant 4 jours au moins. D’où l’existence d’un décalage entre les deux calendriers : dans le premier, une semaine 53, d’une durée comprise entre 1 et 6 jours, va s’intercaler en fin d’année (le 31 décembre 2018 fait donc partie de la semaine 201853) ; dans le second, la semaine 1 peut débuter dès les derniers jours de l’année précédente (le 31 décembre 2018 fait donc partie de la semaine 201901).

Une différence de numérotation

Le calcul de la semaine en norme ISO 8601 : un paramètre caché

C’est, je crois, Gerhard Brueckl, dans son blog, qui signale dès 2012 l’existence d’un paramètre caché pour la fonction WEEKNUM (http://blog.gbrueckl.at/2012/04/iso-8601-week-in-dax/) : en effet, WEEKNUM([Date] ;21) renvoie directement le numéro de semaine dans la norme ISO.

Par convention, cette semaine est notée W suivi du numéro de semaine :

"W" & FORMAT(WEEKNUM([Date];21);"00")

Mais comme le montre l’image ci-dessus, l’année ISO peut également varier : le 31 décembre 2018 appartient à 2018-S53 et à 2019-W01. Gerhard Brueckl propose donc le calcul suivant pour la colonne Année_ ISO :

Que j’adapte en introduisant des variables (pour optimiser le script) et en complétant avec le numéro de semaine (selon la norme officielle) :

Cette colonne va s’avérer particulièrement importante pour le calcul des cumuls hebdomadaires, comme nous le verrons dans le prochain billet.

Un nouveau script pour la table Datum

Je vous propose donc un nouveau script pour la table, que vous pouvez afficher ICI.

La table filtrée sur 2018 et 2019 semaine W01 et W52

Articles associés :

Une étude du contexte de filtre

Le contexte de filtre est assurément le cœur du DAX, le langage d’analyse de Power BI et de Power Pivot dans Excel. Comprendre le contexte de filtre, c’est comprendre 90% du DAX : ce n’est pas moi qui le dis, mais les deux sommités mondiales sur ce langage (Marco et Alberto, de SQLBI). Dans ce billet, je vous propose de regarder une formule et de commenter le contexte de filtre et ses évolutions.

Construire et lire une moyenne mobile dans Power BI

Construire et lire une moyenne mobile dans Power BI

Dans ce billet, je vous propose une étude très poussée de la moyenne mobile et de sa mise en œuvre dans Power BI. La moyenne mobile est un outil primordial pour « lire » les données, en particulier lorsque les variations sont importantes, mais aussi un outil prédictif. Et notamment, tout un pan des stratégies d’investissement repose sur la lecture de ces moyennes

Meet investigator : une formule DAX pour retrouver les valeurs vides

Les données ne sont pas toujours aussi « propres » qu’on pourrait l’espérer. Une référence dans la table des transactions peut être absente dans la table de dimension (une référence produit manquant par exemple). Dans Power BI, cela se traduit par une ligne blanche. La question est de trouver ce qui coince : investigator va vous aider !