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.
DateTime | SerialId | GenHours | Diferencia |
9/22/2020 18:04 | M3501-118 | 4789 | espacio en blanco |
4/12/2021 18:19 | M3501-118 | 5047 | 258 |
5/5/2021 14:28 | M3501-118 | 5047 | 0 |
6/17/2021 15:10 | M3501-118 | 5049 | 2 |
1/12/2021 17:01 | M8501-112 | 928.4 | espacio en blanco |
3/8/2021 20:31 | M8501-112 | 1317 | 388.6 |
4/12/2021 18:19 | M8501-112 | 1317 | 0 |
5/5/2021 14:29 | M8501-112 | 1317 | 0 |
8/31/2020 23:44 | M8501-116 | 1201.7 | espacio en blanco |
1/6/2021 20:56 | M8501-116 | 1301 | 99.3 |
3/8/2021 20:31 | M8501-116 | 1315 | 14 |
4/12/2021 18:19 | M8501-116 | 220 | 1095 |
4/24/2020 10:46 | M8501-114 | 1859 | espacio en blanco |
1/1/2021 17:00 | M8501-114 | 1622 | 237 |
Tengo la tabla anterior. Me gustaría encontrar la diferencia entre cada fila basada en el serialId, Querría el resultado de la columna "diferencia". ¿Puede alguien por favor proporcionar la solución?
Gracias
Allí, @axk180022
¿Puedo preguntarle si su problema ha sido resuelto? ¿Es útil para usted la publicación anterior?
Si lo hace, ¿podría marcar la publicación que ayuda como Respondida? Ayudará a los demás en la comunidad a encontrar la solución fácilmente si enfrentan el mismo problema con usted. Gracias.
Saludos
Equipo de apoyo a la comunidad _ Zeon Zheng
Si esta publicación ayuda,entonces considere Aceptarla como la solución para ayudar a los otros miembros a encontrarla más rápidamente.
Hola
Esta fórmula de columna calculada funciona
Diff = if(isblank(CALCULATE(max(Data[DateTime]),FILTER(Data,Data[SerialId]=EARLIER(Data[SerialId])&&Data[DateTime]<EARLIER(Data[DateTime])))),blank(),abs(Data[GenHours]-lookupvalue(Data[GenHours],Data[DateTime],CALCULATE(max(Data[DateTime]),FILTER(Data,Data[SerialId]=EARLIER(Data[SerialId])&&Data[DateTime]<EARLIER(Data[DateTime]))),Data[SerialId],Data[SerialId])))
Espero que esto ayude.
Hola
@AlexisOlson Sí. No pude reproducir sus resultados antes de abrir su archivo adjunto, porque simplemente consideré [Gen Hours] en su fórmula como una columna. Lo encontré después de abrir el archivo adjunto.
Creo que lo que @axk180022 podría necesitar es una columna. Tomé esto como un desafío y obtuve la fórmula anterior.
Hola, @axk180022, creo que las soluciones proporcionadas por @AlexisOlson @speedramps son viables, y espero que estas sean útiles para usted.
Saludos
Equipo de apoyo a la comunidad _ Zeon Zheng
Si esta publicación ayuda,entonces considere Aceptarla como la solución para ayudar a los otros miembros a encontrarla más rápidamente
Allí, @axk180022
Prueba esto:
Column =
var _CurrDateTime=[DateTime]
var _PrevDateTime=MAXX(FILTER(ALL('Table'),[SerialId]=EARLIER([SerialId])&&[DateTime]<_CurrDateTime),[DateTime])
var _GenHours=CALCULATE(MAX('Table'[GenHours]),FILTER(ALL('Table'),[SerialId]=EARLIER([SerialId])&&[DateTime]=_PrevDateTime))
var _if=IF(ISBLANK(_GenHours),BLANK(),ABS([GenHours]-_GenHours))
return _if
Resultado:
Consulte el archivo adjunto a continuación para obtener más detalles. Espero que esto ayude.
Saludos
Equipo de apoyo a la comunidad _ Zeon Zheng
Si esta publicación ayuda,entonces considere Aceptarla como la solución para ayudar a los otros miembros a encontrarla más rápidamente.
@v-angzheng-msft Esta es solo una versión de mi solución como una columna calculada en lugar de una medida ...
Hola axk180022
Haga clic aquí para descargar una demostración
En Power Query:-
Reemplace "espacios en blanco" por null
haga clic en SerialId y ordenar
haga clic en DateTime y ordene
En el menú Consultas del extremo izquierdo:
haga clic con el botón derecho en la tabla y Referencias. Llame a la nueva tabla Tabla1.
haga clic con el botón derecho en la tabla y Referencias. Llame a la nueva tabla Tabla2.
En la Tabla 1 agregue un índice a partir de 0
En la Tabla2, agregue un índice a partir de 1
En la Tabla 1, combine la Tabla 2 en SerialId e Índice
Expanda la tabla2.GehHours
Agregar una nueva diferencia de columna = GehHours - Table2.GehHours
Haga clic aquí para descargar una demostración
Recuerde que somos voluntarios de la comunidad de BI, así que haga clic en el pulgar hacia arriba para que me tome la molestia de ayudarlo y luego acepte la solución si funciona. ¡Gracias!
Hay un montón de formas de abordar esto, pero un método que he utilizado varias veces es generar columnas de índice de desplazamiento y hacer una autocombinión que coincida con las dos columnas de índice para obtener la fila anterior. Es un poco extraño pero más eficiente computacionalmente que cualquier otro método que se me haya ocurrido.
Aquí hay una variación ligeramente diferente similar a las que vinculé:
let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("hdHREYMgEATQVhy+jdweBxz0kAoc+28jCkTNoOaPjzcsu8yzSZbZMjEN0ExiRvN2nvACdD0Pg0RNZhlnIxYFYoNIHfQksUBvfXOSWe9dsIgN+gy6gjUZR3LMhA1qhVxgYp2kSGe1QqbsegiHeNflGv50eXBqHeqK7LLICYYKmTDF1ibsb/Shl25t+Njl6+D/dKmQmZpjaR9NWc7BUi9Uv899rE29C8xmWT4=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [DateTime = _t, SerialId = _t, GenHours = _t]),
#"Changed Type" = Table.TransformColumnTypes(Source,{{"DateTime", type datetime}, {"SerialId", type text}, {"GenHours", type number}}),
#"Added Index" = Table.AddIndexColumn(#"Changed Type", "Index0", 0, 1, Int64.Type),
#"Added Index1" = Table.AddIndexColumn(#"Added Index", "Index1", 1, 1, Int64.Type),
#"Merged Queries" = Table.NestedJoin(#"Added Index1", {"Index0"}, #"Added Index1", {"Index1"}, "Added Index1", JoinKind.LeftOuter),
#"Expanded Added Index1" = Table.ExpandTableColumn(#"Merged Queries", "Added Index1", {"SerialId", "GenHours"}, {"SerialId.1", "GenHours.1"}),
#"Added Custom" = Table.AddColumn(#"Expanded Added Index1", "Diff", each if [SerialId] = [SerialId.1] then [GenHours] - [GenHours.1] else null, type number),
#"Removed Columns" = Table.RemoveColumns(#"Added Custom",{"Index0", "Index1", "SerialId.1", "GenHours.1"}),
#"Sorted Rows" = Table.Sort(#"Removed Columns",{{"SerialId", Order.Ascending}, {"DateTime", Order.Ascending}})
in
#"Sorted Rows"
Intente pegar esto en su ventana del Editor avanzado y repasó los pasos de uno en uno.
Editar:
Como sugiere @speedramps, podemos hacer la combinación en varias columnas para eliminar la comprobación [SerialId] = [SerialId.1].
Aquí está la consulta modificada:
let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("hdHREYMgEATQVhy+jdweBxz0kAoc+28jCkTNoOaPjzcsu8yzSZbZMjEN0ExiRvN2nvACdD0Pg0RNZhlnIxYFYoNIHfQksUBvfXOSWe9dsIgN+gy6gjUZR3LMhA1qhVxgYp2kSGe1QqbsegiHeNflGv50eXBqHeqK7LLICYYKmTDF1ibsb/Shl25t+Njl6+D/dKmQmZpjaR9NWc7BUi9Uv899rE29C8xmWT4=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [DateTime = _t, SerialId = _t, GenHours = _t]),
#"Changed Type" = Table.TransformColumnTypes(Source,{{"DateTime", type datetime}, {"SerialId", type text}, {"GenHours", type number}}),
#"Added Index" = Table.AddIndexColumn(#"Changed Type", "Index0", 0, 1, Int64.Type),
#"Added Index1" = Table.AddIndexColumn(#"Added Index", "Index1", 1, 1, Int64.Type),
#"Merged Queries" = Table.NestedJoin(#"Added Index1", {"Index0", "SerialId"}, #"Added Index1", {"Index1", "SerialId"}, "Added Index1", JoinKind.LeftOuter),
#"Expanded Added Index1" = Table.ExpandTableColumn(#"Merged Queries", "Added Index1", {"SerialId", "GenHours"}, {"SerialId.1", "GenHours.1"}),
#"Added Custom" = Table.AddColumn(#"Expanded Added Index1", "Diff", each [GenHours] - [GenHours.1], type number),
#"Removed Columns" = Table.RemoveColumns(#"Added Custom",{"Index0", "Index1", "SerialId.1", "GenHours.1"}),
#"Sorted Rows" = Table.Sort(#"Removed Columns",{{"SerialId", Order.Ascending}, {"DateTime", Order.Ascending}})
in
#"Sorted Rows"
Gen Hours es una medida que se crea que está a continuación
Ah, no me di cuenta de que estabas buscando una solución DAX. Eso es en realidad un poco más fácil.
Prueba esto:
Difference =
VAR CurrDateTime = SELECTEDVALUE ( Merge1[DateTime] )
VAR PrevDateTime = CALCULATE ( MAX ( Merge1[DateTime] ), Merge1[DateTime] < CurrDateTime )
VAR PriorGenHours = CALCULATE ( [Gen Hours], Merge1[DateTime] = PrevDateTime )
RETURN
IF ( NOT ISBLANK ( PriorGenHours ), ABS ( [Gen Hours] - PriorGenHours ) )
Ask questions in Eventhouse and KQL, Eventstream, and Reflex.
Check out the May 2024 Power BI update to learn about new features.
User | Count |
---|---|
1 | |
1 | |
1 | |
1 | |
1 |