【问题标题】:Showing Side by Side Measures from Semi-Related Tables in Power BI在 Power BI 中并排显示半相关表中的度量值
【发布时间】:2021-07-04 22:43:58
【问题描述】:

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

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

表格是这样建模的(简化版):

在 Power BI 中,我正在尝试创建一个简化的表视图,其中包含基于数据集中最近一天的预算历史和员工历史的度量(简单计数行/日历表的不同计数)

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

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

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

理想情况下,此信息应在该日期显示 Joe 担任总裁,Sally 担任操作员,而经理职位没有人,但所有三个人都已列入预算。

感谢任何建议。我附上了一个简化的 pbix 模型文件供参考。

PBIX File

【问题讨论】:

    标签: powerbi dax data-modeling


    【解决方案1】:

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

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

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

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

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

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

    【讨论】:

    • 我会试一试,即使在我更复杂的模型上,真正使用的员工表中唯一的信息是名称,所以我认为这可能适用于我的情况。
    猜你喜欢
    • 1970-01-01
    • 2020-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多