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

Grow your Fabric skills and prepare for the DP-600 certification exam by completing the latest Microsoft Fabric challenge.

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
RTI Forums Carousel3

New forum boards available in Real-Time Intelligence.

Ask questions in Eventhouse and KQL, Eventstream, and Reflex.

MayPowerBICarousel1

Power BI Monthly Update - May 2024

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

Europe Fabric Conference

Europe’s largest Microsoft Fabric Community Conference

Join the community in Stockholm for expert Microsoft Fabric learning including a very exciting keynote from Arun Ulag, Corporate Vice President, Azure Data.