Accueil – Le CFO masqué › Forums › Power Query › Calculer le délai de travail entre deux dates Power BI (DAX)
Étiqueté : Calculer la durée par heure entre deux dates
- Ce sujet contient 16 réponses, 9 participants et a été mis à jour pour la dernière fois par
PALEX966, le il y a 3 années et 9 mois.
-
AuteurMessages
-
3 mai 2016 à 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 mai 2016 à 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 mai 2016 à 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 octobre 2018 à 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 octobre 2018 à 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 janvier 2021 à 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 janvier 2021 à 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 janvier 2021 à 2 h 24 min #86139JMAIN
ParticipantBonjour,
Merci Stéphane, tout a fonctionné parfaitement.
Cordialement.
11 février 2021 à 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 février 2021 à 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 février 2021 à 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 mars 2021 à 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 mars 2021 à 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 mars 2021 à 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 avril 2021 à 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. -
AuteurMessages
- Vous devez être connecté pour répondre à ce sujet.