Power Query : Transformer date en jour de la semaine avec conditions

Bonjour,

Je suis en train d'essayer de passer d'une colonne de type Date/Heure en Date.DayOfWeekName.

J'ai réutilisé une solution qui m'avait été donnée sur le forum pour un sujet ressemblant, mais je n'arrive pas à aller au bout.

Je n'obtiens aucun message d'erreur mais aucune transformation n'a lieu sur ma colonne.

Fichier Test :

Hey,

Avec ceci ?

= Table.AddColumn(Source, "Nom jour", each Date.DayOfWeekName(Date.From([Date])))

@+

Salut, comment tu vas ?

J'ai oublié la moitié de mon message...

C'est surtout que j'ai des conditions qui me gênent lors du transfert de "Date" vers "Nom du jour"

= Table.ReplaceValue(SemaineCorrigée,each [Date],each 
        let 
            h = Time.Hour(_),
            w = Date.DayOfWeek(_, Day.Monday)
        in 
            if (h >= 0 and h < 5) then  
               if (h >= 0 and h < 5 and w = 0) then "Dimanche" 
               else Date.DayOfWeekName(Date.AddDays(_, -1), Day.Monday)

            else Date.DayOfWeekName(_, Day.Monday),
    Replacer.ReplaceValue,
    {"Date"}
)

En gros je veux soustraire un jour si l'heure de la date est entre minuit et 5h (exclus) soit si j'ai 09/04/2024 02:00:00 alors j'obtiendrai "lundi" en sortie

Et j'ai rajouté une autre condition pour traiter le problème du "lundi" que j'ai définis comme étant le jour "0". Si j'effectue l'opération je retombe à -1 or la plage des jours est de (0 ; 6).

Mais ça n'a pas fonctionné

Hey,

Je ne comprends pas pourquoi on ne fait pas directement le test sur la date. On récupère l'heure, on fait le test si c'est entre minuit et 5h et si c'est vrai on fait -1jour sinon on met la date.

Une fois que t'as la date modifiée tu récupères le nom du jour :

= Table.ReplaceValue(SemaineCorrigée,each [Date],each 
        let 
            h = Time.Hour(_),
            t = if h >= 0 and h < 5 then Date.AddDays(Date.From(_),-1) else Date.From(_)
        in 
            Date.DayOfWeekName(t),
    Replacer.ReplaceValue,
    {"Date"}
)

@+

Ah oui c'est tellement plus simple, je n'ai pas eu ce recul.

Par contre je suis obligé de changer les _ par [Date] pour que ça fonctionne. Je pensais que les _ renvoyaient justement à la colonne actuelle. D'ailleurs je n'ai pas de message d'erreur de syntaxe ou autre là dessus.

Merci pour la solution

Hello,

Ta colonne de date devait être en numérique ou pas au bon format.

Essaie ça :

= Table.ReplaceValue(Source,each [Date],each 
        let 
            dt = DateTime.From([Date]),
            h = Time.Hour(dt),
            t = if h >= 0 and h < 5 then Date.AddDays(Date.From(dt),-1) else Date.From(dt)
        in 
            Date.DayOfWeekName(t),
    Replacer.ReplaceValue,
    {"Date"}
)

@+

Hmm...

Pourtant elle apparaît bien en Date et Heure à priori mais ça fonctionne si je remplace _ dans la formule précédente par [Date]

image

En tout cas merci pour cette alternative

Hey,

Du coup pas besoin de la variable dt, tu peux la supprimer et remplacer tous les dt par [Date]

@+

Bonjour à tous !

Et pourquoi pas ceci ?

= Table.ReplaceValue(
                Source, 
                each [Date],
                each Date.DayOfWeekName(if Time.Hour([Date]) < 5 then Date.AddDays([Date], -1) else [Date]),
                Replacer.ReplaceValue,{"Date"}) 

Merci @Baroute78 pour ton aide

Bonjour JFL,

Merci c'est encore plus concis, plus besoin de variables, au top

Bonjour à tous de nouveau !

Simplicité et....vélocité...

Je vous remercie de ce retour.

Rechercher des sujets similaires à "power query transformer date jour semaine conditions"