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
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
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.

Top Solution Authors