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

Earn a 50% discount on the DP-600 certification exam by completing the Fabric 30 Days to Learn It challenge.

Reply
Syndicate_Admin
Administrator
Administrator

Seleccionar los datos más recientes en la columna

Hola a todos.

Necesito ayuda para escribir una medida o crear una tabla para resolver mi problema.

Tengo una tabla, donde los datos están en formato plano.

fechanombregrupovalor
1 eneNombre1A1
3 eneNombre1A2
4 eneNombre1B4
4 eneNombre2B3

Entonces hago Pivot.

fechanombreAB
1 eneNombre11
3 eneNombre12
4 eneNombre1 4
4 eneNombre2 3

Pero en mi tabla los datos se insertan solo cuando se ha cambiado algo, por ejemplo, el valor para algún grupo.

Así que necesito una medida o tabla que para cada nombre muestre los datos más recientes en una columna:

nombreAB
Nombre12 4
Nombre23 3

Por cierto, tengo 140 columnas después de pivotar, si es importante.

Por lo tanto, es muy similar a la dinámica habitual, pero la función de agregación es seleccionar los datos más recientes.

Sería muy apreciado para cualquier ayuda.

1 ACCEPTED SOLUTION

No @wokroll

Puede filtrar la tabla para mantener solo las filas con los datos más recientes y, a continuación, hacer pivotar como lo hizo. A continuación se muestran los pasos.

En primer lugar, agrupe la tabla por columna Nombre y Grupo, agregando Todas las filas en una columna AllData.

072202.jpg

En segundo lugar, agregue una columna personalizada para filtrar cada valor de tabla en la columna AllData. De este modo, cada valor de tabla seguirá siendo sólo la fila de datos más reciente.

072203.jpg

En tercer lugar, quite las columnas excepto la columna Personalizada. A continuación, expanda Columna personalizada. Obtendrá una tabla filtrada que solo permanecen los datos más recientes. Puedes pivotarlo como lo hiciste.

072204.jpg

Puede pegar los códigos siguientes en una consulta en blanco para ver todos los pasos.

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMjIwMtQ11zVU0lHyS8xNBdGOQGyoFKsDlzRGkzRCljRBknQCYhNskkZQSWNckiBjTZViYwE=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Date = _t, Name = _t, Group = _t, Value = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Date", type date}, {"Name", type text}, {"Group", type text}, {"Value", Int64.Type}}),
    #"Grouped Rows" = Table.Group(#"Changed Type", {"Name", "Group"}, {{"AllData", each _, type table [Date=nullable date, Name=nullable text, Group=nullable text, Value=nullable number]}}),
    #"Added Custom" = Table.AddColumn(#"Grouped Rows", "Custom", each let newestDate = List.Max([AllData][Date]) in Table.SelectRows([AllData],each [Date]=newestDate)),
    #"Removed Other Columns" = Table.SelectColumns(#"Added Custom",{"Custom"}),
    #"Expanded Custom" = Table.ExpandTableColumn(#"Removed Other Columns", "Custom", {"Date", "Name", "Group", "Value"}, {"Date", "Name", "Group", "Value"}),
    #"Removed Columns" = Table.RemoveColumns(#"Expanded Custom",{"Date"}),
    #"Pivoted Column" = Table.Pivot(#"Removed Columns", List.Distinct(#"Removed Columns"[Group]), "Group", "Value", List.Sum)
in
    #"Pivoted Column"

saludos
Equipo de soporte de la comunidad _ Jing
Si esta publicación ayuda, por favor acéptala como la solución para ayudar a otros miembros a encontrarla.

View solution in original post

4 REPLIES 4
Syndicate_Admin
Administrator
Administrator

@wokroll no es necesario dinamizar los datos, manténgalo sin dinamizar, todas las dos medidas siguientes:

Latest Value = 
VAR __t = MAX ( 'Table'[Date] )
RETURN
CALCULATE ( SUM ( 'Table'[ Value] ), 'Table'[Date] = __t )

New Value = SUMX ( SUMMARIZE ('Table', 'Table'[ Name ], 'Table'[Group] ), [Latest Value] )

En el objeto visual de matriz, use Nombre en filas Grupo en columnas y Nueva medida de valor en valor y obtendrá el resultado.

Síguenos en LinkedIn

Consulta mi última entrada de blog La potencia del uso de grupos de cálculo con relaciones inactivas (Parte 1) (perytus.com) Me gustaría elogios si mi solución ayudó. 👉 Si puede pasar tiempo publicando la pregunta, también puede hacer esfuerzos para dar Felicitaciones a quien ayudó a resolver su problema. ¡Es una muestra de agradecimiento!

Visítenos en https://perytus.com, su ventanilla única para proyectos, formación y consultoría relacionados con Power BI.

Gracias por su ayuda. Se ve muy bien.

Pero desafortunadamente me di cuenta de que necesito hacerlo como una tabla en Power Query. Porque más adelante tendré que hacer algunas transformaciones que solo están disponibles en Power Query (pivotar, buscar números).

¿Es posible hacer eso en Power Query?

No @wokroll

Puede filtrar la tabla para mantener solo las filas con los datos más recientes y, a continuación, hacer pivotar como lo hizo. A continuación se muestran los pasos.

En primer lugar, agrupe la tabla por columna Nombre y Grupo, agregando Todas las filas en una columna AllData.

072202.jpg

En segundo lugar, agregue una columna personalizada para filtrar cada valor de tabla en la columna AllData. De este modo, cada valor de tabla seguirá siendo sólo la fila de datos más reciente.

072203.jpg

En tercer lugar, quite las columnas excepto la columna Personalizada. A continuación, expanda Columna personalizada. Obtendrá una tabla filtrada que solo permanecen los datos más recientes. Puedes pivotarlo como lo hiciste.

072204.jpg

Puede pegar los códigos siguientes en una consulta en blanco para ver todos los pasos.

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMjIwMtQ11zVU0lHyS8xNBdGOQGyoFKsDlzRGkzRCljRBknQCYhNskkZQSWNckiBjTZViYwE=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Date = _t, Name = _t, Group = _t, Value = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Date", type date}, {"Name", type text}, {"Group", type text}, {"Value", Int64.Type}}),
    #"Grouped Rows" = Table.Group(#"Changed Type", {"Name", "Group"}, {{"AllData", each _, type table [Date=nullable date, Name=nullable text, Group=nullable text, Value=nullable number]}}),
    #"Added Custom" = Table.AddColumn(#"Grouped Rows", "Custom", each let newestDate = List.Max([AllData][Date]) in Table.SelectRows([AllData],each [Date]=newestDate)),
    #"Removed Other Columns" = Table.SelectColumns(#"Added Custom",{"Custom"}),
    #"Expanded Custom" = Table.ExpandTableColumn(#"Removed Other Columns", "Custom", {"Date", "Name", "Group", "Value"}, {"Date", "Name", "Group", "Value"}),
    #"Removed Columns" = Table.RemoveColumns(#"Expanded Custom",{"Date"}),
    #"Pivoted Column" = Table.Pivot(#"Removed Columns", List.Distinct(#"Removed Columns"[Group]), "Group", "Value", List.Sum)
in
    #"Pivoted Column"

saludos
Equipo de soporte de la comunidad _ Jing
Si esta publicación ayuda, por favor acéptala como la solución para ayudar a otros miembros a encontrarla.

Gracias, que parece una buena idea!

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.

LearnSurvey

Fabric certifications survey

Certification feedback opportunity for the community.

Top Solution Authors