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.
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 usuario | Iniciado sesión | Se ha cerrado la sesión |
Alan | 01/01/2020 01:40:03 | 01/01/2020 02:04:54 |
Fabiano | 01/01/2020 01:54:08 | 01/01/2020 02:03:23 |
Anderson | 01/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
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
Salud
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.
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
Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City
Check out the April 2024 Power BI update to learn about new features.
User | Count |
---|---|
2 | |
2 | |
2 | |
2 | |
1 |