0

以下は、2 つのディメンションを持つ単純なスキーマと、メジャーを持つファクトです。

CREATE TABLE DimThingType (
    ThingTypeID          int        NOT NULL PRIMARY KEY,
    ThingTypeDescription varchar(8) NOT NULL
)

CREATE TABLE DimThing (
    ThingID   int        NOT NULL PRIMARY KEY,
    ThingName varchar(8) NOT NULL
)

CREATE FactFacts (
    FactID      int NOT NULL PRIMARY KEY,
    ThingID     int NOT NULL,
    ThingTypeID int NOT NULL,
    Turnips     int NOT NULL
)

MDX では、モノの種類ごとにカブの数を合計できます。

SELECT 
    NON EMPTY { [Measures].[Trunips] } ON COLUMNS, 
    NON EMPTY { ([ThingType].MEMBERS) } ON ROWS 
FROM [Things]

[Count of Facts]ここで、このメジャー グループで、プロパティをにSource.[Binding Type]設定して呼び出される新しいメジャーを作成すると、各タイプのモノの数をカウントすることもできます。[Row binding]AggregateFunctionCount

SELECT 
    NON EMPTY { [Measures].[Trunips], [Measures].[Count of Facts] } ON COLUMNS, 
    NON EMPTY { ([ThingType].MEMBERS) } ON ROWS 
FROM [Incidents] 

本当にこの新しいメジャーを追加する必要がありますか? 数値は、結果セルの値の計算に使用されたファクトの数なので、クエリで取得できませんか? (SQL でグループ化する場合は、単純に になりますCOUNT(*)。)

私は絶対に何かを働かせることはできません!

4

1 に答える 1

2

はい、新しいメジャーを追加する必要があります(ただし、それらも代替手段です)。キューブは、処理中に N 次元のセルにファクト値を格納します。そのため、クエリを実行している間は、保存されたものしか取得できません。SQL とは異なり、キューブは実行時に合計しません。そのセルの値を取得するだけです。

クエリがどのように解決されるかについては、続きをお読みください。

SELECT 
    NON EMPTY { [Measures].[Trunips] } ON COLUMNS, 
    NON EMPTY { ([ThingType].MEMBERS) } ON ROWS  FROM [Things]

MDX クエリは、N 次元プレーンのアドレスで解決されます。上記の場合は 2 次元なので、2 次元プレーンのアドレスです。

ここで、1 つの次元を無視し、2 番目の次元には可能なすべての値を使用しました。

したがって、アドレスは({d1:dn},{All},{Turnips}). 「グループ化されていない最初の次元のすべての値」、「グループ化された 2 番目の次元のすべての値」として読み取られ、そのセルは「カブの測定」を返します。このセルにはカウント メジャーがありません。

于 2020-02-28T15:23:25.150 に答える