[英]Power BI combine results from two SQL-Server tables
在使用 Power BI 几个月后,我们(用户组)遇到了一个我们不太清楚的问题。
我们使用带有远程 SQL-Server 数据源的 Power-BI,我们通过直接查询访问数据源。
假设我们有 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”作为相关列查询该关系以收集分配给“问题”条目的所有“WorkItem”。
为了能够计算每个“WorkItem”的聚合“工作时间”,我们使用一个新的/计算的表和以下 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 的许多连接/合并功能将不可用,因此连接表并不是一个真正的选择(我们认为)。
对于新的计算列,您需要以下代码。
访问此处以了解更多有关RELATED的信息。
ResolutionAndWorkTime = Issues[ResolutionTime] + RELATED(SumWork[All work per item])
根据“mkRabbani”(参见其他答案)提供的输入,我们调查了为什么“RELATED”没有按预期显示 function。 问题起源于对数据库的访问。 正如之前所怀疑的那样,一旦数据库访问切换到“导入”而不是“直接查询”,function 就会提供预期的结果。
作为解决方法,我们现在使用传统数据库视图连接 SQL 服务器内的数据。 当然这只适用于数据库由数据分析团队控制的场景。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.