0

我目前正在建立一个双解决方案,并且在定义多维数据集及其层次结构时遇到了困难。

架构定义的一部分如下所示:

<Dimension foreignKey="user" highCardinality="false" name="user">
  <Hierarchy name="user" hasAll="true" allMemberName="all" primaryKey="ID">
    <Table name="user" />
    <Level name="timezone" column="timezone"/>
    <Level name="locale" column="locale"/>
    <Level name="gender" column="gender"/>
    </Level>
  </Hierarchy>
</Dimension>

现在我想直接访问性别级别。

SELECT
{[user].[gender].Members} ON COLUMNS,
{[Measures].[Fact Count]} ON ROWS
FROM [cube]

结果是[user].[zone3].[de_DE].[male] = 10, [user].[zone1].[en_US].[male] = 30这样的。我想要每个性别的总数:[user].[male] = 20[user].[female] = 30

总之,我需要灵活的级别排序。这可能吗?我知道有并行的层次结构,但我不能为每个可能的订单创建一个......

我还尝试将所有属性放在属性而不是级别中,但我无法计算出简单的男性/女性用户总数。

它必须非常简单,因为整个东西将成为动态双工具的一部分......

4

1 回答 1

1

您正在使用错误的功能来满足您的需求。

Member MDX函数获取MDX上包含约束的所有成员,而不是一个Level的所有值。你想要关卡的所有值。

为此,您必须使用 Children MDX 功能。它取关联级别的所有值(或子级)。尝试这个:

SELECT {[user].[gender].children} ON COLUMNS,
  {[Measures].[Fact Count]} ON ROWS
FROM [cube]

总之,我需要灵活的级别排序。这可能吗?我知道有并行的层次结构,但我不能为每个可能的订单创建一个......

创建仅包含一个级别的层次结构。我看到他们的层次结构真的没有什么如此强大,这是值得推荐的,并且不会失去灵活性。这可以防止数据立方体的错误 OLAP 操作,例如向下钻取和汇总(使用层次结构)。得到这样的东西:

<Dimension foreignKey="user" highCardinality="false" name="user">
   <Hierarchy name="TIMEZONE" hasAll="true" allMemberName="all" primaryKey="ID">
     <Table name="user" />
     <Level name="timezone" column="timezone"/>
   </Hierarchy>
   <Hierarchy name="LOCALE" hasAll="true" allMemberName="all" primaryKey="ID">
     <Table name="user" />
     <Level name="locale" column="locale"/>
   </Hierarchy>
   <Hierarchy name="GENDER" hasAll="true" allMemberName="all" primaryKey="ID">
     <Table name="user" />
     <Level name="gender" column="gender"/>
   </Hierarchy>
</Dimension>

希望这有帮助。

于 2011-12-14T23:03:05.720 回答