Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Enhance your career with this limited time 50% discount on Fabric and Power BI exams. Ends August 31st. Request your voucher.

Reply
Syndicate_Admin
Administrator
Administrator

Convertir varios nombres de una columna en un solo nombre si coincide con una lista de nombres

Así que tengo una tabla con una columna que enumera varios nombres en cada fila. Solo un nombre en cada fila es relevante. Quiero deshacerme de los otros nombres, basándome en una lista de nombres que he almacenado en otro lugar.

Así que:

NombresValor
Joe, Clara, Sharonx
Kelly, Clara, John, Barbaray
Jacob, Kellyz


Solo me preocupo por Joe y Kelly, así que lo que me gustaría ver es:

NombresValor
Joex
Kellyy
Kellyz


No sé si necesito cambiar la consulta o hacer una columna calculada o algo más. Intenté dividir las columnas y crear una nueva columna, pero tengo muchos datos y una larga lista de nombres que quiero extraer de esa columna de nombres. Prefiero no enumerar las varias docenas de nombres que deben verificarse en cada una de las 4 columnas recién creadas. ¿Hay una manera relativamente simple de abordar esto?

1 ACCEPTED SOLUTION

@Fantasticmuse IDNumber no es correc,t you want [Valor]

Agent =
VAR __NamesICareAbout = ALL(Agents[Name])
VAR __Text = SUBSTITUTE([Assigned To],",","|")
VAR __Count = PATHLENGTH(__Text)
VAR __Table =
FILTER(
ADDCOLUMNS(
GENERATESERIES(1,__Count,1),
"__Name",
PATHITEM(__Text,[Value])
),
[__Name] IN __NamesICareAbout
)
 
RETURN
CONCATENATEX(__Table,[__Name],";")

Está utilizando el "índice" creado por GENERATESERIES para extraer el elemento de ruta correcto de la ruta de texto. GENERATESERIES crea una tabla de una sola columna con el nombre de columna "Value".

View solution in original post

5 REPLIES 5
Syndicate_Admin
Administrator
Administrator

Hola

Puede descargar mi archivo PBI desde aquí.

Espero que esto ayude.

Untitled.png

Syndicate_Admin
Administrator
Administrator

Hay @Fantasticmuse

Si lo entiendo correctamente, puede mantener los datos simples y limpios, aquí hay una forma en M. No estoy seguro de si tendrá a Joe y Kelly en la misma lista, así que use la lista, puede agregar más nombres si le importa otra persona que no sea Joe y Kelly

Vera_33_0-1632363691893.png

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45W8spP1VFwzkksStRRCM5ILMrPU9JRqlCK1YlW8k7NyamES3rlZ+TpKDglFiUBuUA1lWA1XonJ+Uk6CmClQMEqpdhYAA==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Names = _t, Value = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Names", type text}, {"Value", type text}}),
    #"Added Custom" = Table.AddColumn(#"Changed Type", "newName", each List.Select(Text.Split([Names],", "), each List.Contains({"Joe","Kelly"}, _))),
    #"Expanded newName" = Table.ExpandListColumn(#"Added Custom", "newName")
in
    #"Expanded newName"

Syndicate_Admin
Administrator
Administrator

@Fantasticmuse De una manera:

Column = 
  VAR __NamesICareAbout = SELECTCOLUMNS('PeopeWhoMatter'[Names])
  VAR __Text = SUBSTITUE([Names],", ","|")
  VAR __Count = PATHLENGTH(__Text)
  VAR __Table = 
    FILTER(
      ADDCOLUMNS(
        GENERATESERIES(1,__Count,1),
        "__Name",PATHITEM(__Text,[Value])
      ),
      [__Name] IN __NamesICareAbout
    )
RETURN
  CONCATENATEX(__Table,[__Name],", ")

@Greg_Deckler así que DAX es todo con lo que me siento cómodo, así que probé su solución. Esto es lo que insumo:


Agente =
VAR __NamesICareAbout = ALL(Agents[Nombre])
VAR __Text = SUSTITUTO([Asignado a],",","|")
VAR __Count = PATHLENGTH(__Text)
VAR __Table =
FILTRO(
ADDCOLUMNS(
GENERACIONES(1,__Count,1),
"__Name",
PATHITEM(__Text,[IDNumber])
),
[__Name] EN __NamesICareAbout
)
DEVOLUCIÓN
CONCATENATEX(__Table,[__Name],";")

El error que recibo es que "El resultado de una conversión o operación aritmética es demasiado grande o demasiado pequeño".
No estoy seguro de lo que eso significa.

@Fantasticmuse IDNumber no es correc,t you want [Valor]

Agent =
VAR __NamesICareAbout = ALL(Agents[Name])
VAR __Text = SUBSTITUTE([Assigned To],",","|")
VAR __Count = PATHLENGTH(__Text)
VAR __Table =
FILTER(
ADDCOLUMNS(
GENERATESERIES(1,__Count,1),
"__Name",
PATHITEM(__Text,[Value])
),
[__Name] IN __NamesICareAbout
)
 
RETURN
CONCATENATEX(__Table,[__Name],";")

Está utilizando el "índice" creado por GENERATESERIES para extraer el elemento de ruta correcto de la ruta de texto. GENERATESERIES crea una tabla de una sola columna con el nombre de columna "Value".

Helpful resources

Announcements
July PBI25 Carousel

Power BI Monthly Update - July 2025

Check out the July 2025 Power BI update to learn about new features.

Join our Fabric User Panel

Join our Fabric User Panel

This is your chance to engage directly with the engineering team behind Fabric and Power BI. Share your experiences and shape the future.

June 2025 community update carousel

Fabric Community Update - June 2025

Find out what's new and trending in the Fabric community.

Top Solution Authors