Accueil – Le CFO masqué › Forums › Power Query › colonne conditionnelle
- Ce sujet contient 3 réponses, 2 participants et a été mis à jour pour la dernière fois par Daniel, le il y a 1 année.
-
AuteurArticles
-
24 septembre 2023 à 7 h 55 min #132656hboisteauParticipant
Bonjour le Forum,
j’ai besoin de comprendre comment agir sur une colonne conditionnelle.
Je m’explique quand je créer ma colonne conditionnelle, c’est assez simple a créer avec l’assistant. Ensuite j’offre cette même requête avec l’éditeur avance et j’essaye de porter modifications. et c’est là que j’ai besoin de vous.
Voici la ligne :
#”Colonne conditionnelle ajoutée” = Table.AddColumn(#”Personnalisée ajoutée5″, ” resultat MAS 1″, each if [SITESLOT] = 140 then [Resultat Mas] else if [SITESLOT] = 141 then [Resultat Mas] else if [SITESLOT] = 175 then [Resultat Mas] else if [SITESLOT] = 176 then [Resultat Mas] else if [SITESLOT] = 193 then [Resultat Mas] else if [SITESLOT] = 194 then [Resultat Mas] else [Resultat Mas])
Je cherche a faire que si le SITESLOT est égale à 140 alors [Resultat Mas] X 10
J’ai essayer de mettre entre parenthèses mais ca ne marche pas.
Avez-vous une idée?
Merci par avance
HB
24 septembre 2023 à 16 h 10 min #132660DanielParticipantBonjour hboisteau, le Forum,
Voyons voir, si j’ai bien compris dès que le SITELOT est égal à 140, on prend le RESULTAT MAS que l’on multiplie par 10 et sinon on prend le RESULTAT MAS (pour tous les autres cas)
ce qui donne
#”Colonne conditionnelle ajoutée” = Table.AddColumn(#”Personnalisée ajoutée5″, ” resultat MAS 1″, each if [SITESLOT] = 140 then [Resultat Mas] * 10 else [Resultat Mas]).
Les autres SITESLOT n’étant pas à multiplier, pas besoin de les prendre dans le if (sauf instructions contraires non précisées dans l’énnoncé)
AjoutResultatMasCorrigé = Table.AddColumn(ModificationTypeDonnees, “ResultatMAS_C”, each if [SITESLOT] = 140 then [RESULTAT MAS] – 10 else if [SITESLOT] = 141 then [RESULTAT MAS] – 25 else [RESULTAT MAS])
Cordialement
Daniel26 septembre 2023 à 7 h 42 min #132725hboisteauParticipantBonjour Daniel et le Forum,
Malheureusement j’applique la multiplication dans ma requete mais cela ne fonctionne pas.
#”Colonne conditionnelle ajoutée” = Table.AddColumn(#”Personnalisée ajoutée5″, ” resultat MAS 1″, each if [SITESLOT] = 140 then [Resultat Mas]*10 else if [SITESLOT] = 141 then [Resultat Mas]*10 else if [SITESLOT] = 175 then [Resultat Mas]*10 else if [SITESLOT] = 176 then [Resultat Mas]*10 else if [SITESLOT] = 193 then [Resultat Mas]*10 else if [SITESLOT] = 194 then [Resultat Mas] else [Resultat Mas]*10),
En faite c’est bien les numeros 140,141,175,176,193 et 194 à multiplier par 10.
Merci de votre aide
HB
26 septembre 2023 à 12 h 53 min #132771DanielParticipantBonjour hboisteau, le Forum,
En pièce jointe, un fichier excel avec deux méthodes possibles (d’autres existent surement)
1ère requête
let
Source = Excel.CurrentWorkbook(){[Name=”tabData”]}[Content],
#”Type modifié” = Table.TransformColumnTypes(Source,{{“SITESLOT”, Int64.Type}, {“Resultat Mas”, Int64.Type}}),
#”Colonne conditionnelle ajoutée” = Table.AddColumn(#”Type modifié”, “resultat MAS 1″, each if [SITESLOT] = 140 then [Resultat Mas]*10 else if [SITESLOT] = 141 then [Resultat Mas]*10 else if [SITESLOT] = 175 then [Resultat Mas]*10 else if [SITESLOT] = 176 then [Resultat Mas]*10 else if [SITESLOT] = 193 then [Resultat Mas]*10 else if [SITESLOT] = 194 then [Resultat Mas] else [Resultat Mas]*10)
in
#”Colonne conditionnelle ajoutée”
Bien que je ne comprenne pas pourquoi tout ce qui n’est pas égal aux valeurs spécifiées doivent être multiplié par 10 sauf le SITESLOT 194. Cela fonctionne parfaitement dans mon exemple.2ème requête
Petit préalable, il faut créer une table des SITESLOT qui devront être multiplié par 10 et charger cette table dans Power query (ce sera une requête supplémentaire) et la transformer en Liste pur utilisation ultérieure.
Ensuite on charge les données, puis on ajoute une colonne avec la formule suivante :
#”Personnalisée ajoutée” = Table.AddColumn(#”Type modifié”, “Resultat Mas 1″, each if List.Contains(tblSitesLot,[SITESLOT])= true then [Resultat Mas] * 10 else [Resultat Mas])Ce qui donne la requête suivante
let
Source = Excel.CurrentWorkbook(){[Name=”tabData”]}[Content],
#”Type modifié” = Table.TransformColumnTypes(Source,{{“SITESLOT”, Int64.Type}, {“Resultat Mas”, Int64.Type}}),
#”Personnalisée ajoutée” = Table.AddColumn(#”Type modifié”, “Resultat Mas 1″, each if List.Contains(tblSitesLot,[SITESLOT])= true then [Resultat Mas] * 10 else [Resultat Mas])
in
#”Personnalisée ajoutée”
Tous les SITESLOT contenus dans la liste des SITESLOTS seront alors multiplié par 10, les autres garderont leurs valeurs d’origine.
En espérant avoir pu vous aider à résoudre votre problématique
Cordialement
DanielAttachments:
You must be logged in to view attached files. -
AuteurArticles
- Vous devez être connecté pour répondre à ce sujet.