Reemplazar valores separados por comas en textos con la creación de una nueva columna

Un usuario Pregunto ✅

Pruebas de PowerBIT

Intentando crear una columna con la siguiente lógica

#»Personalizado agregado» = Table.AddColumn(#»Tipo cambiado», «Personalizado», cada Text.Combine( List.ReplaceMatchingItems(Text.ToList ([CommaSeparatedNumbersColumnName]), { {100,»A» },{«200″,»B» },{«300″,»C» },{«,»»,»». } })),teclee el texto)

Resultado Esperado

100200300 —> ABC

100————>A

100,200 ———>A,B

Nota: solo {«,»»,»». } esta parte reemplazada

greg_deckler

@PowerBITesting: puede usar SUSTITUCIÓN en DAX:

New Column = 
  SUBSTITUTE(
    SUBSTITUTE(
      SUBSTITUTE([Column],"100","A"),
      "200","B"
    ),
    "300","C"
  )

Debería poder hacer lo mismo en Power Query esencialmente anidando sus funciones de reemplazo. @ImkeF @edhans

edhans

Prueba este @PowerBITesting

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMjQw0DECYmMDA6VYHTAfRkPEYgE=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Column1 = _t]),
    #"Added Custom" = 
        Table.AddColumn(
            Source, 
            "Custom", 
            each 
            Text.Combine(
                List.ReplaceMatchingItems(
                    {Text.Split([Column1], ",")}{0},
                    {{"100","A"},{"200","B"},{"300","C"}}
                ),"."
            )
        )
in
    #"Added Custom"

Genera esto (NOTA: el código anterior reemplaza correctamente la coma con un punto. Mi captura de pantalla a continuación no refleja eso)

edhans_0-1599669082435.png

Cómo usar el código M proporcionado en una consulta en blanco:
1) En Power Query, seleccione Nueva fuente, luego Consulta en blanco
2) En la cinta Inicio, seleccione el botón «Editor avanzado»
3) Elimina todo lo que ves, luego pega el código M que te he dado en ese cuadro.
4) Presiona Listo
5) Consulte este artículo si necesita ayuda para usar este código M en su modelo.

greg_deckler

@PowerBITesting: puede usar SUSTITUCIÓN en DAX:

New Column = 
  SUBSTITUTE(
    SUBSTITUTE(
      SUBSTITUTE([Column],"100","A"),
      "200","B"
    ),
    "300","C"
  )

Debería poder hacer lo mismo en Power Query esencialmente anidando sus funciones de reemplazo. @ImkeF @edhans

amichandak

@PowerBITesting, si son números separados por comas, use Text.Split en lugar de Text.ToList e intente

edhans

En respuesta a amichandak

@amitchandak: ¿probaste tu sugerencia? Simplemente devuelve un error cuando intento ese reemplazo simple.

amichandak

En respuesta a edhans

@edhans, hubo una fórmula con el resultado y asumí que funcionaba y text.Split convertirá una cadena de texto separada por comas y eso es lo que sugirió. Parece que eso también es necesario.

edhans

En respuesta a amichandak

Por eso le preguntaba a @amitchandak. Si leí la publicación original de @PowerBITesting correctamente, estaban obteniendo la columna con el rojo (1) a continuación y querían lo que aparece en la columna marcada con el rojo (2).

edhans_0-1599670543704.png

Pero todavía no puedo obtener su solución para reemplazar Text.ToList con Text.Split. Devuelve un error y no reemplaza correctamente 100 con A, 200 con B, etc.

Pero podría estar equivocado. Es por eso que preguntaba si lo probaste, ya que me gustaría ver tu solución para comprender mejor. No he podido hacerlo funcionar.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *