【发布时间】:2017-02-14 23:29:40
【问题描述】:
我有一个包含类别的表格。类别可以是顶级且独立的,也可以是子类别:
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
...
请注意,该类别只有两个级别:根(Parent 为空)和叶(Parent 指向...父级。
我用它制作了一个立方体,MyFacts 作为我的 facs,MyCategory 作为一个维度。
让我们在类别表中统计一下:
(1, 'Red', NULL)
(2, 'Green', NULL)
(3, 'Tomato', 1)
(4, 'Strawbery, 1)
(5, 'Cucumber, 2)
这些类别将在 UI 中显示为多个列表框,但我希望它可以通过直接连接甚至多维数据集的 Web 控件进行访问。
问题:检查“红色”时,多维数据集应返回“红色”、“番茄”和“草莓”的值。有了视图就很容易了,
但是,
我可以经常控制和清理输入,但并非总是如此。我可以做一个简单的第二个表/视图来允许加入这些类别,但是,如果用户选中“红色”和“草莓”怎么办?突然间,源代码和 SQL 中有重复的项目。
那么有没有办法让成员值分层?我看过 MDX Descendants() 但它似乎并不适用。请注意,用例是我设置这个多维数据集,用户进入客户端 X,检查“红色”和“草莓”,并显示“红色”、“草莓”和“番茄”的结果——没有重复。
【问题讨论】:
-
您能否截取尺寸设计器,以便我们了解您是如何设置尺寸的?我感兴趣的是您是否使用了父子层次结构,或者您是否只有一个平面的类别列表。