什么是WHERE&在MDX查询中的FROM?

时间:2014-02-20 11:59:52

标签: tsql ssas mdx

WHERE&从T-SQL角度看。

请参阅数据透视表MDX的副本。我在数据透视表中有[客户状态],[查询创建日期。日期层次结构]和[用户团队层次结构]的过滤器。

我不明白为什么有些过滤器会转到WHERE而其他过滤器转到FROM。

SELECT
{ [Measures].[Unique Cust Ref Distinct Count], [Measures].[Number of Distinct Customers] } ON COLUMNS,
{ [Request].[Cust Type].children } ON ROWS
FROM (
  SELECT (
  { [Request].[Request Created By Team].&[CINS]
    ,[Request].[Request Created By Team].&[CIST]
    ,[Request].[Request Created By Team].&[DCISS]
    , [Request].[Request Created By Team].&[WRT] } ) ON COLUMNS
  FROM [CRM Reporting]
)
WHERE ( [Customer].[Customer Status].&[Active], [Request Creation Date].[Date Hierarchy].[Year].&[2014] ) 

1 个答案:

答案 0 :(得分:3)

MDX中WHERE和subselect之间的主要区别是:

  • WHERE更改切片器轴,这意味着您不能将任何层次结构放在任何其他轴上,例如列和行。
  • Subselect不会更改CurrentMember设置。这意味着如果在WHERE条件中使用multiselect,则更有可能遇到麻烦。另一方面,如果在子选择中使用多选,则无法轻松引用所选成员,您可以使用EXISTS之类的内容。
  • 子选择更改所选层次结构的所有成员(“VisualTotals”)的值 - 至少在默认设置中。但是,通常情况下,不能看到WHERE条件对此的不同行为,因为All成员 - 因为它是层次结构的一部分 - 不能放在任何其他轴上。但是,它可以在计算成员中引用。
  • 子选择可以嵌套,WHERE则不能。
  • 表现明智,有时一个,有时另一个更好。你将不得不进行测试。