Chaque semaine, découvrez de nouvelles astuces et bonnes pratiques pour devenir un expert !
Voir l'indexle 03-10-2021 02:20 AM - dernière modification le 03-10-2021 02:29 AM par StephV
Voici un thème qui me trottait dans la tête depuis un certain temps, je cherchais depuis longtemps à pouvoir obtenir la liste des jours fériés français pour une année donnée. J’ai, dans un premier temps cherché une base de donnée, que je trouvais trop peu dynamique. J’ai ensuite regardé du côté des API en me disant que quelque chose devait bien exister quelque part et je n’ai pas trouvé d’API gratuite me permettant d’obtenir ces données.
Retour à la case départ, ou pas vraiment, je me suis renseigné sur les jours fériés français et j’ai commencé à essayer de traduire ceci en Alteryx !
Les fêtes civiles :
Ici rien de trop compliqué, ces fêtes sont à des dates « fixes » et ne bougent pas, nous avons donc :
Pour les intégrer dans Alteryx c’est assez simple, une formule et le tour est joué ! Les journées civiles faites, il ne me reste plus qu’à faire les fêtes religieuses.
Les fêtes religieuses :
Pour celles-ci, j’ai commencé de manière très simple par le calcul de certaines d’entre elles :
Et, c’est à ce moment là que les choses se corsent, il ne reste que 3 fêtes mais qui sont toutes basées sur le dimanche de Pâques.
Si on regarde comment est fait ce jour et après la lecture d’un article wikipedia, on apprend que Pâques se déroule bien le dimanche, mais pas n’importe lequel, c’est le premier dimanche après la première pleine lune du printemps (et là l’aspect data devient un peu moins simple), ceci étant la définition donnée par le concil de Nicée en 325.
Ne nous arrêtons pas sur cet aspect historique et tentons tout de même de calculer ces jours fériés.
Un astronome Belge du nom de Jan Meeus (né en 1928 et toujours en vie) a notamment développé des méthodes permettant de calculer beaucoup de choses en astronomie, les éphémérides notamment. Mais surtout dans notre cas, il a développé un algorithme appelé Butcher Meeus permettant de déterminer la date du dimanche de Pâques qui se présente sous la forme suivante :
Dividende |
Diviseur |
Quotient |
Reste |
Explication |
Année |
19 |
|
n |
Cycle de Méton |
Année |
100 |
c |
u |
Centaine et rang de l'année |
c |
4 |
s |
t |
Siècle bissextile |
c + 8 |
25 |
p |
|
Cycle de proemptose |
c - p + 1 |
3 |
q |
|
Proemptose |
19 n + c - s - q + 15 |
30 |
|
e |
Épacte |
u |
4 |
b |
d |
Année bissextile |
2 t + 2 b - e - d + 32 |
7 |
|
L |
Lettre dominicale |
n + 11 e + 22 L |
451 |
h |
|
Correction |
e + L - 7 h +114 |
31 |
m |
j |
|
Avec ces éléments, on dispose donc de la règle permettant de calculer. A savoir qu’à chaque fois, il faut calculer l’ensemble des quotient et reste pour obtenir le mois et le jour qui sont les 2 derniers obtenus donc m et j.
Pour calculer un quotient dans Alteryx, on va utiliser un calcul simple :
Floor( [dividende] / [diviseur] ) qui renverra donc le quotient en arrondi inférieur grâce à la fonction floor.
Pour obtenir le Reste, on utilise la fonction mathématique Modulo qui se traduit sous alteryx de la façon suivante :
Mod( [dividende], [diviseur]) et qui renverra donc le reste.
Avec tous ces éléments on peut calculer la date du dimanche de Pâques et ainsi simplement les 3 derniers jours restants :
Pour voir le détail des calculs, vous pouvez télécharger le workflow ci-joint.
J’espère que cet article vous aura intéressé et que vous aurez appris autant de chose que moi quand j’ai réalisé ces calculs.
Merci @Ladarthure pour ce post très intéressant.
J'avais déjà mis en place une fonction de calcul des jours fériés au travers d'une fonction pour un autre outil ETL mais sans m'attarder sur l'algorithme présent dans le code (j'avais récupéré le bout de code tel quel). Je viens d'aller vérifier et je te confirme que c'est le même 🙂
Sinon sur le site data.gouvfr, des datasets sont mis à disposition pour les jour fériés :
https://www.data.gouv.fr/fr/datasets/jours-feries-en-france/
Les exports sont disponibles au format CSV, JSON et ICS. Les URLs sont stables.
Les exports comportent les jours fériés :
jusqu'à 20 ans dans le passé et 5 ans dans le futur par rapport à l'année courante pour les formats CSV et JSON ;
jusqu'à 5 ans dans le passé et 5 ans dans le futur par rapport à l'année courante pour le format ICS (utile pour les calendriers).
Contrainte : il faut re-télécharger les fichiers régulièrement car la visibilité n'est que sur 5 ans.
Merci @Toons pour l'info sur la mise à disposition sur data.gouv, cela permet effectivement de répondre à certains besoins, mais j'ai eu envie d'automatiser un peu plus, et je trouvais le challenge intéressant^^
Merci @Toons pour ce complément d'information. Très utile effectivement.