MDX 计算多对多维度对

MDX count many-to-many dimension pairs

在 SQL 服务器分析服务中,我创建了一个多维数据集来分析体育比赛。 事实 table 包含有关游戏的信息,例如 Date、HomeTeamId、AwayTeamId、HomeTeamResult、AwayTeamResult 等。

对于两个团队(HomeTeamId 和 AwayTeamId),我创建了一个多对多关系,如下所述: https://docs.microsoft.com/en-us/sql/analysis-services/lesson-5-3-defining-a-many-to-many-relationship

目前我可以用这个MDX查询来查询球队打过的比赛:

SELECT  { [Measures].[Game Count] } ON 0,
{[Team].[Team Id].[Team Id]} ON 1
FROM [Apps Swiss Ice Hockey]

这 returns 结果是:

+---------+------------+
| Team Id | Game Count |
+---------+------------+
|    1    |     27     |
|    2    |     21     |
|    3    |     34     |
+---------+------------+

到目前为止一切顺利。 现在我想创建一个查询来分析所有可能的团队配对玩了多少场比赛。结果应如下所示:

+-----------+-----------+------------+
| Team 1 Id | Team 2 Id | Game Count |
+-----------+-----------+------------+
|     1     |     2     |      7     |
|     1     |     3     |     20     |
|     2     |     3     |     14     |
+-----------+-----------+------------+

我尝试通过像这样交叉连接团队维度来获得此结果:

SELECT  { [Measures].[Game Count] } ON 0,
{[Team].[Team Id].[Team Id]} * {[Team].[Team Id].[Team Id]} ON 1
FROM [Apps Swiss Ice Hockey]

但这会导致错误:

The Team Id hierarchy is used more than once in the Crossjoin function.

是否可以通过 MDX 查询实现所描述的结果?

您不能交叉连接相同的层次结构,您只能创建相同团队维度的另一个层次结构(与现有层次结构相同),然后您才能使用交叉连接功能。

Crossjoin(
    {[Team Dimension].[Team Hierarchy 1].members}
     ,{[Team Dimension].[Team Hierarchy 2].members}
    )