crear una medida que me busque una hora que le corresponda a un valor maximo de un rango de datos

Hola, quisiera me ayudara con un tema de power BI.

 

Tengo un archivo con varias tablas, una de ellas se llama Demanda, la cual esta compuesta por los campos hora, demanda y carga desconectada. Cree una nueva columna para que me diera solo la hora sin minutos ni segundos, la cual llame tiempo, después de eso hice un grupo de ese columna tiempo y le puso Pico, donde me dividia las horas (24 hr) por cierto por nombres

 

0 al 10, 15 al 17, 22 al 23 hrs corresponde a "Otros"

11 al 14 hrs corresponde a  "mañana"

18 al 21 hrs corresponde a "Noche"

Pero ahora necesito crear una medida calculada que me devuelva el valor máximo de la columna demanda pero solo en el rango donde dice mañana y también me de la hora (hora:minuto) donde cae ese máximo

 

Por ejemplo:

Hora    demanda       tiempo   Pico

10:59             900       10          Otro

11:00          1,000      11          mañana

11:01           1,100      11          mañana

11:02           1,050      11          mañana

.

14:50           1497.32     14      mañana

como resultado quiero una medida que me de: demanda máxima en rango mañana seria 1,497.32 y la hora que corresponde 14:50

solo he logrado hacer un medida para sacar la máxima demanda por todo donde aparece mañana      

Pico mañana =

CALCULATE(

MAXX(

    ALLEXCEPT(DEMANDA,DEMANDA[Pico]),

    CALCULATE(MAX(DEMANDA[demanda]))

), FILTER(DEMANDA,DEMANDA[Pico] = "Mañana")

)

 pero con eso solo logro el valor pero no la hora donde esta esa máxima demanda

Le agradecería su ayuda

Hola Mirian,

Me he preparado un escenario semejante al tuyo pero "de juguete". Parto de la siguiente tabla:

Tabla de datos

La he leído con Power BI y le he dado como nombre "data".

Mi primer impulso ha sido generar una tabla agregada que muestre, para cada período, el valor máximo de la demanda y la hora correspondiente (para poder extraer después esta información según convenga). Extraer el valor máximo de la demanda es fácil con la función SUMMARIZE:

Tabla1 = SUMMARIZE(
        data;
        data[Período];
        "Max"; MAX(data[Demanda])
    )

Valores máximos de demanda

Ahora bien ¿cómo extraer también la hora? Imagino que debe haber formas más simples, pero la que se me ha ocurrido (y funciona) es hacer un cross join de la tabla anterior con la tabla original, haciendo coincidir el valor de "Max". Esto lo podemos conseguir con la función GENERATE:

Tabla2 = 
    GENERATE(
        SUMMARIZE(
            data;
            data[Período];
            "Max"; MAX(data[Demanda])
        );
        SELECTCOLUMNS(
            data;
            "Hora"; data[Hora];
            "Max2"; data[Demanda]
        )
    )

Cross join entre la tabla agregada y los datos originales

Fíjate que en la columna "Max" solo aparecen los valores máximos obtenidos para cada período, mientras que en Max2 se muestran los valores de cada "Hora".

Ahora basta con filtrar esta tabla de forma que "Max" sea igual a "Max2" (es decir, nos quedamos con la fila correspondiente al valor máximo):

Tabla2 = 
FILTER(
    GENERATE(
        SUMMARIZE(
            data;
            data[Período];
            "Max"; MAX(data[Demanda])
        );
        SELECTCOLUMNS(
            data;
            "Hora"; data[Hora];
            "Max2"; data[Demanda]
        )
    );
    [Max] = [Max2]
)

Tabla filtrada

Habría que eliminar la columna Max2, claro.

No sé si este enfoque te sirve. Una vez obtenida esta tabla, podrías extraer sus valores para añadirlos en tus objetos gráficos. Ya me contarás...

Un saludo

Daniel Burrueco

Buenas noches, he revisado lo enviado, pero hay alguna manera de buscar la hora de la demanda maxima por cada periodo, usando una medida calculada.

La demanda máxima por periodo la saque con una medida calculada, sin utilizar tabla agregada y usando CALCULATE, puedo llegar a la hora en que cae esa demanda máxima por periodo con una medida calculada?

 

 

Buenas noches, he revisado lo enviado, pero hay alguna manera de buscar la hora de la demanda maxima por cada periodo, usando una medida calculada.

La demanda máxima por periodo la saque con una medida calculada, sin utilizar tabla agregada y usando CALCULATE, puedo llegar a la hora en que cae esa demanda máxima por periodo con una medida calculada?

Si quieres hacerlo con una medida, puedes buscar el valor máximo de la demanda y extraer el valor de la hora correspondiente a dicho valor:

Hora pico Mañana = 
    VAR
        MaxDemanda = 
            CALCULATE(
                MAX(data[Demanda]);
                data[Período] = "Mañana"
            )
    RETURN
        CALCULATE(
            MIN(data[Hora]);
            data[Demanda] = MaxDemanda
        )

Con el "MIN(data[Hora])" estamos extrayendo la primera hora para la que se da la coincidencia (podría ocurrir que hubiese más de una hora con el máximo).

Dime si este enfoque te va mejor

Un saludo

Daniel

Gracias lo voy a probar, cuando esté en casa. Tengo una pregunta, cuando yo trato de graficar lo siguiente 

Demanda
Hora demanda carga desconectada 
12:52 1100 0
12:53 1105 0
12:54 1101 25.00
12:55 1100 25.67
12:56 1108 25.67
12:57 1109 25.67
12:58 1111 24.70
12:58 1110 23
13:00 1121 0

En un gráfico de área apilada, cuando lo gráfico me sale la hora en eje x, pero en formato de 12 hrs (1:00 pm) y no 13:00. Lo datos viene de una tabla excel y allí está la hora como personaliza para que solo de hora y minuto. Cómo hago para que me salga en power bi la hora en formato de 24 hrs ?

 

Por cierto, no sé cómo no se me ocurrió ayer que también puedes extraer la hora buscada con la función LOOKUPVALUE:

https://www.interactivechaos.com/dax/function/lookupvalue

Hora pico Mañana = 
    VAR
        MaxDemanda = 
            CALCULATE(
                MAX(data[Demanda]);
                data[Período] = "Mañana"
            )
    RETURN
        LOOKUPVALUE(
            data[Hora];
            data[Demanda]; MaxDemanda
        )

Un saludo

Daniel

Buenos dias Daniel, lo trate de configurar en donde estan las tablas, alli seleccione la columna "Hora" y luego en el menu: Modelado le di en Tipo de datos, seleccione Hora y el formato: 13:30 (HH:mm), pero no me funciono.

La forma que usted me indica: " "Formato" que encuentras en la cinta superior de herramientas (pestaña "Herramientas de columnas" del nuevo ribbon)." no la encuentro en mi Power Bi Desktop

Probare crear una medida con FORMAT

´

 

Hola, lo hice de la siguiente manera:

Hora pico de la mañana = VAR MaxDemanda =  CALCULATE(

    MAXX(

    ALLEXCEPT(Demanda,Demanda[Pico]),

    CALCULATE(MAX(Demanda[Demanda]))

    ), FILTER(Demanda,Demanda[Pico] = "Mañana")

)

RETURN

    CALCULATE(MIN(Demanda[Hora]),

    Demanda[Demanda] = MaxDemanda

)

para la hora pico de la noche: solo cambie "Mañana" por "noche", lo cual ya tenia definido.

En ese caso debe ser por la configuración regional de tu ordenador. Lo que puedes hacer es asignar otra configuración a tu informe: Archivo > Opciones y configuración > Opciones > Configuración regional, y cambiar la opción del "idioma del modelo". Como ves en el fondo de la siguiente imagen, a mí me salen las horas de tu modelo de datos en el formato que deseas:

Configuración regional

 

Voy hacer esa prueba de cambiar la configuración del modelo. Tengo una duda respecto a una gráfica de área apilada que quiero pero cuando la hago me sale algo diferente que en el Excel.

tengo mi tabla 

Demanda
Hora demanda carga desconectada 
12:56 1200 0
12:57 1205 0
12:58 1208 34
12:59 1210 33
13:00 1210 30
13:01 1211 23
13:02 1206 10
13:03 1212 0
13:04 1210 0

Entonces: resulta que la gráfica en power bi, no ignora los “ceros” de carga desconectada y me pone la línea (de color rojo) en toda la gráfica no solo en donde aparece qué es desde las 12:58 a 13:02, Excel no hace eso hay línea roja solo solo donde hay carga desconectada y después está desaparece para el resto de la gráfica después solo está la línea de demanda, como cambio eso para que sea como la gráfica Excel y en su forma visual

Enviado por mirianmurillo el Lun, 10/02/2020 - 00:37