在 Power BI 中并排显示半相关表中的度量

时间:2021-04-09 03:08:39

标签: powerbi dax data-modeling

我在 Power BI 中有一个数据模型,其中包括以下表格

  • 员工(维度;员工 ID/姓名)
  • 作业(维度;包含有关作业的详细信息,包括作业 ID)
  • 员工历史记录 - 包含员工在工作中的每一天的记录(快照表);
  • 工作预算历史记录 - 包含对工作进行预算的每一天的记录(快照表)
  • 日历表

表格的建模如下(简化版): Data Model

在 Power BI 中,我试图制作一个简化的表视图,其中包含基于预算历史记录以及数据集中最近一天的员工历史记录的度量(简单计数行/日历表的不同计数)

但是,如果我尝试将这两种措施都放在桌面上,那么尝试这样做会给我以下结果。基本上,它似乎是在每个表之间进行交叉连接,并将关联与他们没有的工作相匹配(这在添加预算时发生)。

enter image description here

当然,如果我只执行一项单一的措施,一切都会完美无缺。我相当肯定这是因为在这种关系中“员工”和“预算历史”之间没有真正的联系,所以它只是在没有任何上下文的情况下加入了日期中的所有内容。

我尝试了多种方法,例如与 userrelationship() 建立非活动关系、使用视觉级别过滤器等,但我不确定在这种情况下最好的选择是什么。 (如果可能,我试图避免双向关系)

理想情况下,此信息应显示在这一天,Joe 以总裁身份出席,Sally 以操作员身份出席,而经理职位没有人,但所有三个人都已预算。

任何建议表示赞赏。我附上了一个简化的模型 pbix 文件以供参考。

PBIX File

1 个答案:

答案 0 :(得分:1)

这是一个复杂的问题,原因有很多。我能够生成这份报告:

enter image description here

通过从表中删除字段“名称”并将其替换为度量:

Employee Name = 
CALCULATE(
    SELECTEDVALUE(Employees[Name]),
    CROSSFILTER(Employees[Employee_ID], Employee_History[Employee_ID], BOTH)
)

它看起来与您想要的报告完全一样,但如果您有其他要求,则需要确保这种方法适合您。

如果可以接受,请简要说明:

  • 问题的根本原因是缺少员工与预算的关系。当您将 Name 作为过滤器放入表中时,它不会传播到预算表并导致笛卡尔积。
  • 从表中删除姓名消除了过滤器传播的需要,但您将看不到员工姓名。我通过使用度量提取员工姓名解决了这个问题,其中所需的传播由 CROSSFILTER 函数强制执行(本质上,它就像一个临时双向关系,仅在您需要它时,因此它不会对模型的其余部分产生负面影响)。< /li>