Reemplazar varios valores en la misma columna en un solo paso

Un usuario Pregunto ✅

elvinad

Hola todos,

Estoy buscando una solución para reemplazar varios valores en una columna, en un solo paso, para tener algo como esto:

Capture.PNG

por ahora, así es como se ve mi consulta:

dejar
Fuente = Excel.Workbook (File.Contents («C: Users SESA539111 Desktop Elvina training powerquery and pivot POSfiles POS file Elvina v3.xlsx»), nulo, verdadero),
BMPTest_Table = Fuente {[Item=»BMPTest»,Kind=»Table»]}[Data],
# «Changed Type» = Table.TransformColumnTypes (BMPTest_Table, {{«BMP», escriba texto}, {«PM0_BUSINESS UNIT», escriba texto}}),
# «Valor reemplazado» = Table.ReplaceValue (# «Tipo cambiado», «Transaccional de energía digital», «Transaccional», Replacer.ReplaceText, {«BMP»}),
# «Valor reemplazado1» = Table.ReplaceValue (# «Valor reemplazado», «Hogar y distribución», «Transaccional», Reemplazo.ReplaceText, {«BMP»}),
# «Valor reemplazado2» = Table.ReplaceValue (# «Valor reemplazado1», «Transaccional de bajo voltaje», «Transaccional», Replacer.ReplaceText, {«BMP»}),
# «Valor reemplazado3» = Table.ReplaceValue (# «Valor reemplazado2», «SIN ASIGNAR», «Transaccional», Reemplazo.ReplaceText, {«BMP»}),
# «Valor reemplazado4» = Table.ReplaceValue (# «Valor reemplazado3», «NO ESPECIFICADO», «Transaccional», Reemplazo.ReplaceText, {«BMP»})
en
# «Valor reemplazado4»

Me gustaría, si es posible, reunir todos estos pasos de «valor de reemplazo» en un solo paso en mi consulta. Ya vi algunas publicaciones similares en la comunidad, pero no he podido resolver mi problema con una de ellas.

¡Realmente espero con ansias sus comentarios!

Gracias por tu ayuda,

Elvi

Hola @elvinad,

Aquí creé una muestra para su referencia. Código M para su referencia.

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WcslMzyxJzFFwzUstSq9UCClKzCtOTC7JzM9LzFGK1YlW8sjPTVVIzEtRcMksLinKTCoFyYFlfPLLFcLyc0oS01Ox6Av1cwwO9nT3c3WBcoMDXJ093TxB/FgA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type text) meta [Serialized.Text = true]) in type table [#"Current Value" = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Current Value", type text}}),
    #"AllReplace" = [#"Digital Energy Transactional" = "BMP", #"Home and Distribution" = "BMP", #"Low Voltage Transactional" = "BMP",#"UNASSIGNED" = "BMP",#"UNSPECIFIED" = "BMP"],
    #"Replaced Value" = Table.TransformColumns(#"Changed Type",{{"Current Value",each Record.FieldOrDefault(AllReplace,_,_)}})
in
    #"Replaced Value"

Capture.PNG

Por cierto, Pbix como se adjunta.

Hola @elvinad,

Aquí creé una muestra para su referencia. Código M para su referencia.

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WcslMzyxJzFFwzUstSq9UCClKzCtOTC7JzM9LzFGK1YlW8sjPTVVIzEtRcMksLinKTCoFyYFlfPLLFcLyc0oS01Ox6Av1cwwO9nT3c3WBcoMDXJ093TxB/FgA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type text) meta [Serialized.Text = true]) in type table [#"Current Value" = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Current Value", type text}}),
    #"AllReplace" = [#"Digital Energy Transactional" = "BMP", #"Home and Distribution" = "BMP", #"Low Voltage Transactional" = "BMP",#"UNASSIGNED" = "BMP",#"UNSPECIFIED" = "BMP"],
    #"Replaced Value" = Table.TransformColumns(#"Changed Type",{{"Current Value",each Record.FieldOrDefault(AllReplace,_,_)}})
in
    #"Replaced Value"

Capture.PNG

Por cierto, Pbix como se adjunta.

AnkitBI

En respuesta a v-frfei-msft

A continuación se muestra cómo pude lograrlo.

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WcslMzyxJzFFwzUstSq9UCClKzCtOTC7JzM9LzFGK1YlW8sjPTVVIzEtRcMksLinKTCoFyYFlfPLLFcLyc0oS01Ox6Av1cwwO9nT3c3WBcoMDXJ093Tyh/MSkZKXYWAA=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type text) meta [Serialized.Text = true]) in type table [#"Current Value" = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Current Value", type text}}),
    Custom1 = Text.Combine({"Digital Energy Transactional","Home and Distribution","Low Voltage Transactional","UNASSIGNED","UNSPECIFIED"},","),
    Custom2 = Table.TransformColumns(#"Changed Type",{{"Current Value",each if Text.PositionOf(Custom1,_) <> -1 then "Transactional" else _}})
in
    Custom2

Gracias
Ankit Jain
Hacer Marcarlo como solución si la respuesta resolvió su problema. Hacer Kudo la respuesta si parece bueno y útil.

Deja un comentario

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