IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

POWER Discussion :

[Power Query] Nombre de jours ouvrés entre deux dates


Sujet :

POWER

  1. #1
    Membre à l'essai
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Janvier 2022
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Bâtiment

    Informations forums :
    Inscription : Janvier 2022
    Messages : 10
    Points : 10
    Points
    10
    Par défaut [Power Query] Nombre de jours ouvrés entre deux dates
    Bonjour,

    Je dispose d'une colonne date début et une colonne date fin dans mon jeu de données.
    je cherche à calculer le nombre de jours ouvrés entre ces 2 dates avec Power Query.
    Cependant, mon jeu de données est plus volumineux qu'avant et mon ancienne méthode ne marche pas.

    J'utilisais auparavant une fonction personnalisée avec la requête suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    = (MAINTENANCE_REQ_DATE as date, MAINTENANCE_ATT_DATE as date) as number =>
    let
        Liste_De_Date = List.Dates(MAINTENANCE_REQ_DATE, Number.From(MAINTENANCE_ATT_DATE - MAINTENANCE_REQ_DATE), #duration(1, 0, 0, 0)),
     
        Weekend = List.Select(Liste_De_Date, each Date.DayOfWeek(_, Day.Monday) >= 5),
     
        Supprimer_Weekend = List.RemoveItems(Liste_De_Date, Weekend),
     
        Nombre_De_Jours = List.Count(Supprimer_Weekend)
    in
        Nombre_De_Jours
    Le problème avec cette requête, c'est qu'elle mouline pendant des heures et empeche l'actualisation de mon jeu de données.

    Avez-vous une méthode plus simple pour calculer le nombre de jours ouvrés entre mes deux dates. (une méthode qui demande moins de temps).


    Merci

    cdt

  2. #2
    Membre émérite
    Homme Profil pro
    ingénieur
    Inscrit en
    Mars 2015
    Messages
    1 056
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : ingénieur
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2015
    Messages : 1 056
    Points : 2 520
    Points
    2 520
    Par défaut
    Bonjour
    Voici une fonction qui sera beaucoup plus rapide pour calculer le nb de jours ouvrés entre deux dates (ne gère pas les jours fériés)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    (début as date, fin as date) =>
    let
        Début2=Date.AddDays(début, if Date.DayOfWeek(début)>=5 then 7-Date.DayOfWeek(début) else 0),
        Fin2=Date.AddDays(fin, if Date.DayOfWeek(fin)>=5 then 4-Date.DayOfWeek(fin) else 0),
        JourDébut2=Date.DayOfWeek(Début2),
        JourFin2=Date.DayOfWeek(Fin2),
        SemainePleine = Number.IntegerDivide(Duration.Days(Fin2- Début2),7) * 5,
        JourSemaine = JourFin2 - JourDébut2 + 1,
        SemaineComplémentaire = if JourFin2 < JourDébut2 then 5 else 0
     
    in
        SemainePleine + JourSemaine + SemaineComplémentaire
    Début2 = le lundi qui suit un samedi ou un dimanche
    Fin2= le vendredi qui précède un samedi ou un dimanche
    Puis on calcule le nombre de semaine pleine entre les deux dates
    et le nombre de jours restants

    Stéphane

  3. #3
    Membre émérite
    Homme Profil pro
    ingénieur
    Inscrit en
    Mars 2015
    Messages
    1 056
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : ingénieur
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2015
    Messages : 1 056
    Points : 2 520
    Points
    2 520
    Par défaut
    Re-bonjour

    j'ai ajouté un argument et une étape pour prendre en compte les jours fériés (stockés dans une liste de dates).
    j'ai également regroupé deux étapes pour le calcul des jours de la semaine non complète et mis des commentaires

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    (début as date, fin as date, fériés) =>
    let
        Début2=Date.AddDays(début, if Date.DayOfWeek(début)>=5 then 7-Date.DayOfWeek(début) else 0),    // date de début ou lundi suivant si début en WE
        Fin2=Date.AddDays(fin, if Date.DayOfWeek(fin)>=5 then 4-Date.DayOfWeek(fin) else 0),            // date de début ou vendredi précédant si fin en WE
        JourDébut2=Date.DayOfWeek(Début2),                                                              // Jour de la semaine de début (0 si lundi, 4 si vendredi)
        JourFin2=Date.DayOfWeek(Fin2),                                                                  // Jour de la semaine de fin (0 si lundi, 4 si vendredi)
        SemainePleine = Number.IntegerDivide(Duration.Days(Fin2- Début2),7),                            // Nb de semaines pleines 
        SemaineIncomplète = JourFin2 - JourDébut2 + 1 + Number.From(JourFin2 < JourDébut2)*5,           // Nb de jours dans la semaine incomplète
        Nb_fériés = List.Count(List.Select(fériés, each _ >=Début2 and _<=Fin2 and Date.DayOfWeek(_)<5))// Nb de jours fériés entre début et fin hors WE
     
    in
        SemainePleine *5 + SemaineIncomplète - Nb_fériés


    Stéphane

  4. #4
    Membre à l'essai
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Janvier 2022
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Bâtiment

    Informations forums :
    Inscription : Janvier 2022
    Messages : 10
    Points : 10
    Points
    10
    Par défaut
    Bonjour,

    Merci beaucoup pour votre réponse ! Super!

Discussions similaires

  1. Nombre de jours ouvrés entre deux dates
    Par Pouchy dans le forum SQL
    Réponses: 7
    Dernier message: 27/04/2016, 15h27
  2. Nombre de jours ouvrés entre deux dates
    Par foxrole dans le forum SAS Base
    Réponses: 3
    Dernier message: 10/07/2013, 16h56
  3. Nombre de jours ouvrés entre deux dates
    Par johnson95 dans le forum Collection et Stream
    Réponses: 6
    Dernier message: 17/06/2009, 22h12
  4. [Dates] Nombre de jours ouvrés entre deux date
    Par meufeu dans le forum Langage
    Réponses: 1
    Dernier message: 31/01/2007, 17h50
  5. Réponses: 1
    Dernier message: 10/08/2006, 14h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo