【问题标题】:Power BI combine results from two SQL-Server tablesPower BI 合并来自两个 SQL-Server 表的结果
【发布时间】:2021-02-08 23:41:15
【问题描述】:

在使用 Power BI 几个月后,我们(用户组)遇到了一个我们并不清楚的问题。

我们将 Power-BI 与远程 SQL-Server 数据源一起使用,我们通过直接查询访问数据源。

假设我们有 2 个表格,如下所示-

Table name: Issue
Column: 
    ResolutionTime(Date/Time) 
    IssueID(Unique Numbers)

Table Name: WorkItem
Column: 
    start (Date/Time)
    end (Date/Time)
    IssueID (Unique Numbers, Foreign Key to "Issue" table)

表 WorkItem 还包含一个计算列“WorkTime”,它使用如下 DAX 表达式-

WorkTime = WorkItem[end] - WorkItem[start]

这两个表是通过 Power-Bi 配置的,具有双向 1:n 关系,可以查询该关系以收集分配给“Issue”条目的所有“WorkItem”,使用“IssueID”作为相关列.

为了能够计算每个“工作项”的汇总“工作时间”,我们使用带有以下 DAX 表达式的新/计算表来汇总单个“问题”投入的总时间:

SumWork =
SUMMARIZE(
  WorkItem, WorkItem[IssueID], "All work per item", SUM(WorkItem[WorkTime])
)

上表计算特定问题的总投入工作时间,根据“IssueID”外键对结果进行分组/汇总。这个新的计算表也被配置为与“问题”表有关系,这次是“1:1”关系,使用 IssueID 作为相关列。

现在要计算解决问题的时间 + 解决问题的时间应该汇总在“问题”内的计算列中,但这不起作用:

ResolutionAndWorkTime = Issue[ResolutionTime] + SumWork["All work per item"]

但是上面的 DAX 表达式无法编译,因为它总是报告它返回“多个结果”,因此不是一个单一的结果。但这令人惊讶,因为这两个表(“Issue”和“SumWork”以“1:1”的关系相互关联)。

表格:

Issues
IssueID     ResolutionTime     ResolutionAndWorkTime
1           03:20:20            ???
2           01:20:20            ???
3           00:20:20            ???

WorkItem
IssueID     start                  end                   WorkTime
1           1-2-2020 3:20:20       1-2-2020 3:25:20      00:05:00
1           2-2-2020 6:20:20       2-2-2020 7:20:20      01:00:00
3           1-3-2020 3:20:20       1-3-2020 3:29:20      00:09:00

有什么想法吗?数据类型?表定义?表关系?我们检查了其他 Stackoverflow 问题/答案,但到目前为止没有检索到好的想法。

请注意,如果使用直接查询,则 Power BI 的许多联接/合并功能不可用,因此联接表并不是一个真正的选择(我们认为)。

【问题讨论】:

    标签: sql-server powerbi


    【解决方案1】:

    您的新计算列需要以下代码。

    访问HERE了解更多相关

    ResolutionAndWorkTime = Issues[ResolutionTime] + RELATED(SumWork[All work per item])
    

    【讨论】:

    • 您好 R_R,感谢您的帮助。我们现在尝试了 RELATED 函数,但收到以下错误:“列 'SumWork[All work per item]' 要么不存在,要么与当前上下文中可用的任何表都没有关系。”。现在我们再次检查了表之间的所有关系,但它们如上所述(我们甚至对其进行了一些修改,但没有运气)。这可能与什么有关?
    • 您是否在 DAX 或视觉级别或页面级别或报告级别应用了任何过滤器?某些过滤器可能会强制覆盖表之间的关系。
    • 我们尽量不使用常规过滤,atm 我们只使用切片器视觉来缩小视觉/页面级别的结果。删除我们报告中的所有过滤器/切片器进行测试是否有意义?
    • 是的,出于测试目的 - 请尝试删除所有过滤器。
    • 我们尝试删除所有过滤器,即使现在已经设置了一个“干净”的全新报告,它仍然从上面显示相同的错误(..doesnt have a relationship..)。我觉得这个问题与数据库/结构有关。 SQL 服务器端是否必须遵循任何约束/机制才能使其正常工作?
    【解决方案2】:

    根据“mkRabbani”提供的输入(请参阅其他答案),我们调查了“RELATED”为何无法按预期运行。问题源于对数据库的访问。如前所述,一旦数据库访问切换为“导入”而不是“直接查询”,该函数就会提供预期的结果。

    作为一种解决方法,我们现在使用传统的数据库视图连接 SQL 服务器内的数据。当然,这只适用于数据库由数据分析团队控制的场景。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-22
      • 2023-03-09
      • 2022-11-04
      • 2023-03-24
      • 2018-01-17
      • 2022-11-11
      相关资源
      最近更新 更多