我对SSAS多维数据集和术语(成员,层次结构等)和MDX查询都是全新的,但我已经开始学习这些东西,所以如果我的问题非常明确,请道歉。
SELECT NON EMPTY { } ON COLUMNS, {
[Suggestions].[Parent_id].[Parent_id] *--.ALLMEMBERS *
[Suggestions].[id].[id] * --.ALLMEMBERS *
[Suggestions].[Sugg - #].[Sugg - #] *-- .ALLMEMBERS *
[Suggestions].[Sugg - Assigned].[Sugg - Assigned] * --.ALLMEMBERS *
[Suggestions].[Sugg - Assigned to].[Sugg - Assigned to]* --.ALLMEMBERS *
[Suggestions].[Sugg - Status].[Sugg - Status] *--.ALLMEMBERS
--[Parent_Details].[Unit_Name].[Unit_Name] --.ALLMEMBERS
}
DIMENSION PROPERTIES MEMBER_CAPTION,
MEMBER_UNIQUE_NAME ON ROWS
FROM ( SELECT ( { [Suggestions].[Sugg - Assigned to].&[UNIT] } ) ON COLUMNS
FROM ( SELECT ( STRTOSET('SG123', CONSTRAINED) ) ON COLUMNS
FROM ( SELECT ( { [Suggestions].[Sugg - Status].&[Pending Inputt] } ) ON COLUMNS
FROM [BOI_Tracker-Stats])))
CELL PROPERTIES VALUE
我有上面执行的MDX查询。我在SSMS中使用MDX查询设计器工具生成了查询,并且只需手动进行简单修改。
在查询中,如果我注释掉行[Parent_Details].[Unit_Name].[Unit_Name] --.ALLMEMBERS
,我会得到正确的行数。
主要问题。
如果我取消注释,以便我返回 Unit_Name 列,我的行就会重复。原来100个正确的行现在因为数千个行全部具有重复值。任何人都知道我应该注意的是造成这种情况。看起来正在应用错误的连接。
我想了解的其他事项。
1。查询设计器以
格式生成查询 [Suggestions].[Parent_id].[Parent_id].ALLMEMBERS *
。如果我发表评论.ALLMEMBERS *
,那么查询只是[Suggestions].[Parent_id].[Parent_id]
而不是.ALLMEMBERS *
,则结果是相同的。那么.ALLMEMBERS *
2. 我还注意到我想要选择的列重复两次,如
Suggestions].[Parent_id].[Parent_id]
,为什么会这样?,为什么不能将其生成为Suggestions].[Parent_id]
答案 0 :(得分:0)
如果您从不同的维度中选择,那么您基本上会将结果相乘。如果你认为这是正确的行为。在您的情况下,您有 [建议] 和 [Parent_Details] 。这些是不同的维度。在您的查询中,您希望结果具有以下两者:
对于[Suggestion]的每个成员,获取[Parent Details]的所有成员并将其添加到结果中。所以结果集变为:
[Suggestion-1][Parent_Details-1][Measures...]
[Suggestion-1][Parent_Details-2][Measures...]
[Suggestion-2][Parent_Details-1][Measures...]
[Suggestion-2][Parent_Details-2][Measures...]
[Suggestion-3][Parent_Details-1][Measures...]
etc.
(与[建议]维度不同的级别不会增加度量)
当你考虑它时,这是一个正确的行为,因为如果你添加这两个维度,你可能想知道“这个建议的措施和这些父细节的措施是什么?”确切的行在结果集中是正确的。这一切都取决于你想得到什么结果(你要求什么)。
名称的乘法取决于您的立方体设计。第一行是级别,第二行是成员。如果您创建一个层次结构,例如它将不会像那样。