我正在构建一个模型以允许报告两个单独的数据集,在本例中,我们将说学生数据集和员工数据集。
数据集非常独立,两者之间唯一真正的联系是日期,因此从模型的角度来看,有一个学生星型模式和一个员工星型模式。
显示的数据是快照类型数据,回答如下问题:
- 对于选定的日期,显示所有在职员工
- 对于选定的日期,显示所有注册的学生
这意味着,当选择单个日期时,模型会查找所选日期在就业开始和结束日期内的所有员工,并查找所选日期在注册开始和结束日期内的所有学生。
这意味着我必须做出决定,如何使用单个日期维度从每个模式返回正确的数据。创建关系不起作用,因为表格中的关系不允许“之间”类型查询,因此我有一个不相关的日期维度,并且每个模型的 Dax 找到适用的行。
问题是它不是性能最好的。对于大约 50k 行,添加一个度量可能需要 5-10 秒。
我问是否有更好的方法来编写查询,或者更改模型以仍然让我执行“之间”样式查询但提供更好的性能。
以下是 dax 查询的示例,用于返回在特定日期注册的所有学生。
感谢您的任何建议。
All Enrolled Students:=IF (
HASONEVALUE ( 'Date'[Date] ),
CALCULATE (
DISTINCTCOUNT ( 'Students'[StudentID] ),
FILTER (
'Students',
'Students'[StudentStartDateID] <= MIN ( 'Date'[DateID] )
&& 'Students'[StudentEndDateID] >= MAX ( 'Date'[DateID] )
)
),
BLANK ())