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.
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
Solved! Go to 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:
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:
Por el contrario, el distance_filter original y no es un filtro de nivel visual en blanco:
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
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
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
@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:
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:
Por el contrario, el distance_filter original y no es un filtro de nivel visual en blanco:
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
wow, perfecto, es de vuelta a 3 segundos, no puedo vivir un simple cambio hizo esa diferencia
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 🙂
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
¿Ha intentado ejecutar Dax Studio y ver si puede ayudarle a identificar la parte lenta de su código?
Help when you know. Ask when you don't!
Hice, la fijación es el problema, parece que todo está dirigido por el FE 😞 que es malo i adivinar
Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City
Check out the April 2024 Power BI update to learn about new features.
User | Count |
---|---|
2 | |
1 | |
1 | |
1 | |
1 |
User | Count |
---|---|
2 | |
2 | |
2 | |
2 | |
1 |