如何让DAX计算的活跃/离职员工数支持部门切片器筛选?
问题原因
你写的DAX里用了ALL(employee),这个函数会清除所有针对Employees表的筛选上下文——包括来自dim_Department的部门筛选,所以部门切片器根本起不了作用。
修改后的DAX表达式
活跃员工计数
CountOfActive = VAR _selectedDate = MAX('Calendar'[Date]) RETURN CALCULATE( COUNTROWS('employee'), 'employee'[Hire Date] <= _selectedDate, OR('employee'[Termination Date] >= _selectedDate, ISBLANK('employee'[Termination Date])) )
离职员工计数
CountOfTerminated = VAR _selectedDate = MAX('Calendar'[Date]) RETURN CALCULATE( COUNTROWS('employee'), 'employee'[Hire Date] <= _selectedDate, 'employee'[Termination Date] < _selectedDate )
关键修改点
- 去掉了
ALL(employee),让外部筛选(比如部门切片器)能正常作用于Employees表 - 删掉了多余的
VALUE(_selectedDate),因为MAX('Calendar'[Date])返回的就是日期类型,直接和员工表的日期列比较即可
额外说明
如果之后需要排除某些筛选(比如只想保留部门筛选,移除其他无关筛选),可以用ALLEXCEPT(employee, dim_Department[DepartmentID])替代原来的ALL(employee),这样既能保留部门筛选,又能清除其他对Employees表的筛选。
内容的提问来源于stack exchange,提问作者emil
相关产品推荐
相关产品推荐

