Find everything you need to get certified on Fabric—skills challenges, live sessions, exam prep, role guidance, and more.
Get startedGrow your Fabric skills and prepare for the DP-600 certification exam by completing the latest Microsoft Fabric challenge.
Hola a todos,
Estoy luchando para encontrar una manera de calcular el segundo valor alto de otra tabla.
Los datos de ejemplo son los siguientes. Ambas tablas están conectadas en ItemID
Datos del pedido
Datos de reparación
La Tabla 1 son los datos de pedido y la Tabla 2 son los datos de reparación.
Mi objetivo es encontrar el 2º país de movimiento y luego si está presente 3º.
Resultado previsto:
Aquí: Fecha de reparación Decide el rango
(Primer país de reparación = Fecha de reparación más temprana)
(Segundo país de reparación = Segunda fecha de reparación más temprana)
Cualquier ayuda será muy apreciada.
¡Gracias de antemano!
Saludos
Hi, @ADDHOPE
De acuerdo con su descripción, desea " encontrar el 2º país de movimiento y luego si está presente 3º ".
Estos son los pasos que puede consultar:
(1) Mis datos de prueba son los mismos que los tuyos.
(2) Podemos modificar nuestra 'Tabla2' en Power Query Editor, puedes poner esto en el "Editor avanzado":
let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMlTSUXJPLcpNzKsEskz0DU31jQyMDJRidSBybkWJecmpQIalvrEBQsoYKOKZl5KZCKQNDfUNTUBSRmApI5BUSWJOJViTkTlIxhDTPLguAyy6DI2gumIB", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [ItemId = _t, RepaireCountry = _t, RepairDate = _t]),
test = Table.TransformColumnTypes(Source,{{"ItemId", Int64.Type}, {"RepaireCountry", type text}, {"RepairDate", type date}}),
Custom1 = Table.Group(test,"ItemId",{"test",(x)=>Table.AddIndexColumn(Table.Sort(x,"RepairDate"),"Index",1,1,Int64.Type) }),
#"Expanded test" = Table.ExpandTableColumn(Custom1, "test", {"RepaireCountry", "RepairDate", "Index"}, {"RepaireCountry", "RepairDate", "Index"}),
#"Changed Type" = Table.TransformColumnTypes(#"Expanded test",{{"Index", Int64.Type}})
in
#"Changed Type"
Entonces podemos obtener esta tabla2:
(3) Luego aplicamos los datos al Power BI Desktop y podemos hacer clic en "Nueva tabla" para crear una tabla:
Table = SELECTCOLUMNS( 'Table1' , "ItemID" ,[ItemId] , "CountrySold" , [CountrySold] , "First repair country" ,var _item = [ItemId] return MAXX(FILTER('Table2' , 'Table2'[Index]=1 && 'Table2'[ItemId]=_item ),[RepaireCountry]) ,"Second repair country", var _item = [ItemId] return MAXX(FILTER('Table2' , 'Table2'[Index]=2 && 'Table2'[ItemId]=_item ),[RepaireCountry]),"Third repair country",var _item = [ItemId] return MAXX(FILTER('Table2' , 'Table2'[Index]=3 && 'Table2'[ItemId]=_item ),[RepaireCountry]) )
(4) Entonces podemos satisfacer su necesidad, el resultado es el siguiente:
Gracias por su tiempo y uso compartido, y gracias por su apoyo y comprensión de PowerBI.
Saludos
Aniya Zhang
Si esta publicación ayuda, considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.
Aniya Zhang,
Gracias por su respuesta, funciona en los datos de prueba.
Pero, ¿puede explicar esta línea de código para que pueda implementarla también en mi informe real?
Tengo curiosidad al respecto.
Saludos
, @ADDHOPE
Este código significa:
Agrupe según [ItemID], luego ordene de menor a mayor según [RepairDate], y luego numere la tabla "1,2,3...", y luego podemos obtener los primeros tres valores correspondientes según [Índice].
Gracias por su tiempo y uso compartido, y gracias por su apoyo y comprensión de PowerBI.
Saludos
Aniya Zhang
Si esta publicación ayuda, considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.
Hola Aniya Zhang,
Gracias de nuevo.
Tengo una pregunta más. Continuando con mi evaluación, ahora tengo que averiguar la identificación que tiene diferentes países de ventas y diferentes países de reparación. Puedo hacerlo fácilmente para el 1er país de reparación por esta fórmula.
1st Repair = CALCULATE(COUNT('Table1'[ItemID],'Table2'[RepairCountry] <> SELECTEDVALUE('Table1'[SalesCountry]))
Pero ahora tengo que encontrar todas las identificaciones que tienen un país de reparación diferente al país de ventas. es decir, también quiero obtener esas identificaciones si los países de reparación 2nd o 3rd no coinciden.
Por lo tanto, la tabla debe enumerar todos los ItemID donde el país de reparación no coincide con el país de ventas, independientemente de la instancia, donde sucedió en 3rd o 2nd.
¿Puede por favor ayudarnos? 🙂
Saludos
Cree un rango para la fecha de reparación para el mismo ItemID y utilícelo como filtros para obtener la segunda, tercera fecha de reparación, etc.
Rank = RANKX(FILTER('Table','Table'[ItemID]=EARLIER('Table'[ItemID])),'Table'[RepairDate],,ASC,DENSE)
¿Funciona para ti? ¡Marque esta publicación como una solución si lo hace!
Consulte este blog mío: Cómo exportar datos de telemetría de Azure IoT Central a Power BI
Hola Shaurya,
Gracias por su rápida respuesta. Pero me muestra a continuación el error.
¿Puedes ayudarme con esto?
Gracias.
Join the community in Stockholm for expert Microsoft Fabric learning including a very exciting keynote from Arun Ulag, Corporate Vice President, Azure Data.
Ask questions in Eventhouse and KQL, Eventstream, and Reflex.