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
Zyg_D
Continued Contributor
Continued Contributor

Código M para obtener el valor que estaba activo en una fecha específica

Esta es mi mesa biiiiig. Contiene todos los cambios realizados en una tabla de base de datos junto con la fecha.

data.JPG

No necesito importar toda la mesa. Sólo necesito el valor "Status" de cada "Nombre" en dos fechas específicas - 20190902 y 20191002. Así es como la tabla debe verse después de importarla:

result.JPG

¿Qué código M lo haría?

1 ACCEPTED SOLUTION
Zyg_D
Continued Contributor
Continued Contributor

Después de todo el día de pensamiento, prueba y error, se me ocurrió algo aceptable. El código M no es tan difícil como DAX. Me gusta. Felicidades a @SteveCampbell que me animó a probar la interfaz de usuario.

let
    Source = Excel.Workbook(File.Contents("C:\Temp\PBI_example.xlsx"), null, true),
    Table1_Table = Source{[Item="Table1",Kind="Table"]}[Data],
    #"Changed Type" = Table.TransformColumnTypes(Table1_Table,{{"Date", Int64.Type}, {"Name", type text}, {"Status", type text}}),
    #"Added Custom" = Table.AddColumn(#"Changed Type", "DateGroup", each if [Date] <= 20191002 then
   if [Date] <= 20190902
   then 20190902
   else 20191002
   else 0),
    #"Merged Columns" = Table.CombineColumns(Table.TransformColumnTypes(#"Added Custom", {{"Date", type text}}, "en-US"),{"Date", "Status"},Combiner.CombineTextByDelimiter(";", QuoteStyle.None),"DateStatus"),
    #"Grouped Rows" = Table.Group(#"Merged Columns", {"Name", "DateGroup"}, {{"MaxDateStatus", each List.Max([DateStatus]), type text}}),
    #"Split Column by Delimiter" = Table.SplitColumn(#"Grouped Rows", "MaxDateStatus", Splitter.SplitTextByDelimiter(";", QuoteStyle.Csv), {"MaxDateStatus.1", "MaxDateStatus.2"}),
    #"Changed Type1" = Table.TransformColumnTypes(#"Split Column by Delimiter",{{"MaxDateStatus.1", Int64.Type}, {"MaxDateStatus.2", type text}}),
    #"Removed Columns" = Table.RemoveColumns(#"Changed Type1",{"MaxDateStatus.1"}),
    #"Reordered Columns" = Table.ReorderColumns(#"Removed Columns",{"DateGroup", "Name", "MaxDateStatus.2"})
in
    #"Reordered Columns"

result_my.JPG

Esto muestra el estado solo si se ha cambiado de la marca de tiempo anterior. Podré calcular el estado restante con Power BI. Usando este código M sólo importaré los datos que necesito, evitando toneladas de filas inútiles.

View solution in original post

5 REPLIES 5
Zyg_D
Continued Contributor
Continued Contributor

Después de todo el día de pensamiento, prueba y error, se me ocurrió algo aceptable. El código M no es tan difícil como DAX. Me gusta. Felicidades a @SteveCampbell que me animó a probar la interfaz de usuario.

let
    Source = Excel.Workbook(File.Contents("C:\Temp\PBI_example.xlsx"), null, true),
    Table1_Table = Source{[Item="Table1",Kind="Table"]}[Data],
    #"Changed Type" = Table.TransformColumnTypes(Table1_Table,{{"Date", Int64.Type}, {"Name", type text}, {"Status", type text}}),
    #"Added Custom" = Table.AddColumn(#"Changed Type", "DateGroup", each if [Date] <= 20191002 then
   if [Date] <= 20190902
   then 20190902
   else 20191002
   else 0),
    #"Merged Columns" = Table.CombineColumns(Table.TransformColumnTypes(#"Added Custom", {{"Date", type text}}, "en-US"),{"Date", "Status"},Combiner.CombineTextByDelimiter(";", QuoteStyle.None),"DateStatus"),
    #"Grouped Rows" = Table.Group(#"Merged Columns", {"Name", "DateGroup"}, {{"MaxDateStatus", each List.Max([DateStatus]), type text}}),
    #"Split Column by Delimiter" = Table.SplitColumn(#"Grouped Rows", "MaxDateStatus", Splitter.SplitTextByDelimiter(";", QuoteStyle.Csv), {"MaxDateStatus.1", "MaxDateStatus.2"}),
    #"Changed Type1" = Table.TransformColumnTypes(#"Split Column by Delimiter",{{"MaxDateStatus.1", Int64.Type}, {"MaxDateStatus.2", type text}}),
    #"Removed Columns" = Table.RemoveColumns(#"Changed Type1",{"MaxDateStatus.1"}),
    #"Reordered Columns" = Table.ReorderColumns(#"Removed Columns",{"DateGroup", "Name", "MaxDateStatus.2"})
in
    #"Reordered Columns"

result_my.JPG

Esto muestra el estado solo si se ha cambiado de la marca de tiempo anterior. Podré calcular el estado restante con Power BI. Usando este código M sólo importaré los datos que necesito, evitando toneladas de filas inútiles.

amitchandak
Super User
Super User

@Zyg_D , al agregar una conexión desde la base de datos puede dar una consulta (bajo propiedad anticipada). Para esta tabla, cree una conexión y agregue la consulta.

AdvanceProperty.png

Zyg_D
Continued Contributor
Continued Contributor


@amitchandak escribió:

@Zyg_D, al agregar una conexión desde la base de datos puede dar una consulta (bajo propiedad anticipada). Para esta tabla, cree una conexión y agregue la consulta.

AdvanceProperty.png


Hola, @amitchandak . Gracias por la captura de pantalla. La fuente principal de los datos es, de hecho, la base de datos. Sin embargo, obtengo estos datos de un flujo de datos de Power BI. Esta opción no me permite introducir una consulta SQL. Supongo, la única opción que tengo es el código M? Quiero subrayar que no quiero importar toda la tabla en mi modelo.

SteveCampbell
Memorable Member
Memorable Member

No es necesario escribir el código específicamente, cargarlo en la interfaz de usuario y el usuario de los filtros en los encabezados de columna.



Did I answer your question? Mark my post as a solution! Proud to be a Super User!


Connect with me!
Stay up to date on  
Read my blogs on  



Zyg_D
Continued Contributor
Continued Contributor


@SteveCampbell escribió:

No es necesario escribir el código específicamente, cargarlo en la interfaz de usuario y el usuario de los filtros en los encabezados de columna.


Puede que tengas razón. Pido ayuda, porque no estoy creando la mesa deseada por mi cuenta. No es un filtro simple. También debe tener en cuenta los datos de otra columna... Intenté agrupar y ordenar en varias columnas, pero hasta ahora no tuve suerte. Le agradecería mucho su ayuda.

Helpful resources

Announcements
RTI Forums Carousel3

New forum boards available in Real-Time Intelligence.

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

MayPowerBICarousel

Power BI Monthly Update - May 2024

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