Chaque semaine, découvrez de nouvelles astuces et bonnes pratiques pour devenir un expert !
Voir l'indexle 03-08-2021 05:42 AM
Alors, quel est le défi de cette semaine ?
Les dates... ces valeurs numériques qui portent beaucoup plus d'information que ces chiffres misent ensembles dans l'ordre. Alteryx répresente les dates au format ISO 'yyyy-mm-jj'.
La date est une hiérarchie c'est pourquoi elle nécessite un traitement specifique pour déterminer le niveau dans lequel on applique le calcule et le format des résultats.
Du plus, chaque date a un jour de la semaine qui lui correspond. Encore une information sur le weekend à prendre en compte 😉.
Entrée/Sortie
En sortie, il faudrait, par client, la date de fin de transit ' si j'ai bien compris ' et un message personnalisé avec la date de livraison mise en forme.
Ma Solution
Comme nous avons des informartions dans deux tables, il fallait commencer par les joindre.
plusieurs solutions existent mais j'ai choisis car:
1. même si j'ai des doublons dans les sources je n'aurai jamais des produits cartésiennes
2. Mes jointures se font sur un seul clé de jointure
3. il ne supprime pas les lignes sans correspondance
⚠️ Mais attention au parametrage, car les comportements par défaut de cet outil permet une correspondance partielle.
Maintenant que la date de départ ainsi que l'intervalle en jour sont joints, je peux calculer la date cible de livraison à l'aide de la fonction:
DateTimeAdd
([Date de commande],ToNumber([Temps de transit]) ,'day')
On aura pu finir ici et passer à l'étape suivante mais non, Car le week-end les livraison ne sont pas assurées.
Donc, j'ai commencer par déterminer le jour de la semaine de chaque date ( j'ai vous avez prévenu qu'il y a pleins d’autres informations cachés. Méfiez-vous de l’apparence)
J'ai utilisé le fonction DateTimeFormat et pour les spécificateurs j'ai regardé les documentations d'Alteryx.
Il me reste simplement, à ce stade, de décaler les dates du week-end vers le lundi suivant et pour ça j'ai utilisé la fonction suivante:
IF [Jour de la semaine] = 'samedi'
THEN DateTimeAdd([date de fin],2,'day')
ELSEIF [Jour de la semaine] = 'Dimanche'
THEN DateTimeAdd([date de fin],1,'day')
ELSE [date de fin]
ENDIF
Finalement, il fallait mettre ces ingrédients ensembles et composer le message.
J'ai donc concaténé de text + des champs existants [Jour de la semaine] + des calculs de transformation de format de date DataTimeFormat()
"Date de livraison de la commande : " + [Jour de la semaine]+ ", " + DateTimeFormat([date de fin],'%d %B, %Y',"Français")
Ce n'est pas complètement fini car je devais faire le nettoyage et le tri 😊
Si cela vous a plu n’hésitez surtout pas à me le dire 😉. Vous pouvez aussi me dire s'il y a une autre/meilleure façons de faire. Ce n'est que ma solution.
À la semaine prochaine
Cheers,
Amr
Bonjour @AMansour ,
merci de nous avoir partagé ta solution au défi hebdomadaire #59 : "Quand arrivera votre commande" de @MarieC.
Pour en savoir plus sur l'outil Dates, je vous recommande :
Excellente journée à tous,
Hello, le sujet des dates vous intéresse !!!
Je vous invite à lire, liker et enregistrer dans vos favoris les ACE's Insights de @Ladarthure
Bonjour à tous,
un nouvel article de @Ladarthure vient de sortir : " ACE's Insights : Le calcul des jours fériés français ", je suis sûre qu'il va en aider plus d'un.
Très bonne fin de journée à tous,