首页 > 解决方案 > 按维度切片的 HR 员工计数 - 渐变维度

问题描述

我需要计算人数,同时保持度量可按连接到事实表的任何维度进行切片。鉴于我的表和模型的性质,我需要做的是对渐变维度类型 2 进行时间点计算。

我设法使用函数 KEEPFITLES 使它工作,但我需要一个更具可扩展性的函数,它不需要我列出我想要切片的所有维度。

这是我的带有示例数据的 PowerBI 文件:https ://gofile.io/d/smS2Hr

这是我的模型的简化草图(图像):https ://ibb.co/fQYpsdx

模型

背景:

我计算的第一个衡量标准是期初的员工人数(员工 SoP)。如果最终用户在 PowerBI 中选择 2020 年 1 月的整个月份,则期间的开始是 2020 年 1 月 1 日。因此,2020 年 1 月的“员工 SoP”将给出 2020 年 1 月 1 日的员工人数。

下面的公式计算员工 SoP 的正确值:

Employees SoP =
VAR MinDate = MIN ( 'Date'[Date]) //Mininum date selected by end-user in PowerBI
VAR Result =
CALCULATE (
DISTINCTCOUNT(Fact[EmployeeId]),
FILTER(ALL('Fact'), 'Fact'[EffectiveStartDate] <= MinDate
&& IF(ISBLANK('Fact'[EffectiveEndDate]), date(2050,1,1), Fact[EffectiveEndDate]) > MinDate
))
RETURN
Result

上述公式的问题在于,由于使用了 ALL 函数,该度量不能按任何维度进行切片,即薪酬等级和就业状况(相同的数字会重复)。

结果:

员工SoP

因此,我使用 KEEPFILTERS 创建了另一个度量,它运行良好。

Employees SoP KEEPFITLERS =
VAR MinDate = MIN ( 'Date'[Date]) //Mininum date selected by end-user in PowerBI
VAR Result =
CALCULATE (
DISTINCTCOUNT(Fact[EmployeeId]),
FILTER(ALL('Fact'), 'Fact'[EffectiveStartDate] <= MinDate
&& IF(ISBLANK('Fact'[EffectiveEndDate]), date(2050,1,1), Fact[EffectiveEndDate]) > MinDate
), KEEPFILTERS(PayClass), KEEPFILTERS(EmploymentStatus))
RETURN
Result

员工 SoP KEEPFILTERS

这个公式的问题是我必须在 DAX 公式中列出我想要切片的所有维度(例如,PayClass、EmploymentStatus)。这不是非常可扩展的。

我对 REMOVEFILTERS 进行了一些试验,但目前看来它不适用于 DirectQuery,因此它无法解决我的生产问题。关联:

https://docs.microsoft.com/en-us/dax/removefilters-function-dax

问题:如何使用 KEEPFILTERS 的替代方法编写此度量,我不必列出我想要切片的每个维度?

谢谢!

标签: powerbidax

解决方案


我只是设法解决了我的问题。我将这两种关系都与 Dates 表“不活动”。有了它,我可以删除 DAX 公式中的“ALL”函数,现在它不仅可以计算正确的值,而且还可以很好地切片。我将不得不使用 USERELATIONSHIP 函数来计算更复杂的度量,但在大多数情况下,这个简单的解决方案就像一个魅力。

在此处输入图像描述

Employees SoP without ALL = 
VAR MinDate = MIN ( 'Date'[Date]) //Mininum date selected by end-user in PowerBI
VAR Result =
CALCULATE (
DISTINCTCOUNT(Fact[EmployeeId]),
FILTER('Fact', 'Fact'[EffectiveStartDate] <= MinDate
            && IF(ISBLANK('Fact'[EffectiveEndDate]), date(2050,1,1), Fact[EffectiveEndDate]) > MinDate
            ))
RETURN
Result

推荐阅读