按层次过滤维度

时间:2016-10-06 09:24:39

标签: ssas cube olap-cube

我有一个包含类别的表。类别可以是顶级和独立的,也可以是子类别:

MyCategory
  MyCategoryId Int  -- PK
  Name Character Varying 50  -- descriptive "Name" of the category
  ...
  MyParentCategoryId Int NULL  -- Self-referencing PK, NULL means root level
  ...

它由大量MyFacts表引用:

MyFacts
  ...
  MyCategoryId Int  -- Foreign Key
  ...

请注意,该类别只有两个级别:root(Parent为null)和leaf(Parent指向...父级。

我用它制作一个立方体,MyFacts作为我的facs,MyCategory作为维度。

让我们在类别表中使用此数据:

  (1, 'Red', NULL)
  (2, 'Green', NULL)
  (3, 'Tomato', 1)
  (4, 'Strawbery, 1)
  (5, 'Cucumber, 2)

类别将在UI中显示为多个列表框,但我希望通过直接连接甚至是多维数据集的Web控件来访问它们。

问题:当检查" Red"时,多维数据集应返回" Red"的值,对于#34; Tomato"而对于" Strawberry"。这很容易看到,

,但

我可以经常控制和消毒输入,但并非总是如此。我可以做一个简单的第二个表/视图来允许这些类别加入,但是,如果用户检查"红色"和"草莓?突然之间,源和SQL中都有重复的项目。

那么有没有办法建立成员价值的层次结构?我看过MDX Descendants(),但它似乎并不适用。请注意,用例是我设置此多维数据集,用户进入客户端X,检查"红色" "草莓"和"红","草莓"和#34;番茄"出现 - 没有重复。

1 个答案:

答案 0 :(得分:0)

如果使用&符,则指定ID 如果未使用&符,则指定成员名称

e.g.
[Model and Manufacturer].[Manufacturer].&[1002]
[Model and Manufacturer].[Manufacturer].[Apple]