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}
)
在 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}
)