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
mim
Advocate V
Advocate V

cómo optimizar el filtro por una medida utilizando una tabla desconectada

Hola

mi modelo tiene dos tablas que muestran coordenadas de openstreetmap, estoy usando una medida para calcular la distancia que se wtween dos coordenadas ver blog aquí https://radacad.com/dynamic-distances-in-power-bi

el informe funciona así, se selecciona un punto, y una distancia, y la medida filtrará todos los puntos < distancia, ahora el informe funciona perfectamente hasta que los datos son alrededor de 1 millones, después de que se comparte muy lento, una vez que cargué todos los datos alrededor de 15 millones, la medida tarda casi 11 segundos ?

Adjunté un ejemplo, cargué los datos del pavo solo

https://app.box.com/s/86scgz5nm0ad7s8uitd84vc7k4lgtrgk

1 ACCEPTED SOLUTION

Hola @mim ,

este es mi mejor (en este momento) para la medida distance_filter, se llama un poco diferente:

distance_filter tom = 
var _d = max(distance[Value])
return 
if([Kilometers] <= _d , 1 , BLANK())

Como puede ver, se me ha quitado el almacenamiento en caché de [Kilómetros] ya que se calcula sobre una base de fila, la columna 'amenity'[index].

Mi 1r intento fue inútil.

Sin embargo, en lugar de devolver los kilómetros, la fórmula devuelve 1 si se cumple la condición, de lo contrario explícitamente BLANK().

Utilizo esta configuración para el filtro en ambos objetos visuales, la matriz y el mapa de iconos:

image.png

Estos son los contadores de rendimiento, mediante el analizador de rendimiento dentro de Power BI Desktop:

La medida de distance_filter tom ajustada en combinación con el filtro visual ajustado crea estas mediciones de rendimiento:

image.png

Por el contrario, el distance_filter original y no es un filtro de nivel visual en blanco:

image.png

El uso de la medida ajustada y la configuración del filtro de nivel visual ajustado proporcionan ligeras mejoras.

Creo que no es posible optimizar la medida [kilómetros], se aplica a cada fila, la columna de índice. Como el algoritmo es más complejo (la naturaleza de este algoritmo) el motor de fórmulas tiene que ser utilizado.

Me pregunto cómo terminará esto.

saludos

Tom



Did I answer your question? Mark my post as a solution, this will help others!

Proud to be a Super User!
I accept Kudos 😉
Hamburg, Germany

View solution in original post

16 REPLIES 16
TomMartens
Super User
Super User

Hola @mim ,

aquí está el DAX para el filtro distante @darlove ya mencionado:

distance_filter = 
var _km = [Kilometers]
var _d = max(distance[Value])
return
if(
    _km <= _d
    , _km
)

saludos

Tom

Manténgase seguro, mantengase saludable y feliz vacaciones



Did I answer your question? Mark my post as a solution, this will help others!

Proud to be a Super User!
I accept Kudos 😉
Hamburg, Germany

el uso de la variable lo hacen peor de 10 segundos a 40 segundos !!!!

Hola @mim ,

¿puedes intentarlo de nuevo, cambié un poco el DAX.

saludos

Tom



Did I answer your question? Mark my post as a solution, this will help others!

Proud to be a Super User!
I accept Kudos 😉
Hamburg, Germany

@TomMartens no, puedes probarlo por ti mismo en el archivo pbix que lo compartí, y ver la diferencia ?

Hola @mim ,

este es mi mejor (en este momento) para la medida distance_filter, se llama un poco diferente:

distance_filter tom = 
var _d = max(distance[Value])
return 
if([Kilometers] <= _d , 1 , BLANK())

Como puede ver, se me ha quitado el almacenamiento en caché de [Kilómetros] ya que se calcula sobre una base de fila, la columna 'amenity'[index].

Mi 1r intento fue inútil.

Sin embargo, en lugar de devolver los kilómetros, la fórmula devuelve 1 si se cumple la condición, de lo contrario explícitamente BLANK().

Utilizo esta configuración para el filtro en ambos objetos visuales, la matriz y el mapa de iconos:

image.png

Estos son los contadores de rendimiento, mediante el analizador de rendimiento dentro de Power BI Desktop:

La medida de distance_filter tom ajustada en combinación con el filtro visual ajustado crea estas mediciones de rendimiento:

image.png

Por el contrario, el distance_filter original y no es un filtro de nivel visual en blanco:

image.png

El uso de la medida ajustada y la configuración del filtro de nivel visual ajustado proporcionan ligeras mejoras.

Creo que no es posible optimizar la medida [kilómetros], se aplica a cada fila, la columna de índice. Como el algoritmo es más complejo (la naturaleza de este algoritmo) el motor de fórmulas tiene que ser utilizado.

Me pregunto cómo terminará esto.

saludos

Tom



Did I answer your question? Mark my post as a solution, this will help others!

Proud to be a Super User!
I accept Kudos 😉
Hamburg, Germany

wow, perfecto, es de vuelta a 3 segundos, no puedo vivir un simple cambio hizo esa diferencia

Anonymous
Not applicable

A propósito... La fórmula para la distancia es compleja. ¿No puedes simplificarlo un poco? Trate de buscar en la red para aproximaciones más simples. Después de todo, no creo que esto debe ser perfecto para el décimo dígito decimal...

Mejor
D
Anonymous
Not applicable

Aquí hay una página con aproximaciones más simples que serían mucho más rápidos de calcular, supongo:

https://en.wikipedia.org/wiki/Geographical_distance

Mejor
D
Anonymous
Not applicable

En primer lugar, su distance_filter debe utilizar un VARiable para capturar la distancia y luego utilizarla en el IF subsiguiente.

Sin embargo, para acelerar este cálculo hasta una velocidad loca... tendrás que crear una matriz (solo una parte de ella, por ejemplo, la parte superior) que almacenará todas las distancias entre puntos. En una palabra, tienes que precalcular las distancias. Puede hacerlo fácilmente en Power Query.

Por supuesto, una matriz de este tipo debe estar sin pivotar en una tabla de 3 columnas:

Punto de referencia, A punto, Distancia


Mejor
D

Tengo 15 miilions registro, Si precálculo entonces se convierte en 15 millones * 15 millones , que es mucho 🙂

Anonymous
Not applicable

No importa que sea mucho. Lo que importa es el número de valores distintos en una columna. Cuanto menos, mejor. Tengo tablas con más de 200 millones de filas y los cálculos son instantáneos.

Cuando calcule la tabla como he indicado, asegúrese de que las distancias son, por ejemplo, en metros completos, no fracciones de metros. Por lo tanto, la distancia debe ser un int. Aún mejor, hazlo en kilómetros completos.

Por cierto, como mínimo sólo se necesita (15 * 15 - 15) / 2 a 105 mln de distancias. Eso no es mucho. Puede realizar el cálculo en Power Query o puede usar el script de Python o R para ello.


Mejor
D

@darlove , comprobar sus matemáticas, si sólo tengo 1 millón de registros, la combinación será 1 millón X 1 millones á 1 billón !!!!

y no puedo dividir/2 ya que necesito una columna para filtrar, por lo que el cálculo previo no es factible

Anonymous
Not applicable

De hecho, debería haber multiplicado las unidades (millones) también. Pero quería tomar un atajo, que - como se puede ver - no funcionó.

Mejor
D
Anonymous
Not applicable

Sin embargo, puedes hacer algo diferente. Elija un número representativo "pequeño" de puntos de referencia (una cuadrícula bien espaciada) y calcule previamente las distancias a todos los demás puntos. A continuación, cree otra tabla que para cada punto le indicará dónde está el punto más cercano del representante.

Puedes averiguar el resto. Si no puede utilizar un número muy preciso, utilice aproximaciones rápidas. Esa es la manera de conquistar este problema.

Mejor
D
kentyler
Solution Sage
Solution Sage

¿Ha intentado ejecutar Dax Studio y ver si puede ayudarle a identificar la parte lenta de su código?





Did this post answer your question? Mark it as a solution so others can find it!

Help when you know. Ask when you don't!




Join the conversation at We Talk BI find out more about me at Slow BI


Hice, la fijación es el problema, parece que todo está dirigido por el FE 😞 que es malo i adivinar

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.