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

必要な機能に対して間違った関数を使用しています。

メンバーMDX関数は、レベルのすべての値ではなく、MDXの制約を含むすべてのメンバーを取得します。レベルのすべての値が必要です。

このためには、ChildrenMDX関数を使用する必要があります。関連するレベルのすべての値(または子)を取ります。これを試して:

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

要約すると、レベルの柔軟な順序付けが必要です。これは可能ですか?並列階層があることは知っていますが、すべての可能な順序に対して階層を作成することはできません...

1つのレベルのみを含む階層を作成します。私は、それが彼らの階層にそれほど強力なものは何もないので、それが推奨され、柔軟性を失うことはないと思います。これにより、ドリルダウンやロールアップ(階層を使用)など、データキューブの誤った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 に答える