colonne conditionnelle

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.
4 sujets de 1 à 4 (sur un total de 4)
  • Auteur
    Articles
  • #132656
    hboisteau
    Participant

    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

    #132660
    Daniel
    Participant

    Bonjour 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
    Daniel

    #132725
    hboisteau
    Participant

    Bonjour 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

    #132771
    Daniel
    Participant

    Bonjour 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
    Daniel

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