Power BI合并两个SQL-Server表的结果

时间:2020-10-26 17:11:11

标签: sql-server powerbi

使用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]

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

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

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

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

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

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的许多联接/合并功能将不可用,因此联接表并不是真正的选择(我们认为)。

2 个答案:

答案 0 :(得分:1)

对于新的“计算所得”列,您需要以下代码。

访问HERE,以了解有关相关的更多信息。

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

答案 1 :(得分:0)

基于“ mkRabbani”提供的输入(请参阅其他答案),我们调查了“ RELATED”为什么未按预期运行的原因。问题出在对数据库的访问上。如前所述,一旦将数据库访问权限切换为“导入”而不是“直接查询”,该功能就可以达到预期的结果。

作为一种解决方法,我们现在使用传统的数据库视图在SQL Server内部联接数据。当然,这仅适用于数据库处于数据分析团队控制之下的情况。