繁体   English   中英

跨多个事实过滤表格模型维

[英]Filtering Tabular Model Dimension Across Multiple Facts

我正在教育环境中构建表格模型,并且在围绕多个基本表筛选查找表时遇到了一些困难。

我已经阅读了有关桥接表的信息,我相信我可以使用它,但是我有十几个事实表,因此,对应的桥接表的数量似乎很难管理。 我可以改为通过DAX处理过滤吗? 我一直在努力学习更多DAX,但到目前为止还很陌生。

这是我要完成的工作的示例场景:为简化起见,我有一个名为Student的维度,其中每个学生都包含一行。 我有一个称为纪律的事实,其中包含每个学生的纪律事件记录(每个事件1个,并非所有学生都会有纪律事件)。 另外,我有一个名为“评估”的事实表,其中包含测试的评估记录(每个学生完成的每个评估1个)。 有些学生不会参加此评估,因此他们将没有相应的分数。

例如,当我在数据透视表中对数据进行建模以分析学科和评估之间的相关性时,我引入了一种称为“学科事件计数”(学科事件记录数)和“评估平均分数”(评估分数的平均值)的度量。 我只想查看同时具有这两个值的学生的列表,但我得到如下信息:

学生姓名--------学科事件计数--------评估平均分

学生A -------------------(空白)-------------------------- ---- 85.7

学生B ---------------------- 3 ------------------------- - - - (空白)

学生C ---------------------- 2 ------------------------- -------- 88.7

在这种情况下,我希望我的结果集只包括学生C,因为他们两个都有值。 我还测试了在应用程序层(Excel)上处理过滤的能力,方法是过滤掉每一列中的空白,但是对于实际的数据(可能具有嵌套值和大量的数据),它似乎运行不佳。

感谢您的任何反馈!

因此,最好在应用程序层进行过滤。

否则,您将必须编写度量,以便每个度量都检查所有其他度量的值以确定是否显示。

您共享的示例的示例如下:

ConditionalDiscipline:=
SWITCH(
    TRUE()
    ,ISBLANK( [Assessment Average Score] )
    ,BLANK()
    ,[Discipline Incident Count]
)

SWITCH()只是嵌套IF()的语法糖。

现在,仅当您的数据透视表包含[学科事件计数]和[评估平均得分]时,此度量才有效。 如果您从新的事实表中添加其他度量,则数据透视表行上该学生的值的存在将对该行的显示没有影响。

您需要一种新的措施:

ConditionalDiscipline - version 2:=
SWITCH(
    TRUE()
    ,ISBLANK( [Assessment Average Score] )
    ,BLANK()
    ,ISBLANK( [Your new measure] )
    ,BLANK()
    ,[Discipline Incident Count]
)

现在,此版本2仅在[评估平均得分]和[您的新指标]都为空白时才有效。 如果您在发布的样本中使用此版本2 而不使用 [您的新度量],那么对于没有[您的新度量]条目的学生,它仍将返回空白。

因此,对于将要使用的其他度量的每种可能组合,您将需要一个版本。

无法在DAX中定义“当前正在同一上下文中评估的所有其他所有度量的集合”,这是您真正需要检验是否存在空白的条件。

您可以不使用SWITCH(),而只需在IF()中的单个测试中将所有其他度量值相乘,因为乘以空白将产生空白。 这对于您需要编写的度量的组合数量没有任何作用。 关于如何定义测试,您有很多选择,但是最终所有这些选择都需要相同数量的荒谬测量方法。

我还要解决您的问题中的另一点。 您提到使用桥表。 仅当在维表之间实现多对多关系时才需要桥。 您没有实现这个。 您有一个具有统一维度的事实。 一致的维度实质上是您的事实之间的桥梁,每个事实都基于StudentKey与其他事实存在多对多关系。 任何桥接表都是多余的。

长话短说,不是。 DAX中的自省功能不足以完成您想要的操作。 在应用程序层进行处理。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM