Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Earn the coveted Fabric Analytics Engineer certification. 100% off your exam for a limited time only!

Reply
Syndicate_Admin
Administrator
Administrator

No se puede utilizar SUMX para sumar sobre una dimensión

Hola

He estado luchando con el último paso de un cálculo y estoy un poco desesperado sobre cómo encontrar una solución.
El objetivo de esta medida es determinar el perfil de presentación de los pasajeros a un aeropuerto, siguiendo una distribución normal ajustada a la hora de salida programada y al número de pasajeros (pax) para cada vuelo.

Tengo una tabla llamada KIX_AODB_data, la tabla de hechos para los vuelos, con [L board Pax], [Unique ID] y [Time.unfiltered] respectivamente el número pax, ID y hora programada de salida para cada vuelo.

Creé una tabla Time_flight que es solo el tiempo por incremento de 1 minuto para un día completo.
Time_flight y KIX_AODB_data están vinculados con una relación de muchos a uno en time.unfiltered y time_5min. (contenedores de 5 minutos para Time_flight tabla).

La medida funciona bien, hasta que quiero agregar en vuelo UniqueID y parece que soy incapaz de lograr eso ...
¿Alguna sugerencia?

NormDist_to_flight = 
VAR _mean_time =
    TIME ( 0, mean[mean Value], 0 )
VAR _dev_time =
    TIME ( 0, 'stddev'[stddev Value], 0 )
VAR _time1min =
    // Time we consider from row context
    MIN ( Time_flight[time_1min.] )
VAR _paxnum = 
    // Lookup for pax number of each flight, regardless of TimeTable filter
    CALCULATE (
        LOOKUPVALUE (
            KIX_AODB_data[L Board Pax],
            KIX_AODB_data[UniqueID], SELECTEDVALUE ( KIX_AODB_data[UniqueID] )
        ),
        REMOVEFILTERS ( Time_flight )
    )
VAR _scheduled =
    // Lookup for a scheduled time for each filght, regardless of TimeTable filter
    CALCULATE (
        LOOKUPVALUE (
            KIX_AODB_data[Time.unfiltered],
            KIX_AODB_data[UniqueID], SELECTEDVALUE ( KIX_AODB_data[UniqueID] )
        ),
        REMOVEFILTERS ( Time_flight )
    )
VAR _offset =
        _scheduled - _time1min
VAR _normdist_totime =
    // cumulative probability function adjusted to sheduled time of departure
    1
        - NORM.DIST ( _offset, _mean_time, _dev_time, TRUE () )
VAR _result_by_flight =
    _paxnum * _normdist_totime
    
RETURN
    CALCULATE(
    SUMX(
        CALCULATETABLE(
            VALUES(KIX_AODB_data[UniqueID]),
            REMOVEFILTERS(Time_flight)
        ),
        _result_by_flight
    )
    )


Si muestro esto con [UniqueID] como leyenda, funciona como se esperaba.
Si no pongo UniqueID como leyenda (X es time_1min. e Y es la medida), no muestra nada.

3 REPLIES 3
Syndicate_Admin
Administrator
Administrator

@AntoineGlacet

No he mirado en detalle, pero lo primero que destaca es que está utilizando una variable (_result_by_flight) como segundo argumento para el SUMX. No es que las variables en DAX sean inmutables, es decir, sus valores NO cambian en absoluto después de ser creados. Eso significa que el contexto de la fila en su SUMX NO tendrá ningún efecto y el resultado del SUMX será el valor precalculado de _result_by_flight veces el número de filas de la tabla en el argumento de SUMX.

Supongo que eso no es lo que quieres

SU18_powerbi_badge

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

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

Hola @AlB ,
Creo que es claramente una cuestión de evaluación variable y contexto.
Cuando copio y pego toda la definición de la variable en lugar de su nombre de variable, tengo el mismo resultado...
¿Cómo puedo asegurarme de que la variable se evalúe en el contexto adecuado?

@AntoineGlacet
Tiene varias variables en ese fragmento de código y variables que a su vez usan otras variables. Elimine las variables por ahora. Utilice el código explícito o una medida. Asegúrese de que cada pieza se evalúe donde debe estar. Una vez que funcione, puede volver a, cuidadosamente, simplificar con variables.

SU18_powerbi_badge

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

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

Helpful resources

Announcements
April AMA free

Microsoft Fabric AMA Livestream

Join us Tuesday, April 09, 9:00 – 10:00 AM PST for a live, expert-led Q&A session on all things Microsoft Fabric!

March Fabric Community Update

Fabric Community Update - March 2024

Find out what's new and trending in the Fabric Community.

Top Solution Authors