cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
Syndicate_Admin
Administrator
Administrator

Reemplazar el valor de una columna de una segunda, basado en una lista

Hola a todos,

En realidad, estoy tratando de cambiar (automáticamente) los nombres en la columna de mi tabla [Autor] de una columna [Etiquetas], basada en una Lista de nombres (dinámica, que relleno en mi hoja de Excel): si el nombre en [Lista] aparece en [Etiquetas], entonces cambie [Autor] con ese nombre, de lo contrario mantenga [Autor].

Gavroche_0-1637940827880.png

Gavroche_0-1637939555077.png

Estoy lejos de ser un experto, así que intenté:

Personnalisé4 = Table.ReplaceValue(#"Personnalisé3",
             each [Author],
             each if Text.Contains(List,[Labels]=true) 
                     then [Labels]
                     else [Author],
             Replacer.ReplaceText, {"Author"}

Si alguien tiene la solución, ¡estaría agradecido!

1 ACCEPTED SOLUTION

¿Qué debe suceder cuando la etiqueta contiene más de un valor de la lista de reemplazo?

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("jc5BC8IgFAfwryKehU2D6GqbiGEqbIExPKyQCGSjtRH79r1Vtzp0eX/+78GP1zTY5xQTbJ0wEHKIl36YkeNVzTUs6CajNGM5y6F472EeY0r9gyAxXmPXRVQenDU1QdxUaqsFDmRB2YIaaZWRP931l3tKUyRIgaTGNs0fZwWXgptCaC3KP6Vde75N8Y4Ku3e2AvBNz6/HcQhP", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [ID = _t, State = _t, Author = _t, Creation = _t, Title = _t, Labels = _t]),
    ReplaceList = {"Etienne DUPONT","Jacques COMPOST","Valérie DULORS"},
    #"Replaced Value" = Table.ReplaceValue(Source,each [Author],each try List.Intersect({ReplaceList,Text.Split([Labels],", ")}){0} otherwise [Author],Replacer.ReplaceValue,{"Author"})
in
    #"Replaced Value"

View solution in original post

7 REPLIES 7
Syndicate_Admin
Administrator
Administrator

@Gavroche ,

¿Las respuestas anteriores resuelven su problema? Si se ha resuelto, marque la respuesta correcta como la respuesta estándar para ayudar a los otros miembros a encontrarla más rápidamente. ¡Gracias de antemano por su amable cooperación!

Espero que ayude,


Equipo de soporte de la comunidad _ Caitlyn

Si esta publicación ayuda, considere Aceptarla como la solución para ayudar a los otros miembros a encontrarla más rápidamente.

Syndicate_Admin
Administrator
Administrator

Hola Ibendlin,

Gracias por su respuesta.

El objetivo es tener una lista dinámica en Excel (más fácil de agregar o eliminar personas de la lista) que ayudaría a transferir el nombre de [Etiquetas] (en realidad una etiqueta) a [Autor]

Aquí está el ejemplo:

El conjunto de datos:

IDENTIFICACIÓNEstadoAutorCreaciónTítuloEtiquetas
X01ABRIRGregorio PASTAL18/11/2020XXXAmarillo, Etienne DUPONT, ANSIBLE
X02ACTUALGregorio PASTAL16/11/2020XXXazul, IT, Italia
X03ANULADOGregorio PASTAL16/11/2020XXXJacques COMPOST, azul, amarillo

let
    Source = Excel.CurrentWorkbook(){[Name="Tableau2"]}[Content],
    #"Type modifié" = Table.TransformColumnTypes(Source,{{"ID", type text}, {"State", type text}, {"Author", type text}, {"Creation", type datetime}, {"Title", type text}, {"Labels", type text}})
in
    #"Type modifié"

La lista:

Lista
Etienne DUPONT
Jacques COMPOST
Valérie DULORS

let
    Source = Excel.CurrentWorkbook(){[Name="Tableau1"]}[Content],
    #"Type modifié" = Table.TransformColumnTypes(Source,{{"List", type text}}),
    Liste = #"Type modifié"[List]
in
    List

El resultado esperado sería el siguiente: (según la lista, la solicitud está buscando un nombre en [Etiquetas], y moverlo a [Autor] cuando sea verdadero) :

IDENTIFICACIÓNEstadoAutorCreaciónTítuloEtiquetas
X01ABRIREtienne DUPONT18/11/2020XXXAmarillo, Etienne DUPONT, ANSIBLE
X02ACTUALGregorio PASTAL16/11/2020XXXazul, IT, Italia
X03ANULADOJacques COMPOST16/11/2020XXXJacques COMPOST, azul, amarillo

Gavroche_0-1638286712300.png

Gracias por su ayuda.

¿Qué debe suceder cuando la etiqueta contiene más de un valor de la lista de reemplazo?

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("jc5BC8IgFAfwryKehU2D6GqbiGEqbIExPKyQCGSjtRH79r1Vtzp0eX/+78GP1zTY5xQTbJ0wEHKIl36YkeNVzTUs6CajNGM5y6F472EeY0r9gyAxXmPXRVQenDU1QdxUaqsFDmRB2YIaaZWRP931l3tKUyRIgaTGNs0fZwWXgptCaC3KP6Vde75N8Y4Ku3e2AvBNz6/HcQhP", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [ID = _t, State = _t, Author = _t, Creation = _t, Title = _t, Labels = _t]),
    ReplaceList = {"Etienne DUPONT","Jacques COMPOST","Valérie DULORS"},
    #"Replaced Value" = Table.ReplaceValue(Source,each [Author],each try List.Intersect({ReplaceList,Text.Split([Labels],", ")}){0} otherwise [Author],Replacer.ReplaceValue,{"Author"})
in
    #"Replaced Value"

Gracias por su respuesta.

¿Qué debe suceder cuando la etiqueta contiene más de un valor de la lista de reemplazo?

-> No debería suceder, pero si lo hace, tomar el primero de la lista sería suficiente.

Sin embargo, para ayudar a las personas que usan la herramienta (no se usa para Excel en absoluto), me gustaría dejar la lista en la hoja de Excel (y no directamente en el código M):

Gavroche_2-1638351157957.png------>Gavroche_1-1638351125867.png

También uso una Lista para filtrar [Autor] ya:

Table.SelectRows(#"Colonnes permutées2", each (List.Contains(Tableau3,[Author])=false)),

Así que estaba buscando algo similar. ¿Es posible?

Claro. Puede modificar mi código para usar diferentes fuentes tanto para la tabla como para la lista.

Eh

¡Lo adapté y funciona perfectamente!

¡Muchas gracias! 🙂

Syndicate_Admin
Administrator
Administrator

Parece que estás bastante cerca de tu intento. Sin embargo, debe usar Replacer.ReplaceValue.

Proporcione datos de muestra desinfectados que cubran completamente su problema. Pegue los datos en una tabla de su publicación o use uno de los servicios de archivos. Por favor, muestre el resultado esperado.

Helpful resources

Announcements
August 2022 update 768x460.jpg

Check it Out!

Click here to learn more about the August 2022 updates!

August 1 episode 9_no_dates 768x460.jpg

The Power BI Community Show

Watch the playback when Priya Sathy and Charles Webb discuss Datamarts! Kelly also shares Power BI Community updates.

Power Platform Conf 2022 768x460.jpg

Join us for Microsoft Power Platform Conference

The first Microsoft-sponsored Power Platform Conference is coming in September. 100+ speakers, 150+ sessions, and what's new and next for Power Platform.

Top Solution Authors