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

Uso máximo basado en el inicio de sesión y el cierre de sesión de los usuarios

Hola

Dado que las respuestas que recibí de mi último post me ayudan tanto, decidí dar al foro otra oportunidad.

Por lo tanto, este es un ejemplo de mi tabla:

nombre de usuarioIniciado sesiónSe ha cerrado la sesión
Alan01/01/2020 01:40:0301/01/2020 02:04:54
Fabiano01/01/2020 01:54:0801/01/2020 02:03:23
Anderson01/01/2020 02:12:26

01/01/2020 02:37:53

Necesito crear un informe de uso máximo de uno de nuestros sistemas (basado en los distintos usuarios y estas dos entradas).

Inicialmente estaba pensando en analizarlo por hora (como de 12:00 a 13:00, mi pico de usuarios registrados era X, de 13:00 a 14:00 era Y). Usando estos resultados sería capaz de determinar picos por mes, año y este tipo de cosas.

Si sólo se basa en una de estas dos entradas, sólo iniciar sesión o simplemente cerrar sesión, yo sabría cómo hacerlo, pero no basado en ambas.

PD: Qué usuario en sí no importa, sólo estoy interesado en los picos (número de usuarios registrados).

De todos modos, gracias de antemano sólo por leer esto. Cualquier ayuda sería bienvenida, incluso sólo consejos.

saludos

3 REPLIES 3
Smauro
Solution Sage
Solution Sage

De acuerdo, hace mucho que no juego con Dax, pero aquí va.

@FCatao, 3 pasos:

1) Tabla de fecha y hora de trabajo desde enero1 hasta hoy:

let
    Begin = #datetime(2020, 1, 1, 0, 0, 0),
    NowT = let d = DateTime.LocalNow() in #datetime(Date.Year(d), Date.Month(d), Date.Day(d), Time.Hour(d), Time.Minute(d), 0),
    Dur = Duration.TotalMinutes( NowT - Begin ),
    Dates = List.DateTimes(Begin, Dur,  #duration(0, 0, 1, 0)),
    #"Converted to Table" = Table.FromList(Dates, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
    #"Renamed Columns" = Table.RenameColumns(#"Converted to Table",{{"Column1", "DateTime"}}),
    #"Changed Type" = Table.TransformColumnTypes(#"Renamed Columns",{{"DateTime", type datetime}}),
    #"Inserted Start of Hour" = Table.AddColumn(#"Changed Type", "Start of Hour", each Time.StartOfHour([DateTime]), type datetime),
    #"Inserted Start of Day" = Table.AddColumn(#"Inserted Start of Hour", "Start of Day", each Date.StartOfDay([Start of Hour]), type date),
    #"Inserted Start of Week" = Table.AddColumn(#"Inserted Start of Day", "Start of Week", each Date.StartOfWeek([Start of Day], 1), type date),
    #"Inserted Start of Month" = Table.AddColumn(#"Inserted Start of Week", "Start of Month", each Date.StartOfMonth([Start of Day]), type date)
in
    #"Inserted Start of Month"


2) Obtener los tiempos de registro para el inicio de los minutos:

    #"Calculated Start of Minute" = Table.TransformColumns(PreviousStep,{{"Logged in", (current) => #datetime(Date.Year(current), Date.Month(current), Date.Day(current), Time.Hour(current), Time.Minute(current), 0), type datetime}, {"Logged out", (current) => #datetime(Date.Year(current), Date.Month(current), Date.Day(current), Time.Hour(current), Time.Minute(current), 0), type datetime}})
in
    #"Calculated Start of Minute"

donde PreviousStep es el nombre del paso anterior.

3) DAX Medida para calcular dinámicamente el pico de los usuarios en cualquier duración de tiempo dada:

MaxUserLogged = 
MAXX (
    SUMMARIZE (
        GENERATE (
            SUMMARIZE (
                'usrlog',
                'usrlog'[Logged in],
                'usrlog'[Logged out],
                "Rows", COUNTROWS ( 'usrlog' )
            ),
            CALCULATETABLE (
                VALUES ( 'DateHour'[DateTime] ),
                FILTER (
                    'DateHour',
                    [DateTime] >= 'usrlog'[Logged in]
                        && 'DateHour'[DateTime] < 'usrlog'[Logged out]
                )
            )
        ),
        ''[DateTime],
        "R2", COUNTROWS ( 'usrlog' )
    ),
    [R2]
)

Suponiendo aquí que la tabla DateTime se denomina 'DateHour' y 'DateHour'[DateTime] es su clave. También que su tabla de registro se llama 'usrlog'.


Y debería funcionar.

Datos ficticios:

Username Logged in Logged out
Alan 01/01/2020 01:40:00 01/01/2020 02:04:00
Fabiano 01/01/2020 01:54:00 01/01/2020 02:03:00
Anderson 01/01/2020 02:03:00 01/01/2020 02:37:00
Fakeq 01/01/2020 02:00:00 01/01/2020 02:37:00
Qefak 01/01/2020 02:00:00 01/01/2020 02:37:00
Anderson 01/01/2020 04:03:00 01/01/2020 04:37:00

image.png

Salud




Feel free to connect with me:
LinkedIn

V-pazhen-msft
Community Support
Community Support

@FCatao

No está seguro de qué salida exacta desea, pero puede establecer las condiciones de inicio de sesión y cierre de sesión.

Para comparar con el tiempo, debe cambiar el tipo de columna de Fecha/Hora a Hora en la cinta de opciones superior.

Column = 
IF([Logged in]>TIME(12,00,00)&&[Logged out]<=TIME(13,00,00),"X",
IF([Logged in]>TIME(13,00,00)&&[Logged out]<=TIME(14,00,00),"Y"))

A continuación, puede contar X o Y para obtener el número de usuarios dentro de cada intervalo de tiempo.

Paul Zheng _ Equipo de apoyo de la comunidad
Si este post ayuda, entonces considera Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

Anonymous
Not applicable

Hola

Sí, entiendo la lógica, pero ¿esta sesión de inicio de sesión contable es superior a 1h (por ejemplo: Alan inició sesión a las 13:36 y se inició sesión a las 15:45)?

Aunque, esto me da una idea. Estoy pensando en usar "Milestones" collumns usando esta lógica y comprobar si el usuario está registrado durante estos períodos, como usar un querry y comprobar quién está en línea en ese momento, necesitaré un collumn para cada una de estas comprobaciones, pero está bien.

Si tienes alguna sugerencia, porque esto va a ser feo. Jajaja

Gracias

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.