Accueil – Le CFO masqué › Forums › Power BI › Calcul de date entre dernier jour travaillé et premir jour de reprise travail
- 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.
-
AuteurArticles
-
16 février 2023 à 11 h 15 min #125656konanothnielr1Participant
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.17 février 2023 à 19 h 38 min #125753DanielParticipantBonjour 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
Daniel18 février 2023 à 9 h 39 min #125758konanothnielr1ParticipantBonjour @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,
OthnielAttachments:
You must be logged in to view attached files.18 février 2023 à 12 h 16 min #125762DanielParticipantBonjour 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
DanielRequê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
SuppressionColonnePrevValueAttachments:
You must be logged in to view attached files.20 février 2023 à 3 h 33 min #125778konanothnielr1ParticipantRe 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.
20 février 2023 à 12 h 44 min #125791DanielParticipantBonjour 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
DanielAttachments:
You must be logged in to view attached files. -
AuteurArticles
- Vous devez être connecté pour répondre à ce sujet.