结束表的 Power BI 聚合

时间:2020-12-21 13:59:34

标签: sql-server database powerbi report data-modeling

我是 Power BI 和数据库管理的新手,我想根据我的最后两个问题(Database modelling Bridge TablePower BI Report Bridge Table)为自己澄清 Power BI 的工作原理。我每年都有一个包含公司特定信息的 main_table,它连接到包含一些定量信息(例如销售数据)的 end_table。这些表被建模为 1:N 关系,因此我不必两次存储相同的值,我认为这在数据建模中是一件好事。

我想在组列 value 上聚合 end tableYear 列。我很惊讶,根据我的理解,Power BI 在我期望对连接表中的组变量进行聚合时总结了结束表中的 value

我的基本例子就是基于这个数据和数据模型(需要手动调整关系):

main_table<-data.frame(id=1:20, FK_id=sample(1:2,20, replace=TRUE), Jahre=2016:2020)         
main_table<-rbind(main_table,data.frame(id=21:25, FK_id=sample(2:3,5, replace=TRUE), Jahre=2015) )
end_table<-data.frame(id=1:3, value=c(10,20,30))

Data model

包括所有列在内的数据的前 5 行如下所示:

raw data

如果我取出所有行特定信息并总结 value。它将始终显示每个 Year 中结束表的总和,即 60。

Sum one directional

进行双向连接无济于事。它只是总结了每年 end_table 的现有值。如果我使用 Related value = RELATED(end_table[value])

将值列添加到主表,我会得到正确的结果

Bi directional and correct table

我只是想知道是否有另一种方法可以在 Power BI 中对这种 1:N 关系进行建模或分析。这种情况经常出现,总是在主表中使用 Related() 添加列感觉有点乏味,而只需单击两列并期望聚合基于分组变量会很直观。 无论如何,问这个问题和我的另外两个问题对我帮助很大。

1 个答案:

答案 0 :(得分:1)

这是一个有点奇怪的建模情况(尽管它并不少见)。一般而言,build star schemas 在维度表与事实表的 1:N 关系中很方便。例如

Star Schema

在此设置中,维度表中的项目(例如年份或客户)用于视觉对象中的列和行,并且度量通常聚合事实表中的列(例如销售额)。


你的例子颠倒了这一点。您正在尝试使用年份作为维度对结束表中的一列求和。因此,它不会自动按照您的预期运行。

为了得到您想要的结果,其中 Year 被视为一个维度,您需要编写一个对 Year 求和的度量,就好像它是一个维度一样。由于 main_table 本质上是 Year 的维度表(每年一个唯一行),您可以编写

SumValue = SUMX ( main_table, RELATED ( end_table[value] ) )