[POWER QUERY] modifier colonne (extraire string) selon valeur d'une autre

Hello

Je n'arrive pas a modifier une colonne (PostalCode) selon a la valeur d'une autre (CountryCode).

En gros, si la colonne CountryCode contient "LU", alors je veux garder les caractères à droite du délimiteur "L-" sinon je veux garder la valeur d'origine.

J'ai essayer le code suivant (sans succès);

= Table.TransformColumns(#"Colonnes supprimées", {{"PostalCode", each if [CountryCode]="LU" then Text.AfterDelimiter([PostalCode],"L-") else [PostalCode], type text}})

J'ai cette erreur:

Expression.Error : Désolé... Nous n'avons pas pu appliquer l'accès au champ au type Text.

Détails :

Value=7000

Key=CountryCode

Une idée de mon erreur?

Merci

Bonjour,

un tout petit fichier (quelques lignes anonymisées), avec quelques exemples représentatifs, pourrait nous aider plus efficacement à t'aider.

@ te relire

Re-,

Sinon, tout à fait par hasard, en typant la colonne "CountryCode" en Text dans une étape précédente?

Ou mettre Text.Contains "LU" au lieu d'une égalité?

Bref, plusieurs options...

Hello

C'est un dataset powerBI avec beaucoup de tables et data dedans... donc compliquer de filer un échantillon.

On peut résumer ma table à 2 colonnes "CountryCode" et "PostalCode" toutes les deux au format Text (car selon les pays les codes postaux peuvent être alphanumériques).

Je voudrai modifier directement le contenu de la colonne "PostalCode" en fonction de la valeur contenue dans la colonne "CountryCode".... J'arrive à le faire sans soucis en passant par une nouvelle colonne avec ce code:

= Table.AddColumn(#"Colonnes supprimées", "test", each if [CountryCode]="LU" then Text.AfterDelimiter([PostalCode],"L-") else [PostalCode])

mais j'aimerai travailler directement dans la colonne d'origine "PostalCode".

Ok,

J'avais pas fait gaffe à la syntaxe...

Peut-être comme ceci :

= Table.TransformColumns(#"Colonnes supprimées", {{"PostalCode", each if [CountryCode]="LU" then Text.AfterDelimiter(_ ,"L-") else _, type text}})

Lorsque tu transformes une colonne par cette fonction, il faut faire référence à la colonne concernée par un underscore ( _ )

Re

J'obtiens toujours la même erreur....

Peut-être que la transformation conditionnelle d'une colonne en se basant sur une autre n'est pas possible??

Bonjour à tous !

La fonction Table.TransformColumns n'accepte pas la référence à une autre colonne.

Il faut en passer par :

= Table.ReplaceValue("nom de la table",each [PostalCode],each if [CountryCode]="LU" then Text.AfterDelimiter([PostalCode],"L-") else [PostalCode],Replacer.ReplaceText,{"PostalCode"})

Re-,

@JFL, j'en étais arrivé au même constat...

Et j'allais proposer la même syntaxe (mais pas assez rapide, je me fais moins jeune, on dirait... )

Bonne journée

Bonjour à tous de nouveau !

@cousinhub : Hello !

......mais pas assez rapide, je me fais moins jeune, on dirait...

En cette année nouvelle, je vous propose de tordre le cou aux citations anciennes et dire haut et fort : "La valeur attend aussi le nombre des années...."

Hello JFL

Top merci pour ton code qui fonctionne nickel. Peut-on multiplier les conditions sur ce modèle?

Par exemple:

si "LU" alors fait modif 1

Si "FR" alors fait modif 2

si "CZ" alors fait modif 3

etc?

En gros tout faire en une ligne de code ?

A+

Bonjour à tous de nouveau !

Il est possible d'inclure plusieurs conditions avec une syntaxe appropriée :

= Table.ReplaceValue(
        "nom de la table",
        each [PostalCode],
        each 
                if [CountryCode]="LU" then Text.AfterDelimiter([PostalCode],"L-")
                else if [CountryCode]="FR" then "modif 2"
                else if [CountryCode]="CZ" then "modif 3"
                else [PostalCode],
        Replacer.ReplaceText,{"PostalCode"})

Autre voie :

  1. Création d'une table de correspondance
  2. Jointure sur le champ CountryCode

Top merci beaucoup et excellent weekend à vous deux

Bonsoir à tous !

Bien...

Je vous remercie de ce retour.

Rechercher des sujets similaires à "power query modifier colonne extraire string valeur"