在PowerBI中计算最高同时在线人数及其时间段

在分析用户行为数据时,"最高同时在线人数"是一个关键指标,它能帮助我们了解系统负载、用户活跃度峰值等重要信息。本篇文章将介绍如何在PowerBI中计算最高同时在线人数及其对应的时间段。

问题描述

为衡量产品的影响力,现在需要计算出最高同时在线人数,以及对应的时间段,请自行建模完成计算。具体问题如下图所示:

本案例的初始数据如下:

登录信息表:

idlogin_timelogout_time
10012021/6/14 12:12:002021/6/14 18:12:00
10032021/6/14 13:12:002021/6/14 16:12:00
10042021/6/14 13:15:002021/6/14 20:12:00
10022021/6/14 15:12:002021/6/14 16:12:00
10052021/6/14 15:18:002021/6/14 20:12:00
10012021/6/14 20:12:002021/6/14 23:12:00
10062021/6/14 21:12:002021/6/14 23:15:00
10072021/6/14 22:12:002021/6/14 23:10:00

若需其它辅助表等,可自行创建并建模。

解题要点

1、本案例的解题思路为:先将用户的各个登录时间段转化为以秒为单位的整数列表,然后按秒进行分组,统计出现次数,然后再找到出现次数最多的秒,最后再对出现次数最多的秒进行范围合并,以及转化为时间即可。

2、对出现次数最多的秒进行范围合并时,其中的分组逻辑可参考下表的分组字段:

SecondIndexGroup (Second-Index)
1000019999
1000129999
1000239999
1000349999
10008510003
10009610003
10010710003
10020810012
10021910012

解决方案

首先,数据模型如下图所示:

然后,创建如下度量值:

MaxLoginTimeSolt = 
VAR BaseNum = 86400*10
VAR Benchmark = MINX(ALL('登录信息表'),'登录信息表'[login_time])*BaseNum
VAR TimeToSecond = 
	GENERATE(
		ALL('登录信息表'),
		VAR login_TimeStamp = '登录信息表'[login_time]*BaseNum - Benchmark
		VAR logout_TimeStamp = '登录信息表'[logout_time]*BaseNum - Benchmark
		RETURN
		GENERATESERIES(login_TimeStamp,logout_TimeStamp,1)
	)
VAR UserNumOfSecond = GROUPBY(TimeToSecond,[value],"num",SUMX(CURRENTGROUP(),1))
VAR MaxNum = MAXX(UserNumOfSecond,[num])
VAR MaxNumOfSecond = FILTER(UserNumOfSecond,[num]=MaxNum)
VAR GrpOfSecond = ADDCOLUMNS(MaxNumOfSecond,"grp",[value]-RANKX(MaxNumOfSecond,[value],,1))
VAR Period = GROUPBY(GrpOfSecond,[grp],[num],"login",MINX(CURRENTGROUP(),[value]),"logout",MAXX(CURRENTGROUP(),[value]))
VAR SecondToTime = 
	SELECTCOLUMNS(
		Period,
		"login_time",([login]+Benchmark)/BaseNum+TIME(0,0,0),
		"logout_time",([logout]+Benchmark)/BaseNum+TIME(0,0,0),
		"num_login",[num]
	)
RETURN
CONCATENATEX(
    SecondToTime,
    "Login Time: "&FORMAT([login_time],"yyyy/mm/dd hh:nn")&"
    Logout Time: "&FORMAT([logout_time],"yyyy/mm/dd hh:nn")&"
    MaxLoginNum: "&[num_login],
    UNICHAR(10)
)

然后创建一个卡片图,再将上面的度量值放入卡片图的值字段即可,结果如下图所示:

其他方案

以下解决方案精选自技术交流群中的其他小伙伴,希望他们的独到见解和解决思路能够为大家提供更多启发,内容已征得同意,特此分享出来供大家参考和借鉴。

1、WT:

2、冬佬:

3、一棵松:

4、XSY:

总结

以上方法仅供参考,若有更优雅的解决方案,欢迎留言讨论,或者加入我们的技术交流群,一起享受这种思维碰撞的快乐吧!

PBI/DAX技术交流群(QQ):344353627

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

PowerBI | 夕枫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值