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
Syndicate_Admin
Administrator
Administrator

Coincidencia aproximada para DateTime: Un enfoque de rendimiento deficiente

¡Hola a todos!

Tengo una tabla ("TPSMeasurements") con una categoría, una fecha y los valores medidos que quiero estudiar (la distancia de pendiente). Lo que tengo que hacer es encontrar la diferencia entre el valor actual y un valor "n" tiempo antes (normalmente 24h o 7 días) en la misma categoría. Las mediciones no son regulares, así que no soy capaz de encontrar la "Época" exacta a buscar. Consulte un ejemplo a continuación:

Captura de tela 2021-05-08 024551.jpg

Para encontrar el valor necesario sin conocer la fecha/hora exacta he creado una columna Index con el siguiente DAX:

Índice =

var = fTPSMeasurements[Nombre]

fue pérdida =

FILTRO(

fTPSMeasurements;

fTPSMeasurements[Nombre]=punto

)

devolución

RANKX(

pestaña;

fTPSMeasurements[Epoch];;

Asc

)

Después, calculé cuántos D.I. hay entre la lectura actual y la primera lectura después de la hora establecida "n":

obs.: [AnalysisTime] es un parámetro que el usuario puede establecer, en horas

IDCount =

var epoch = fTPSMeasurements[Epoch]

var día = epoch-fTPSMeasurements[AnalysisTime]/24

var = fTPSMeasurements[Nombre]

var LagDate =

CALCULAR(

COUNTROWS(fTPSMeasurements);

FILTRO(

fTPSMeasurements;

fTPSMeasurements[Nombre]=punto &&

fTPSMeasurements[Epoch] >= día &&

fTPSMeasurements[Epoch] < época

)

)

devolución

LagDate

Finalmente puedo hacer lo siguiente y restar los dos valores:

SlopeDelta (mm) =

var = RELATED(dPoints[Nombre])

estaba en = fTPSMeasurements[Index] - fTPSMeasurements[IDCount]

var LagValue =

MAXX(

FILTRO(

fTPSMeasurements;

fTPSMeasurements[Nombre] = punto &&

fTPSMeasurements[Index] = ind

);

fTPSMeasurements[SlopeDistanceAtmosPppmCorrected]

)

var epoch =

MAXX(

FILTRO(

fTPSMeasurements;

fTPSMeasurements[Nombre] = punto &&

fTPSMeasurements[Index] = ind

);

fTPSMeasurements[Epoch]

)

var DeltaY =

IF(

ISBLANK(LagValue) || fTPSMeasurements[Index] = fTPSMeasurements[IDCount]+1; 0 ; Filtrar valores al inicio del proyecto

fTPSMeasurements[SlopeDistanceAtmosPppmCorrected]-LagValue

)

var DeltaX = fTPSMeasurements[AnalysisTime]

devolución

DeltaY*1000 //Valor devuelto en mm

Hasta ahora tan bueno, funciona bien en pequeños conjuntos de datos (probado en ~ 500k filas y trabajado con un poco de tiempo de carga).

Sin embargo, ahora tengo un conjunto de datos de filas de 1,6kk y está tardando mucho tiempo en cargarse.

La columna IDCount tiene el peor rendimiento, con diferencia. ¿Es posible hacer estos cálculos de otra manera?

Por favor, avísame si puedo explicarlo mejor.

¡Cualquier ayuda será muy apreciada! ¡gracias!

2 REPLIES 2
Syndicate_Admin
Administrator
Administrator

No @hugobdo

¿Puedes compartir el pbix?

SU18_powerbi_badge

Por favor, acepte la solución cuando haya terminado y considere la posibilidad de dar un pulgar hacia arriba si las publicaciones son útiles.

Póngase en contacto conmigo de forma privada para obtener soporte con cualquier necesidad de BI a mayor escala, tutoría, etc.

Hey @AlB, gracias por su respuesta!

¡seguro! Lo envié a onedrive:

https://1drv.ms/u/s!AnUEJ0hL2PrngeJKLbLkoFsQY62kCw

obs.: Remató los datos en filas de 50k y cambié de valor, debido a problemas de privacidad

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 Kudoed Authors