1

昨日初めて立方体を作りました。私はまだこれに慣れていないので、用語の誤用を許してください。私のディメンションの 1 つMyDimension1、階層があるとしましょMyHierarchyう。Level1Level2

私は次のようなことができるようです:

SELECT 
{ [Measures].[Whatever] } ON 0,
{ ([MyDimension1].[Level1].[Level1], [MyDimension1].[Level2].[Level2]) } ON 1
FROM MyCube

これにより、私が望む結果が得られます。私の理解が正しければ、軸 1 を定義するセットには、2 つのコンポーネント (?) を持つタプルが含まれています。タプルの各コンポーネント (?) は異なる次元からのものであると想定されていることを読みましたが、上記のクエリで示されているように、同じ次元のコンポーネントを指定できるようです。ただし、階層を名前で指定して、サーバーにタプルを作成させたいと思います。次のようなものです:

SELECT 
{ [Measures].[Whatever] } ON 0,
{ AllLevelsToTuple([MyDimension1].[MyHierarchy]) } ON 1
FROM MyCube

しかし、私はこれを行う方法を理解できないようです。前もって感謝します!

編集(回答者から要求された私の例):

これは機能的には私が望むことを行いますが、私が望む構文ではありません:

SELECT [Measures].[Original] ON 0,
([Customer].[Customer].[Customer], [Customer].[Account ID].[Account ID]) ON 1

結果 (SSMS):

               Original
---------  --  --------
CustomerA  15    306.03
CustomerA  16    754.20
...
CustomerB  17    524.43
...
CustomerC  22    760.42
...

次元を展開すると、次のようになります。

- Customer
    - Hierarchy
        + Members
        + Customer
        + Account ID

私が何かをするとき(私は構文的に似たようなことをしたい):

SELECT [Measures].[Original] ON 0,
([Customer].[Hierarchy].Members) ON 1

次の結果が得られます。

            Original
----------  --------
All         17638.15
CustomerA    2624.76
15
16
...
CustomerB    3113.67
17            524.43
...
CustomerC    3427.01
22            760.42
...

基本的に2列ではなく3列にしたいです。

4

2 に答える 2

4

このMDXの穏やかな紹介を読むことをお勧めします。

タプルの各コンポーネント(?)は異なる次元からのものであると想定されていることを読みました

代わりに別の階層から。ASでは、レベルごとに、対応するフラットな階層もあると思います。したがって、次のように、2つの異なる階層のレベルにアクセスしているように見えます。

{ ([MyDimension1].[Level1].[Level1], [MyDimension1].[Level2].[Level2]) } ON 1

私はASのスペシャリストではありませんが、次のステートメントを推測します。

SELECT [Measures].[Original] ON 0,
([Customer].[Customer].[Customer], [Customer].[Account ID].[Account ID]) ON 1

実際には、2つの異なる階層のレベルメンバーの相互結合として解釈されます。()表記はタプル表記ではなく()演算子として解釈される可能性が高く、{}、{}はMDXの相互結合です。

SELECT [Measures].[Original] ON 0,
[Customer].[Customer].[Customer].members * [Customer].[Account ID].[Account ID].members ON 1

したがって、結果のメジャーの前にある2つの列。

基本的に2列ではなく3列にしたいです。

計算されたメジャーを使用する必要があります。何かのようなもの :

with 
MEMBER Measures.HN as [Customer].Currentmember.Hierarchy.Name 
MEMBER Measures.LN as [Customer].Currentmember.Level.Name 
MEMBER Measures.MN as [Customer].Currentmember.Name 

SELECT { Measures.HN, Measures.LN, Measures.MN, [Measures].[Original] } ON 0,
([Customer].[Hierarchy].Members) ON 1
于 2012-05-24T00:31:34.290 に答える
1

はい、さまざまなディメンションからタプルを作成できます。メンバーを括弧で囲み、コンマで区切って配置することで作成できます。

ただし、この場合、タプルは必要なく、単なるセットです。セットには、コンマで区切られ、中括弧 {} で囲まれた単一次元のメンバーが含まれます。

子孫関数を見てください。この関数を使用して、階層からセットを作成できます。

于 2012-05-23T17:04:44.600 に答える