使用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的许多联接/合并功能将不可用,因此联接表并不是真正的选择(我们认为)。
答案 0 :(得分:1)
对于新的“计算所得”列,您需要以下代码。
访问HERE,以了解有关相关的更多信息。
ResolutionAndWorkTime = Issues[ResolutionTime] + RELATED(SumWork[All work per item])
答案 1 :(得分:0)
基于“ mkRabbani”提供的输入(请参阅其他答案),我们调查了“ RELATED”为什么未按预期运行的原因。问题出在对数据库的访问上。如前所述,一旦将数据库访问权限切换为“导入”而不是“直接查询”,该功能就可以达到预期的结果。
作为一种解决方法,我们现在使用传统的数据库视图在SQL Server内部联接数据。当然,这仅适用于数据库处于数据分析团队控制之下的情况。