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
CarlosRios
Regular Visitor

Cálculos entre filas de tabla

Buenas tardes amigos, estoy teniendo algunas dificultades para calcular la distancia entre coordenadas en una sola mesa. Ya tengo la fórmula para calcular la distancia entre coordenadas, pero no puedo implementar en DAX el cálculo entre las filas de la tabla, la idea es calcular la distancia entre coordenadas consecutivas en la misma tabla de acuerdo con la imagen:

coordenadas.png
Imagino que tienes que usar la función EARLIER(), pero aún no he encontrado la manera correcta de hacerlo. Otra opción sería crear dos columnas con los datos desplazados una vez hacia abajo, por lo que sería fácil apuntar a las latitudes y longitudes de los dos puntos, pero tampoco podría crear esa columna cambiando una fila.

Le agradecería que alguien me diera una luz.

4 REPLIES 4
AlB
Super User
Super User

Hola @CarlosRios

Te daré el código para obtener la (x,y) de la siguiente fila, luego puedes calcular la distancia usando este código. Creo que es mejor hacer esto directamente sobre la mesa (en lugar de en un objeto visual), es decir, como una columna calculada.

Distance (to be completed) =
VAR x1 = Table1[LATITUDE]
VAR y1 = Table1[LONGITUDE]
VAR nextDate_ =
    CALCULATE (
        MIN ( Table1[DATA] ),
        ALL ( Table1 ),
        Table1[DATA] > EARLIER ( Table1[DATA] )
    )
VAR x2 =
    CALCULATE (
        DISTINCT ( Table1[LATITUDE] ),
        ALL ( Table1 ),
        Table1[DATA] = nextDate_
    )
VAR y2 =
    CALCULATE (
        DISTINCT ( Table1[LONGITUDE] ),
        ALL ( Table1 ),
        Table1[DATA] = nextDate_
    )
RETURN
    x2
// I'm returning x2 just as an example here. Use the code above in your calculated column to have (x1,y1) and (x2, y2) as vars and then calculate the distance as you are doing

Por favor, marque la pregunta resuelta cuando haya terminado y considere dar felicitaciones si las publicaciones son útiles.

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

Salud

SU18_powerbi_badge

Hola @AlB , estoy intentando con su solución, pero cada vez que intento crear una columna Power BI va en bucle con el mensaje "Trabajar en él" (para siempre). También traté de cortar el código para identificar dónde está el problema y se ve como cuando puse un segundo filtro en DAX "Función de cálculo" el problema sucede como se puede ver en la imagen abajo:

2020_05_29_20_08_44_Teste_de_calculo_de_distancia_Power_BI_Desktop.png

Hola @CarlosRios

¿Puedes compartir tu pbix para que pueda hacer un par de pruebas? Si no quieres hacerlo público puedes compartirlo por mensaje privado. Tienes que compartir la URL del archivo alojado en otro lugar: Dropbox, Onedrive... o simplemente cargue el archivo en un sitio como tinyupload.com (no se requiere registro).

En cualquier caso, intente lo siguiente:

Distance (to be completed) V2 =
VAR x1 = Table1[LATITUDE]
VAR y1 = Table1[LONGITUDE]
VAR nextDate_ =
    MINX (
        FILTER ( ALL ( Table1[DATA] ), Table1[DATA] > EARLIER ( Table1[DATA] ) ),
        Table1[DATA]
    )
VAR x2 =
    LOOKUPVALUE ( Table1[LATITUDE], Table1[Data], nextDate_ )
VAR y2 =
    LOOKUPVALUE ( Table1[LONGITUDE], Table1[Data], nextDate_ )
RETURN
    x2
// I'm returning x2 just as an example here. Use the code above in your calculated column to have (x1,y1) and (x2, y2) as vars and then calculate the distance as you are doing

Por favor, marque la pregunta resuelta cuando haya terminado y considere dar felicitaciones si las publicaciones son útiles.

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

Salud

SU18_powerbi_badge

Hola @CarlosRios

Dado que la mayoría de sus valores DATA son únicos y eso hace que encontrar la siguiente fecha en una tabla grande sea bastante exigente en términos de recursos, vamos a probar otro enfoque, en la consulta De energía:

En la consulta de la tabla principal, la que contiene DATA, LONGITUDE y LATITUDE, haga lo siguiente:

1. Ordene las filas por Operador y por DATOS, tanto ascendentes

2. Cree una columna personalizada con un índice, llámela "índice" por ejemplo

3. Cargue el resultado de la consulta en su modelo como de costumbre

Ahora la tabla tiene una nueva columna que puede usar para encontrar fácilmente (y computacionalmente de forma económica) los siguientes DATOS. Es el que tiene el valor de índice de la fila actual más uno, ya que los hemos ordenado por operador y en orden ascendente. Puede usarlo para extraer Lon y Lat del siguiente punto y luego calcular la distancia.

Las operaciones de Power Query son aceptables en términos de velocidad.

Por favor, marque la pregunta resuelta cuando haya terminado y considere dar felicitaciones si las publicaciones son útiles.

Póngase en contacto conmigo en privado para obtener asistencia con cualquier necesidad de BI, tutoría, etc.

Salud

SU18_powerbi_badge

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.