我是 Power BI 和数据库管理的新手,我想根据我的最后两个问题(Database modelling Bridge Table 、Power BI Report Bridge Table)为自己澄清 Power BI 的工作原理。我每年都有一个包含公司特定信息的 main_table
,它连接到包含一些定量信息(例如销售数据)的 end_table
。这些表被建模为 1:N
关系,因此我不必两次存储相同的值,我认为这在数据建模中是一件好事。
我想在组列 value
上聚合 end table
的 Year
列。我很惊讶,根据我的理解,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))
包括所有列在内的数据的前 5 行如下所示:
如果我取出所有行特定信息并总结 value
。它将始终显示每个 Year
中结束表的总和,即 60。
进行双向连接无济于事。它只是总结了每年 end_table
的现有值。如果我使用 Related value = RELATED(end_table[value])
我只是想知道是否有另一种方法可以在 Power BI 中对这种 1:N
关系进行建模或分析。这种情况经常出现,总是在主表中使用 Related()
添加列感觉有点乏味,而只需单击两列并期望聚合基于分组变量会很直观。
无论如何,问这个问题和我的另外两个问题对我帮助很大。
答案 0 :(得分:1)
这是一个有点奇怪的建模情况(尽管它并不少见)。一般而言,build star schemas 在维度表与事实表的 1:N 关系中很方便。例如
在此设置中,维度表中的项目(例如年份或客户)用于视觉对象中的列和行,并且度量通常聚合事实表中的列(例如销售额)。
你的例子颠倒了这一点。您正在尝试使用年份作为维度对结束表中的一列求和。因此,它不会自动按照您的预期运行。
为了得到您想要的结果,其中 Year
被视为一个维度,您需要编写一个对 Year
求和的度量,就好像它是一个维度一样。由于 main_table
本质上是 Year
的维度表(每年一个唯一行),您可以编写
SumValue = SUMX ( main_table, RELATED ( end_table[value] ) )