在olap cube中“加入”事实和维度

时间:2013-12-30 22:57:04

标签: join mdx olap dimension

我必须在olap cube中计算/显示团队低谷年数

我的团队事实是这样构建的:

TeamId DateFrom DateTo (FactTeams)
1       2012     2015
2       2012     2015
3       2012     2015
4       2015     2018
1       2018     2019

多维数据集必须能够回答,例如,2012年有多少球队活跃(3支球队)

我准备了另一个辅助事实表,其中包含团队ID和日期的所有组合。

TeamId  DateRange (FactTeamDates)

1       2012
1       2013
1       2014
1       2015
1       2018
1       2019
2       2012
2       2013
2       2014
2       2015
...and so on ...

我创建了两个事实,一个是FactTeams,另一个是FactTeamDates。我还有标准日期维度。这是我的数据源视图:

https://www.dropbox.com/s/5d2gzumxv5fejdq/teams.jpg

FactTeams.TeamId链接到FactTeamDates.TeamId,FactTeamDates.DateRange链接到DimDates.DateKey。

我测量了“团队编号”,这是TeamId列上FactCams的独特数量。 我所需的MDX查询输出用于测量COLUMNS上的团队编号和行数年份:

           Team Number  
Year 2012  3
Year 2013  3
Year 2014  3
Year 2015  4

我的问题:如何组织我的事实并在我的多维数据集中设置维度用法以获得所需的输出?

产生所需输出的SQL查询:

   SELECT 
       d.CalendarYear
      ,COUNT(DISTINCT TeamId) 
  FROM  FactTeams zt 
  INNER JOIN FactTeamsDates td ON zt.TeamId = td.TeamId
  INNER JOIN DimDates d ON d.DateKey = td.DateRange
  GROUP BY d.CalendarYear ORDER BY 1  

请注意,我知道我可以基于上面的sql查询(使用连接)创建数据视图,然后有一个连接的事实表,但我希望在我的多维数据集维度和事实之间有某种连接 - 要有连接仅在多维数据集(olap)级别,而不是在sql(数据库或多维数据集数据视图)中

提前致谢

1 个答案:

答案 0 :(得分:0)

您可以创建一个独特的计数度量,这应该可以解决您的问题