Home – Le CFO masqué › Forums › Power Query › Calculer le délai de travail entre deux dates Power BI (DAX)
- This topic has 16 replies, 9 voices, and was last updated 3 years, 11 months ago by
PALEX966.
-
AuthorPosts
-
3 May 2016 at 10 h 49 min #29342
haitham.zomorda
ParticipantJe suis appelé à faire un calcul de délais entre deux dates(Timestamp) D1 et D2 sur l’ensemble des lignes d’une table en prenant en compte les jours fériés, les weekend et les heures de travail(8h à 12h et de 12h à 18h).
J’ai commencé par calculer les jours ouvrés c’est à dire le nombre de jours de travail en éliminant les jours fériés et les weekends.
CALCULATE(SUM(DimDate[JourTravail]);DATESBETWEEN(DimDate[Date];table[Date1];table[Date2]))
Et j’essais de calculer le délai en minute de travail en prenant en compte les horaires de travail de 8 à 12 et de 14 à 18h.
Exemple :
D1: 29/04/2016 16:25:00
D2:3/05/2016 8:57:00
La formule doit calculer 1h35mn le Vendredi, ne prend pas en compte le samedi et dimanche, calculer le 2/05 toute la journée cà dire 8h de travail, et enfin me rendre 0h57mn du 03/05 pour m’afficher 8+0:57+1h35 en total.
Voici des exemples des dates en image ci-jointe.
Avez-vous une idée sur la réalisation de ceci?Je vous remercie infiniment pour votre aide.
Attachments:
You must be logged in to view attached files.3 May 2016 at 10 h 56 min #29344Sophie Marchand
ParticipantBonjour,
Vous pouvez calculer le nombre de jours ouvrables via Power Query (ou l’équivalent dans Power BI Desktop), de la façon décrite dans notre article de blogue https://www.lecfomasque.com/power-query-trouver-le-nombre-de-jours-ouvrables/.
Sinon, si vous souhaitez utiliser Power Pivot (ou l’équivalent dans Power BI Desktop) et calculer le nombre de jours ouvrables en DAX, vous pouvez vous référer à l’article de blogue suivant http://sqlblog.com/blogs/alberto_ferrari/archive/2011/01/19/working-days-computation-in-powerpivot.aspx.
Au plaisir,
Sophie
3 May 2016 at 11 h 09 min #29346haitham.zomorda
ParticipantMerci Pour votre réponse, en effet je voudrais calculer le nombre d’heures et minutes de travail, pas le nombre de jours et cela en prenant en compte les jours fériés, les weekends et les horaires de travail(8->12/14->18).
NB: Le nombre de jours ouvrables est déjà calculé.
Exemple : entre aujourd’hui 18h01 et demain 10h du matin je dois avoir 2h de différence comme résultat entre mes deux dates.
J’espère que j’ai bien transmis le message.2 October 2018 at 10 h 09 min #49952chaimae
ParticipantBonjour,
je dois faire un calcul de la durée entre 2 dates par heure.
Exemple: entre aujourd’hui 10h et ajourd’hui 18h, je dois avoir 8h de différence comme résultat entre mes deux dates.
j’ai commencé par créer une table pour calculer le nombre de jours ouvrables pour éliminer les weekend et les jours fériés.Ensuite j’ai créer une colonne pour calculer la durée en utilisant la requête suivante: Age ticket = CALCULATE(SUM(‘Date'[WorkDay]);DATESBETWEEN(‘Date'[Date].[Date];Append1[Created];Append1[Closed]))
le problème c’est qu’il m’affiche juste la différence des deux dates en jours mais pas en heure.2 October 2018 at 15 h 34 min #49954Sophie Marchand
ParticipantBonjour,
Vous trouverez une explication complète ici https://community.powerbi.com/t5/Desktop/Calculating-day-time-difference/td-p/59601.
Au plaisir,
Sophie
15 January 2021 at 3 h 07 min #85954JMAIN
ParticipantBonjour,
Je rencontre le même problème.
Comment faire dans Power BI (en DAX ou Query) pour ôter les heures non travaillées.
Exemple ci-joint (fais dans Excel) :
Les heures travaillées sont 8h 17h, donc entre 17h et 8h ça ne devrait pas être compté.
Je souhaite obtenir le résultat de la colonne F et non celui de H.
Je ne vois pas comment faire, si quelqu’un à la solution ou une piste.Attachments:
You must be logged in to view attached files.15 January 2021 at 10 h 02 min #85966Stéphane Lorin
ParticipantBonjour
Voici une solution avec Power Query
J’ai une table avec une référence (“Id”) et une date/heure de “Début” et une date/heure de “Fin”
Ainsi qu’un planning d’ouverture pour chaque jour “H_Début” et “H_Fin” (via une table de correspondance)Avec la fonction List.Dates je crée une liste des jours entre “Début” et “Fin”
Je développe en lignes puis je fusionne pour récupérer les “H_Début” et “H_Fin” de chaque jour
Ensuite la durée de mon “Id” sur chacune de ces journée “Date” est donnée par la différence si elle est positive de
MIN(“Fin” , “Date + H_Fin”)-MAX(“Début” , “Date + H_Début)Il ne reste plus qu’à regrouper la table en sommant ces durées quotidiennes
Voir exemple Excel ci-joint
Cordialement
Stéphane
Attachments:
You must be logged in to view attached files.19 January 2021 at 2 h 24 min #86139JMAIN
ParticipantBonjour,
Merci Stéphane, tout a fonctionné parfaitement.
Cordialement.
11 February 2021 at 4 h 06 min #86881Lamia Zumsteg
ParticipantBonjour Stephane,
J’ai exactement le même besoin que Jmain sauf que je n’y arrive pas. Je ne suis malheureusement pas encore assez à l’aise avec les formules 🙁
J’ai fait la fonction List.Dates pour créer la liste des jours entre “Début” et “Fin” puis j’ai récupéré les “H_Début” et “H_Fin” de la table “Type d’ouverture”.
A partir de là je bloque.Est ce que je reviens sur la table initiale (ID, Début, Fin)?
Comnment ecrire cette formule en M?
Je ne suis vraiment pas très fier 🙁
Salutations
Zumsl16 February 2021 at 12 h 22 min #87387Stéphane Lorin
ParticipantBonjour
Si je comprends bien vous bloquez après avoir récupéré les “H_Début” et “H_Fin” de la table “Type d’ouverture”.
J’ajoute ensuite 2 colonnes personnalisées (menu “ajouter une colonne”, “colonne personnalisée”)
La première pour faire le max entre le début de la plage étudiée et le jour + heure début du jour avec la fonction List.Max
La seconde pour faire le min entre la fin de la plage étudiée et le jour + heure fin du jour avec la fonction List.Min
Ensuite j’ajoute une troisième colonne personnalisée pour faire la différence entre les deux uniquement si elle est positive avec la formule
each if [Date_Heure fin] > [Date_Heure début] then [Date_Heure fin] – [Date_Heure début] else #duration(0,0,0,0)
J’obtiens ainsi la durée de ma plage sur le jour étudié.
Enfin je regroupe le tout en additionnant toutes les valeurs quotidiennes obtenuesEst-ce plus clair ?
Stéphane
26 February 2021 at 9 h 27 min #87798Enzo Manfredi
ParticipantBonjour Stephane,
Je n’arrive pas à comprendre comment le calcul peut se faire (surtout si la différence de date est supérieure à 1 jour!).
Serait-il possible de joindre votre planche BI afin qu’il soit plus facile de comprendre votre démarche svp ?Typiquement je ne comprends pas comment vous regroupez “le tout en additionnant toutes les valeurs quotidiennes obtenues”
En vous remerciant.
Cordialement,
Enzo
1 March 2021 at 4 h 38 min #87904Stéphane Lorin
ParticipantBonjour Enzo
regardez la pièce jointe de mon message du 15 janvier et ouvrez les requêtes Power Query.
vous comprendrez comment je gère les plages > à 1 jour et le regroupement pour additionner les valeurs quotidiennes.Cordialement
Stéphane
1 March 2021 at 5 h 58 min #87905Enzo Manfredi
ParticipantBonjour Stephane,
Merci beaucoup ! C’est top. Merci pour votre patience et votre rapidité.
Bonne journée.
Cordialement,
Enzo
4 March 2021 at 0 h 50 min #88063Lamia Zumsteg
ParticipantBonjour Stephane,
J’ai du m’absenter un moment et je n’ai pas pu te donner un feedback. Désolée.
C’est génial
Merci encore pour ta disponibilité.
Lamia20 April 2021 at 3 h 59 min #89741Axsus
ParticipantBonjour Stéphane,
Pourriez vous m’aider a réaliser ce que vous avez fait. Je n’ai pas tout compris comment il fallait faire.
Merci,
Cordialement. -
AuthorPosts
- You must be logged in to reply to this topic.