Calcul de date entre dernier jour travaillé et premir jour de reprise travail

Accueil – Le CFO masqué Forums Power BI Calcul de date entre dernier jour travaillé et premir jour de reprise travail

Mots-clés : ,

  • Ce sujet contient 5 réponses, 2 participants et a été mis à jour pour la dernière fois par Daniel, le il y a 1 année et 7 mois.
6 sujets de 1 à 6 (sur un total de 6)
  • Auteur
    Articles
  • #125656
    konanothnielr1
    Participant

    BOnjour, j’espére que vous allez bien?
    Voilà je dois effectuer un calcul de différence de date entre la date de fin de travail et la date de reprise en heures.
    Comme sur l’image je veux faire 1-2.
    Pour moi c’est pas si simple vue que les dates sont en decallé.

    Merci de votre aide, toutes sugestion sera là bien venue.

    Attachments:
    You must be logged in to view attached files.
    #125753
    Daniel
    Participant

    Bonjour konanothnielr, le Forum,

    Est-ce que ce sont les deux seules données devant servir de base au calcul ?
    Si c’est un temps machine, elle est surement référencée, si c’est un humain alors il a surement un matricule.
    Plus de précisions me paraissent nécessaire afin de répondre au plus près de ton besoin.
    Cordialement
    Daniel

    #125758
    konanothnielr1
    Participant

    Bonjour @Daniel Blanc,

    effectivement, c’est un humain, il a un matricule qui est un nombre la colonne se nomme keyEmploie
    tous dans la même table que l’on va appele “Tfact”

    Je te met un echantillons des donnée elle sont factice bien evidement mais c’est une representation claire de la structure de mes données.

    Cordialement,
    Othniel

    Attachments:
    You must be logged in to view attached files.
    #125762
    Daniel
    Participant

    Bonjour konanothnielr, le Forum,

    Sur base du fichier joint dans ton dernier post, je te propose la solution suivante. Il faudra éventuellement reformater la colonne Ecart.
    Je suis également parti du postulat que les lignes vides au niveau des dates n’étaient pas très utiles pour le calcul (postulat à revoir car cela élimine des keyEmploye de la requête).
    C’est en tout cas la méthode que j’utilise afin de récupérer la ligne située immédiatement au-dessus.
    En espérant avoir répondu à la demande ou tout au moins t’avoir fourni des pistes en vue de sa résolution.
    Cordialement
    Daniel

    Requête Power Query
    let
    Source = Excel.CurrentWorkbook(){[Name=”tabData”]}[Content],
    ModificationTypeDonnees = Table.TransformColumnTypes(Source,{{“keyEmploye”, Int64.Type}, {“HeureDebut_CDP”, type datetime}, {“HeureFin_CDP”, type datetime}}),
    FiltreLignesDateDebNulles = Table.SelectRows(ModificationTypeDonnees, each ([HeureDebut_CDP] <> null)),
    GrouperSurkeyEmploye = Table.Group(FiltreLignesDateDebNulles, {“keyEmploye”}, {{“FullTable”, each _, type table [keyEmploye=nullable number, HeureDebut_CDP=nullable datetime, HeureFin_CDP=nullable datetime]}}),
    AjoutColonneIndex = Table.TransformColumns(GrouperSurkeyEmploye,{{“FullTable”, each Table.AddIndexColumn(_,”Index”,0,1)}}),
    AddColumnPrevValue = Table.AddColumn(AjoutColonneIndex, “CalculPrevValue”, each let
    AllDataTable = [FullTable],
    PrevRowValue = Table.AddColumn(
    AllDataTable,”PrevValue”,
    each try AllDataTable [HeureFin_CDP] {[Index]-1} otherwise null)
    in PrevRowValue),
    ListeofSingleTables = Table.Combine( AddColumnPrevValue[CalculPrevValue],{“keyEmploye”,”HeureDebut_CDP”,”HeureFin_CDP”,”PrevValue”}),
    CalculEcart = Table.AddColumn(ListeofSingleTables, “Ecart”, each [HeureDebut_CDP]-[PrevValue], type duration),
    SuppressionColonnePrevValue = Table.RemoveColumns(CalculEcart,{“PrevValue”})
    in
    SuppressionColonnePrevValue

    Attachments:
    You must be logged in to view attached files.
    #125778
    konanothnielr1
    Participant

    Re bonjour @Daniel Blanc,

    Merci pour cette première ébauche, mais j’ai pas la possibilité de travailler sur les donnée depuis power Query je me connect a une source de donnée dejà accessible sur le service Power BI. Je sais bien que le code M est beaucoup plus pratique (rapide en terme d’execution) mais je dois obligatoirement travailler avec le code DAX.

    Deja merci pour ton code M ça m’a donné une piste pour demarer.

    J’ai voulu partir sur çà via une colonne calculé mais il me mets une erreure qui est la suivante:
    “Les expressions scalaires de la fonction « GROUPBY » doivent être des fonctions d’agrégation du GroupeActuel(). L’expression de chaque agrégation doit être une constante, ou bien faire directement référence aux colonnes du GroupeActuel().”

    Je continue donc à chercher.

    Ecart_GroupBy =
    GROUPBY(
    ‘RH vFactPhase’,
    ‘RH vFactPhase'[keyEmploye],
    “PreviousHeureFin_CDP”,
    CALCULATE(
    MAX(‘RH vFactPhase'[HeureFin_CDP]),
    FILTER(
    ‘RH vFactPhase’,
    ‘RH vFactPhase'[HeureFin_CDP] < EARLIER(‘RH vFactPhase'[HeureDebut_CDP]) &&
    ‘RH vFactPhase'[keyEmploye] = EARLIER(‘RH vFactPhase'[keyEmploye]) &&
    NOT(ISBLANK(‘RH vFactPhase'[HeureFin_CDP]))
    )
    ),[PreviousHeureFin_CDP],
    “Ecart”,
    IF(
    ISBLANK([PreviousHeureFin_CDP]),
    BLANK(),
    DATEDIFF([PreviousHeureFin_CDP], EARLIER(‘RH vFactPhase'[HeureDebut_CDP]), HOUR)
    )
    )

    • Cette réponse a été modifiée le il y a 1 année et 7 mois par konanothnielr1.
    #125791
    Daniel
    Participant

    Bonjour konanothnielr, le Forum,

    Ok, je comprends alors peut-être que la fonction suivante OFFSET devrait, je pense répondre à cette problématique. Regarde le lien ci-dessous sur le site de Microsoft.

    https://learn.microsoft.com/en-us/dax/offset-function-dax

    Exemple d’utilisation
    Previous sumo of Price = CALCULATE(
    SUM(Sheet1[Price]),
    OFFSET(
    -1,
    ALLSELECTED(Sheet1[Color])))

    Cordialement
    Daniel

    Attachments:
    You must be logged in to view attached files.
6 sujets de 1 à 6 (sur un total de 6)
  • Vous devez être connecté pour répondre à ce sujet.