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

Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.

Reply
Nooby
Helper I
Helper I

Obtención de valores de columna de otra columna

Hola a todos,

Tengo una columna que tiene los valores tales como:

COLUMNA DE CÓDIGO

XXYYZZTT
PPRRQQSS
..
..
..

Y hay otra columna en otra tabla

DATOS SUCIOS
123123XXYYZZTT123123
XXYYZZTT44223xxxxxfdwe
dadfewrerXXYYZZTT987
asdf324aerq
daf33421adf
1PPRRQQSSr2d2
..
..

Tengo que buscar los primeros valores de columna uno por uno y cuando encuentro el valor, tengo que extraer el primer valor antes que él, sí mismo y siguiendo 3 caracteres con él.

Las nuevas 3 columnas serían:

columna obtenida1columna obtenida2columna obtenida3
3XXYYZZTT123
tXXYYZZTT442
rXXYYZZTT987
NullNullNull
NullNullNull
1PPRRQQSSR2d
......
....

..

Esto es muy fácil en SQL, pero no puedo hacerlo en Power BI.

Aquí hay una captura de pantalla para que sea un poco más claro:

code search.png

¡Gracias de antemano!

1 ACCEPTED SOLUTION
v-gizhi-msft
Community Support
Community Support

Hola

Por favor, pruebe esto en el Editor de consultas:

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("NYo7DoAgEETvQm3DLol6C34FQihIFnqxwOOLKJPXzMwLgXHAjnPH4b21X+uwuAQ2VyEA8H5TqOVxUaKSW811Ovu2jiNdVBBEyvX8xYIogHd/dC6l1koZU4GAxfgA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type text) meta [Serialized.Text = true]) in type table [#"DIRTY DATA" = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"DIRTY DATA", type text}}),
    KeyWordTable = Table.Buffer(#"Table 1"),
    #"Added Custom" = Table.AddColumn(#"Changed Type", "Custom", each let t = [DIRTY DATA] in  Table.SelectRows(Table.AddColumn(KeyWordTable,"New",each Text.Replace(t,[CODE COLUMN],"#(lf)")),each Text.Contains(t,[CODE COLUMN]))),
    #"Added Custom 2" = Table.AddColumn(#"Added Custom", "Custom2", each Table.ReorderColumns(Table.RenameColumns(Table.RemoveColumns(Table.AddColumn(Table.AddColumn(Table.SplitColumn([Custom], "New", Splitter.SplitTextByDelimiter("#(lf)", QuoteStyle.Csv), {"New.1", "New.2"}), "fetched column1", each Text.End([New.1],1)), "fetched column3", each Text.Start([New.2],3)),{"New.1", "New.2"}),{{"CODE COLUMN", "fetched column2"}}),{"fetched column1", "fetched column2", "fetched column3"})),
    #"Removed Columns" = Table.RemoveColumns(#"Added Custom 2",{"Custom"}),
    #"Expanded Custom2" = Table.ExpandTableColumn(#"Removed Columns", "Custom2", {"fetched column1", "fetched column2", "fetched column3"}, {"Custom2.fetched column1", "Custom2.fetched column2", "Custom2.fetched column3"}),
    #"Renamed Columns" = Table.RenameColumns(#"Expanded Custom2",{{"Custom2.fetched column1", "fetched column1"}, {"Custom2.fetched column2", "fetched column2"}, {"Custom2.fetched column3", "fetched column3"}}),
    #"Removed Columns1" = Table.RemoveColumns(#"Renamed Columns",{"DIRTY DATA"}),
    #"Replaced Value" = Table.ReplaceValue(#"Removed Columns1","",null,Replacer.ReplaceValue,{"fetched column1","fetched column2","fetched column3"})
in
    #"Replaced Value"

El resultado muestra:

6.PNG

Aquí está mi prueba pbix:

pbix

Espero que esto pueda ayudar.

Saludos

Giotto Zhi

View solution in original post

8 REPLIES 8
v-gizhi-msft
Community Support
Community Support

Hola

Por favor, pruebe esto en el Editor de consultas:

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("NYo7DoAgEETvQm3DLol6C34FQihIFnqxwOOLKJPXzMwLgXHAjnPH4b21X+uwuAQ2VyEA8H5TqOVxUaKSW811Ovu2jiNdVBBEyvX8xYIogHd/dC6l1koZU4GAxfgA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type text) meta [Serialized.Text = true]) in type table [#"DIRTY DATA" = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"DIRTY DATA", type text}}),
    KeyWordTable = Table.Buffer(#"Table 1"),
    #"Added Custom" = Table.AddColumn(#"Changed Type", "Custom", each let t = [DIRTY DATA] in  Table.SelectRows(Table.AddColumn(KeyWordTable,"New",each Text.Replace(t,[CODE COLUMN],"#(lf)")),each Text.Contains(t,[CODE COLUMN]))),
    #"Added Custom 2" = Table.AddColumn(#"Added Custom", "Custom2", each Table.ReorderColumns(Table.RenameColumns(Table.RemoveColumns(Table.AddColumn(Table.AddColumn(Table.SplitColumn([Custom], "New", Splitter.SplitTextByDelimiter("#(lf)", QuoteStyle.Csv), {"New.1", "New.2"}), "fetched column1", each Text.End([New.1],1)), "fetched column3", each Text.Start([New.2],3)),{"New.1", "New.2"}),{{"CODE COLUMN", "fetched column2"}}),{"fetched column1", "fetched column2", "fetched column3"})),
    #"Removed Columns" = Table.RemoveColumns(#"Added Custom 2",{"Custom"}),
    #"Expanded Custom2" = Table.ExpandTableColumn(#"Removed Columns", "Custom2", {"fetched column1", "fetched column2", "fetched column3"}, {"Custom2.fetched column1", "Custom2.fetched column2", "Custom2.fetched column3"}),
    #"Renamed Columns" = Table.RenameColumns(#"Expanded Custom2",{{"Custom2.fetched column1", "fetched column1"}, {"Custom2.fetched column2", "fetched column2"}, {"Custom2.fetched column3", "fetched column3"}}),
    #"Removed Columns1" = Table.RemoveColumns(#"Renamed Columns",{"DIRTY DATA"}),
    #"Replaced Value" = Table.ReplaceValue(#"Removed Columns1","",null,Replacer.ReplaceValue,{"fetched column1","fetched column2","fetched column3"})
in
    #"Replaced Value"

El resultado muestra:

6.PNG

Aquí está mi prueba pbix:

pbix

Espero que esto pueda ayudar.

Saludos

Giotto Zhi

Ashish_Mathur
Super User
Super User

Hola

Escriba estas fórmulas de columna calculadas

Fetched column1 = =IFERROR(MID(Table1[DIRTY DATA],SEARCH([Fetched column2],Table1[DIRTY DATA])-1,1),BLANK())
Fetched column2 = =FIRSTNONBLANK(FILTER(VALUES(Table2[CODE COLUMN]),SEARCH(Table2[CODE COLUMN],Table1[DIRTY DATA],1,0)),1)
Fetched column3 = =if(ISBLANK(Table1[Fetched column2]),BLANK(),MID(Table1[DIRTY DATA],SEARCH([Fetched column2],Table1[DIRTY DATA])+LEN(Table1[Fetched column2]),3))

Escriba primero la fórmula Columna 2 de Fetched.

Espero que esto ayude.

Untitled.png


Regards,
Ashish Mathur
http://www.ashishmathur.com
https://www.linkedin.com/in/excelenthusiasts/

@Ashish_Mathur, muchas gracias por su tiempo.

Acabo de copiar "Fetched column2" como sugeriste y pegaste, no pasa nada.

¿Qué estoy haciendo mal aquí?

ashish01.pngashish02.pngashish03.png

Acabo de intentar con la opción "añadir nueva columna" desde arriba, pero creo que me falta algo:

ashish04.png

Vaya a Modelado > Nueva columna.


Regards,
Ashish Mathur
http://www.ashishmathur.com
https://www.linkedin.com/in/excelenthusiasts/

Hola

La mía es una fórmula DAX, así que escríbela como una fórmula de columna calculada.


Regards,
Ashish Mathur
http://www.ashishmathur.com
https://www.linkedin.com/in/excelenthusiasts/

Muchas gracias @Ashish_Mathur,

Funcionó en la vista de informe como un encanto.

Pero no puedo ver esas columnas en "Power Query Editor". ¿Hay algún truco para usarlos allí?

Hola

No sé cómo resolver este problema en el Editor de consultas.


Regards,
Ashish Mathur
http://www.ashishmathur.com
https://www.linkedin.com/in/excelenthusiasts/

Helpful resources

Announcements
Microsoft Fabric Learn Together

Microsoft Fabric Learn Together

Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

Check out the April 2024 Power BI update to learn about new features.

April Fabric Community Update

Fabric Community Update - April 2024

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