我正在使用 Power BI 数据模型,其中包含具有以下结构的代理表:
AgentID(每个代理的唯一标识符)
技能(每个特工最多可以拥有15种不同的技能)
登录(客服人员登录的日期时间)
注销(客服人员注销的日期时间)
对于我的分析,我需要计算每个时间间隔内在线的唯一代理数量,并能够按技能和日期时间进行过滤(最多分钟)。鉴于客服人员可以拥有多种技能和多条登录/注销记录,复杂性就会增加。
面临的挑战是有效地对这些数据进行建模或创建一个 DAX 度量,该度量可以提供特定时间间隔内在线的唯一代理的计数,考虑到将每个代理在线时间的每一秒的数据扩展到一个新行将导致难以管理的大数据集。
由于数据集的大小,我无法为每个技能的每个代理每分钟在线创建一个包含一行的大型表。
是否有人面临类似的挑战,并且可以建议可以有效处理此问题的 Power BI 数据建模方法或 DAX 解决方案?
在尝试解决此问题时,我创建了一个 DAX 度量,旨在计算每个时间间隔内的唯一 AgentID,同时考虑其登录和注销时间。我希望该措施能够计算在任何给定分钟内可用的座席数量,从而使我能够按技能过滤结果。
这是我尝试过的 DAX 指标:
dax ActiveAgents = CALCULATE( DISTINCTCOUNT('Agents'[AgentID]), FILTER( ALL('Calendar'[DateTime]), 'Calendar'[DateTime] >= MIN('Agents'[Login]) && 'Calendar'[DateTime] <= MAX('Agents'[Logout]) ) )
我希望这项措施能够提供一天中每一分钟登录的所有技能的所有唯一代理的计数。然而,结果并不如预期。该指标仅计算了登录时间与日历分钟数匹配的客服人员,但没有考虑到他们注销之前的时间跨度。
我需要一个解决方案,可以考虑客服人员在登录期间的持续存在,并根据应用的技能过滤器调整唯一计数。
尝试换个方式...
ActiveAgents = CALCULATE(
DISTINCTCOUNT('Agents'[AgentID]),
FILTER(
ALL('Agents'),
'Agents'[Login]) >= MIN('Calendar'[DateTime]) &&
'Agents'[Logout]) <= MAX('Calendar'[DateTime])
)
)