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
Anonymous
Not applicable

Máximo de una medida calculada

Hola

Tengo la siguiente situación: Tengo dos tablas con información sobre activos. Las dos tablas se vinculan a través de dos tablas: [Tabla de fechas] y una tabla que contiene información sobre cada activo [Información de activos]

[Tabla 1]: contiene información sobre todas las transacciones reservadas con activos

ID de activo, fecha, volumen de negocios de la transacción

[Tabla 2]: Contiene información sobre el tiempo de actividad de cada activo en un día determinado

ID de activo, fecha, horas de actividad

Lo que he hecho: Calculé una medida

Volumen de negocios por tiempo de actividad : SUMA (volumen de transacción) / SUM (horas de tiempo de actividad)

Lo que necesito: Una medida para cada activo que calcula el volumen de negocios por tiempo de actividad de ese activo en relación con el volumen de negocios (máximo) más alto por tiempo de actividad de cualquier activo de la base de datos. Así que en términos fáciles:

% del volumen de negocios más alto por tiempo de actividad: volumen de negocios por tiempo de actividad/volumen de negocios más alto por tiempo de actividad

La salida que necesito se vería así:

Segmentación de fechas

Tabla con estas columnas

ID de activo, volumen de negocios por tiempo de actividad, % del volumen de negocios más alto por tiempo de actividad

He probado la solución de aquí sugerir por @Zubair_Muhammad , pero eso no produce lo que necesito.

¿Quién puede ayudarme?

6 REPLIES 6
Anonymous
Not applicable

Hola @Lukas_Held

Creo que puede utilizar la metodología a continuación:

Asumo que tiene una medida llamada [Turnover / uptime].

La medida siguiente se puede utilizar como el denominador para su medida [% de volumen de negocios/tiempo de actividad máximo]

Max Turnover/uptime = 
VAR __turnoverUptime = [Turnover / uptime]

RETURN
IF(
    ISBLANK( __turnoverUptime);

    -- If the asset wasn't running the given day then it returns blank
    BLANK();

    -- Calculating the max turnover/uptime for all selected assets for all selected dates
    CALCULATE(
        MAXX(
            SUMMARIZE(
                Table1;
                AssetInformation[AssetID];
                'Calendar'[Date];
                "Value"; [Turnover / uptime]
            );
            [Value]
        );
        ALLSELECTED( AssetInformation);
        ALLSELECTED( 'Calendar')
    )
)

Si la medida anterior funciona según lo solicitado, márquela como la solución aceptada.

Kudos es apreciado.

Br

Anonymous
Not applicable

Hola @Nskv

esto se ve muy bien y lógico. Cerca de lo que intenté antes. Desafortunadamente produce 'Infinity' como un valor. ¿Alguna idea?

Necesito filtrar ciertos activos que podrían producir valores extraños, ¿esta medida responderá a filtrar ciertas asset_ids ?

Anonymous
Not applicable

Hola @Lukas_Held

Si realiza una segmentación de datos o un filtro en la página con los activos que desea incluir, se adapta.

Si utiliza la función DIVIDE(), puede insertar manualmente un valor para 'errores', es decir, en blanco o 0. DIVIDE(<numerator>, <denominator> [,<alternateresult>])

https://docs.microsoft.com/en-us/dax/divide-function-dax

Br

¡salud! Me he dado cuenta de lo que sucede. Devuelve el volumen de negocios más alto por disponibilidad en un día determinado en el período de tiempo seleccionado. Supongo que lo que tendría más sentido para mí es la mayor rotación promedio por disponibilidad durante todo el período seleted.

¿Cómo tendría que ajustar el formulario para lograrlo? Lo siento, estoy un poco fuera de mi profundidad aquí.

Arrh bien. Creo que puedes resolverlo en dos pasos:

Avg per asset for all selected dates = 
IF(
    ISBLANK( [Turnover / uptime]);
    BLANK();
    CALCULATE(
        AVERAGEX(
            SUMMARIZE(
                Table1;
                AssetInformation[AssetID];
                "Value"; [Turnover / uptime]
            ); 
            [Value]
        );
        ALLSELECTED( 'Calendar')
    )
)

Y luego ajuste su medida actual:

Max Turnover/uptime = 
VAR __turnoverUptime = [Turnover / uptime]

RETURN
IF(
    ISBLANK( __turnoverUptime);

    -- If the asset wasn't running the given day then it returns blank
    BLANK();

    -- Calculating the max turnover/uptime for all selected assets for all selected dates
    CALCULATE(
        MAXX(
            SUMMARIZE(
                Table1;
                AssetInformation[AssetID];
                'Calendar'[Date];
                "Value"; [Avg per asset for all selected dates]
            );
            [Value]
        );
        ALLSELECTED( AssetInformation);
        ALLSELECTED( 'Calendar')
    )
)

Espero que esto ayude

amitchandak
Super User
Super User

@Lukas_Held

referencia si esto puede ayudar

https://community.powerbi.com/t5/Desktop/Percentage-of-subtotal/td-p/95390

https://community.powerbi.com/t5/Desktop/SUM-of-AVERAGE/td-p/197013

Creo que en el nivel de fecha que necesita tomar max (maxx) de su fórmula

O sobre todo el total

Averagex(summarize(table,table[date],"_1",[Turnover per Uptime], "_2",maxx(all(Table),[Turnover per Uptime])),divide([_1],[_2]))

Agregar bys de grupo según la necesidad

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.