Accueil – Le CFO masqué › Forums › Power Query › résultat d’aujourd’hui moins le résultat d’hier
- Ce sujet contient 5 réponses, 3 participants et a été mis à jour pour la dernière fois par
Stéphane Lorin, le il y a 2 années et 2 mois.
-
AuteurMessages
-
31 décembre 2022 à 15 h 27 min #124358
hboisteau
ParticipantBonjour a tous,
je suis a la recherche d’une possible solution, a mon problème. Mais après quelques recherches sur le net je ne trouve pas vraiment d’approche correspondante a ma question.
Voila je voudrais faire soustraction de deux valeurs (date d’aujourd’hui – date d’hier) en fonction de numéro distinct. le petit tableau ci-dessous remplaceras tout les mots.
Date type valeur
01/01/23 rouge 10
01/01/23 vert 11
02/01/23 rouge 15 le résultat rechercher est donc = 02/01/23 rouge 5 (ce résultat est toujours une progression, hormis si il y a un problème)
02/01/23 vert 14 le résultat rechercher est donc = 02/01/23 vert 3 (ce résultat est toujours une progression, hormis si il y a un problème)Malheureusement je ne suis pas sur que cela puisse ce faire avec power query.
Je suis preneur de toute idées, développement même avec power pivot (il faut bien apprendre)
En vous souhaitant de fêtes de fin d’année et que 2023 soit remplie de santé, bonheur et succès
HB
31 décembre 2022 à 17 h 49 min #124359Daniel
ParticipantBonjour hboisteau,le Forum,
Avec Power query, je ferais comme cela par rapport au jeu que tu as posté
let
Source = Excel.CurrentWorkbook(){[Name=”Tableau1″]}[Content],
#”Type modifié” = Table.TransformColumnTypes(Source,{{“Date”, type date}, {“type”, type text}, {“valeur”, Int64.Type}}),
#”Lignes groupées” = Table.Group(#”Type modifié”, {“type”}, {{“AllRows”, each _, type table [#”Date”=nullable date, #”type”=nullable text, valeur=nullable number]}}),
#”Personnalisée ajoutée2″ = Table.AddColumn(#”Lignes groupées”, “MesDonnées”, each Table.Sort([AllRows],{“Date”, Order.Ascending})),
#”Personnalisée ajoutée” = Table.AddColumn(#”Personnalisée ajoutée2″, “Valeurs”, each List.Last([MesDonnées][valeur])-List.First([MesDonnées][valeur])),
#”Personnalisée ajoutée1″ = Table.AddColumn(#”Personnalisée ajoutée”, “Dates”, each List.Last([MesDonnées][Date])),
#”Colonnes supprimées” = Table.RemoveColumns(#”Personnalisée ajoutée1″,{“AllRows”,”MesDonnées”}),
#”Colonnes permutées” = Table.ReorderColumns(#”Colonnes supprimées”,{“Dates”, “type”, “Valeurs”})
in
#”Colonnes permutées”
D’autres solutions sont certainement possibles.
Bonne année
Cordialement
Daniel1 janvier 2023 à 12 h 12 min #124360hboisteau
ParticipantBonjour Daniel,
merci beaucoup pour cette belle aide qui fonctionne a merveille, mais pourrais-je abuser encore un peu.
est-ce possible de faire la meme chose avec plusieurs journée?
02/01/23 MOINS 01/01/23 TYPE ROUGE
03/01/23 MOINS 02/01/23 TYPE ROUGE
04/01/23 MOINS 03/01/23 TYPE ROUGEEt ainsi de suite et pour les autres type aussi
bonne année 2023 pleine de succès, bonheur et santé
HB
1 janvier 2023 à 17 h 07 min #124361Daniel
ParticipantBonjour hboisteau, le Forum,
Et en essayant comme ceci, cela devrait te donner le résultat recherché ou tout au moins s’en approcher d’assez près.let
Source = Excel.CurrentWorkbook(){[Name=”Tableau1″]}[Content],
ModificationTypeData = Table.TransformColumnTypes(Source,{{“Date”, type date}, {“type”, type text}, {“valeur”, Int64.Type}}),
TriDesLignes = Table.Sort(ModificationTypeData,{{“type”, Order.Ascending}, {“Date”, Order.Ascending}}),
GroupSurType = Table.Group(TriDesLignes, {“type”}, {{“FullTable”, each _, type table [Date=nullable date, type=nullable text, valeur=nullable number]}}),
IndexFullTable = Table.TransformColumns(GroupSurType,{{“FullTable”, each Table.AddIndexColumn(_,”Index”,0,1)}}),
AddColumnForPrevValue = Table.AddColumn(IndexFullTable, “CalculPrevValue”, each let
AllDataTable = [FullTable],
PrevRowValue = Table.AddColumn(
AllDataTable,”PrevValue”,
each try AllDataTable [valeur] {[Index]-1} otherwise null)
in PrevRowValue),
ListeofSingleTables = Table.Combine( AddColumnForPrevValue[CalculPrevValue],{“Date”,”type”,”valeur”,”PrevValue”}),
CalculEcart = Table.AddColumn(ListeofSingleTables, “Ecart”, each [valeur]-[PrevValue]),
SuppressionColonnes = Table.RemoveColumns(CalculEcart,{“PrevValue”})
in
SuppressionColonnes
En espérant avoir pu t’aider ou te donner des pistes de réflexions
Cordialement
Daniel1 janvier 2023 à 17 h 43 min #124362hboisteau
ParticipantMerci Daniel,
c’est exactement cela , je vais maintenant essayer d’apprendre de cela et de mettre en application dans mon application
HB
3 janvier 2023 à 3 h 18 min #124388Stéphane Lorin
ParticipantBonjour
Je vous ai proposé une autre possibilité sur un autre forum sans réponse de votre part. Inutile de poser votre question à plusieurs endroits si c’est pour ignorer leur réponse.
Il me semble plus facile de mettre en œuvre une solution par fusion via une colonne personnalisée en ajoutant la date de la veille (et une colonne d’Index pour le tri)
Voici le code
let
Source = Excel.CurrentWorkbook(){[Name=”Tableau1″]}[Content],
ModificationTypeData = Table.TransformColumnTypes(Source,{{“Date”, type date}, {“type”, type text}, {“valeur”, Int64.Type}}),
#”Index ajouté” = Table.AddIndexColumn(ModificationTypeData, “Index”, 0, 1, Int64.Type),
#”Personnalisée ajoutée” = Table.AddColumn(#”Index ajouté”, “Veille”, each Date.AddDays([Date],-1)),
#”Requêtes fusionnées” = Table.NestedJoin(#”Personnalisée ajoutée”, {“Veille”, “type”}, #”Personnalisée ajoutée”, {“Date”, “type”}, “Personnalisée ajoutée”, JoinKind.LeftOuter),
#”Personnalisée ajoutée développé” = Table.ExpandTableColumn(#”Requêtes fusionnées”, “Personnalisée ajoutée”, {“valeur”}, {“valeur veille”}),
#”Soustraction insérée” = Table.AddColumn(#”Personnalisée ajoutée développé”, “Ecart”, each [valeur] – [valeur veille], Int64.Type),
#”Lignes triées” = Table.Sort(#”Soustraction insérée”,{{“Index”, Order.Ascending}}),
#”Autres colonnes supprimées” = Table.SelectColumns(#”Lignes triées”,{“Date”, “type”, “valeur”, “Ecart”})
in
#”Autres colonnes supprimées”Stéphane
-
AuteurMessages
- Vous devez être connecté pour répondre à ce sujet.