MDX查询在SSAS表格模式多维数据集中返回重复行

时间:2018-05-24 12:41:04

标签: ssas mdx ssas-tabular mdx-query

我对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]

1 个答案:

答案 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.

(与[建议]维度不同的级别不会增加度量)

当你考虑它时,这是一个正确的行为,因为如果你添加这两个维度,你可能想知道“这个建议的措施和这些父细节的措施是什么?”确切的行在结果集中是正确的。这一切都取决于你想得到什么结果(你要求什么)。

名称的乘法取决于您的立方体设计。第一行是级别,第二行是成员。如果您创建一个层次结构,例如它将不会像那样。