
Tout utilisateur de bases de données ou toute personne susceptible de traiter des données est confrontée à l’utilisation des fonctions de dates dans Alteryx.
Il existe des fonctions dates dédiées, certaines connues, d’autres moins.
Je vous propose ici un rapide tour d’horizon sur les fonctions de dates et ce qu’elles permettent d’accomplir dans Alteryx (ou au moins celles que j’utilise le plus souvent dans mes projets).
Passer du format texte au format date dans Alteryx
DateTimeFormat ( [date], 'format' )
C’est la fonction qui permet de transformer une date stockée au format Date en format texte. Par exemple, passer de '2021-01-05' (format standard Alteryx) à 'mardi 5 janvier 2021'.
DateTimeParse ( [date], 'format' )
Cette fonction permet ici de transformer un texte en date, donc de faire l’inverse de la fonction précédente.
Si vous êtes comme moi et que vous confondez les deux, une méthode pour retenir “qui fait quoi” serait de retenir que : « DateTimeFormat permet de formater une date »
Les formats dates dans les formules :
Passons maintenant aux options et différents formats acceptés. Dans un premier temps, si vous souhaitez de la documentation sur ce sujet, je vous invite à consulter l’article Alteryx sur ce sujet, il contient toutes les informations relatives aux différents formats dont on peut avoir besoin.
https://help.alteryx.com/fr/current/designer/datetime-functions
Il est également possible de spécifier la langue.
Prenons l’exemple de la date suivante : 2021-01-05
En utilisant la formule :
DateTimeFormat( [date_start] ,'%A %d %B %Y (%Y-%m-%d)', 'fr') qui renverrai à Mardi 05 janvier 2021 (2021-01-05)
En utilisant le dernier paramètre, on peut donc traduire rapidement la date et la transformer en format lisible et facile à exploiter. Ce dernier paramètre est optionnel. De base, il transforme vos dates en anglais mais il est également possible d’attribuer une langue différente à chaque ligne.
Modifier une date ou faire des calculs de dates dans Alteryx:
Pour réaliser des calculs de dates, plusieurs options s’offrent à vous. Par exemple, pour ajouter une semaine ou un mois à une date ou calculer l’écart en jours/mois/années entre deux dates.
DateTimeAdd ( [date], 5, 'days' ) Cette opération permet d’ajouter 5 jours à une date donnée, on peut donc facilement calculer des échéances !
DateTimeDiff ( [date de fin], [date de début], 'days' ) calcule le nombre de jours entre 2 dates, cela permet de calculer des délais, ou de l’ancienneté .
Pour les 2 fonctions ci-dessus, on peut changer l’unité en inscrivant «months», afin de remplacer les jours par des mois.
En bonus, voici une fonction que je trouve très utile qui permet de calculer le premier jour du mois ou le dernier jour du mois d’une date donnée ou de modifier une date donnée :
DateTimeTrim ( [date], 'format' )
Dans le format, j’utilise soit 'firstofmonth' pour voir le premier jour du mois pour la date associée ou 'lastofmonth' pour obtenir le dernier jour du mois.
Voici donc quelques rappels et astuces dans le cadre d’utilisation des dates dans Alteryx.
Les autres outils à utiliser avec des dates dans Alteryx
De nombreuses possibilités s’offrent à vous pour optimiser votre utilisation de dates dans Alteryx. Au quotidien, j’ai l’habitude de combiner l’utilisation de fonctions de dates avec d’autres outils, dont je vais vous parler maintenant, pour créer davantage de dynamisme.
Calculer une différence de jours ouvrés
La première astuce concerne donc le calcul du nombre de jours ouvrés… On peut calculer des différences entre 2 dates en jours, mais quand on veut calculer un délai prenant par exemple en compte les weekends, il faut utiliser quelques astuces.
Dans ce cas, il est nécessaire d’avoir une structure particulière avec, sur chaque ligne, un événement comportant une date de début et une date de fin
Avec ces données, on va générer une ligne par date en utilisant l’outil générer des lignes.
Une fois ceci réalisé, il ne reste plus qu’à filtrer la sélection pour exclure les jours que l’on souhaite retirer puis ajouter un outil agrégé pour faire le comptage.
Créer des filtres dynamiques en se basant sur des dates.
Face au besoin d’industrialiser un processus et la nécessité de filtrer des données de dates, il est nécessaire de filtrer pour ne conserver que les données que l’on souhaite exploiter et analyser.
Par exemple, si dans mon reporting je souhaite avoir les données de la semaine précédente, je vais filtrer pour ne prendre que ce qui a été réalisé avant le dimanche précédent.
D’une manière générale, peu importe les données, que l’on a il y a plusieurs possibilités :
Utiliser un filtre et plus spécialement la partie filtre personnalisé où l’on peut y mettre ce que l’on souhaite :
- Ne prendre que ce qui a été réalisé avant le premier du mois précédent
[date_dataset] < DateTimeTrim ( [date_du_jour], ‘firstofmonth’)
- Filtrer sur l’année en cours
DateTimeYear( [date_dataset] ) = DateTimeYear( DateTimeToday() )
Quand on travaille sur des bases de données, utiliser les dynamic input et dynamic input IN-DB
o Cela va permettre de passer une requête dynamique en ayant calculé les dates auparavant. C’est cependant une opération qui peut être un peu plus technique.
Générer des fichiers d’historisation
o En utilisant l’option « prendre le nom du fichier dans le champ » dans l’outil “sortie de données”. Cela permet de générer un fichier suffixé de la ou les valeurs du champ.
Obtenir des dates maximales et minimales d’un jeu de données
o Avec l’outil d’agrégation, on peut agréger les données en faisant un maximum ou un minimum sur le champ de dates en question.
Vérifier ou catégoriser en fonction de dates d’origines quand on a beaucoup de tranches distinctes
o Plutôt que de faire une formule ”if” qui serait très longue et peu lisible, on peut facilement utiliser un fichier de paramétrage avec la date de début et date de fin, puis au choix, utiliser un “Générer des lignes”, ou alors utiliser un outil “append fields” en autorisant les produits cartésiens puis comparer les dates. (ci-dessous 2 captures d’écrans pour leur utilisation)
En résumé, il est possible d’utiliser des dates de beaucoup de façons différentes, mais d’une manière générale elles sont utilisées pour calculer des délais, ordonner des données ou filtrer des données.
Une astuce générale et une sorte de “cheat sheet” que l’on peut utiliser est d’avoir un workflow qui contient, en se basant sur une date, l’ensemble des périodes disponible ou utile pour son organisation.. Par exemple, en me basant sur la date du jour, je peux avoir accès à des formules permettant d’obtenir
- Le premier jour de l’année
- Le dimanche précédent
- Le numéro de semaine
- La période d’arrêté
- Ou toute autre date qui pourrait vous être utile !
En utilisant quelques formules, il est possible de filtrer de manière dynamique tout en gagnant du temps.
Calculer les jours fériés Français en utilisant l’année
Voici un thème qui me trottait en 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. Dans un premier temps, j’ai trouvé une base de données mais je la trouvait trop peu dynamique, 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.
J’ai finalement choisi de traduire les jours fériés français sur Alteryx par moi-même, 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 :
- 1er Janvier : Le jour de l’an
- 1er Mai : La fête du travail
- 8 Mai : Fête de la victoire (fin de la seconde guerre mondiale)
- 14 Juillet : Fête nationale (prise de la Bastille en 1789)
- 11 Novembre : Armistice de la première guerre mondiale
Pour les intégrer dans Alteryx c’est assez simple, une formule et le tour est joué ! Les journées civiles traitées, il ne me reste plus qu’à m’occuper des 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 :
- 25 Décembre : Noël
- 1er Novembre : Toussaint
- 15 Août : Assomption
Et c’est à ce moment-là que les choses se corsent, les 3 fêtes restantes sont toutes basées sur le dimanche de pâques.
Pour mieux comprendre les raisons qui déterminent cette fête religieuse, j’ai cherché des précisions sur Wikipedia. Voici le fruit de mes recherches : le premier concile de Nicée a statué, en l’an 325, sur la tenue du dimanche de Pâques le premier dimanche qui a lieu après la pleine lune du printemps. Difficile de traduire cette règle en langage data…
Néanmoins, j’ai choisi de continuer mes recherches afin de trouver un moyen de calculer ces jours fériés.
C’est alors que j’ai découvert Jan Meeus, un astronome Belge né en 1928 et toujours en vie. Au cours de sa carrière, il a développé des méthodes permettant de calculer beaucoup de choses en astronomie, les éphémérides notamment. Mais, dans notre cas, il a développé un algorithme appelé “Butcher Meeus” permettant de déterminer la date du dimanche de pâques. Il 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 |
Cette logique scientifique me permet de définir plus sereinement ma règle de calcul pour ces jours fériés.
A savoir qu’à chaque fois, il faut calculer l’ensemble des quotients 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 :
- Lundi de pâques : dimanche de Pâques + 1 Jour
- Jeudi de l’ascension : dimanche de Pâques + 39 jours
- Lundi de pentecôte : dimanche de Pâques + 50 jours
Pour conclure
J’espère que cet article vous aura intéressé et que vous aurez appris autant de choses que moi quand j’ai réalisé ces calculs. Les fonctions dates dans Alteryx sont un sujet vaste à developper.
Vous pouvez également vous inscrire gratuitement à nos formations découverte Alteryx afin de découvrir l'outils et de bénéficier des conseils et de l'accompagnement de nos formateurs officiels.
Si vous souhaitez découvrir l'outils par vous même et tester les différentes astuces que vous avez découvert dans l'article.