私は非常に単純な立方体を持っています。
これは、データ ソースのスキーマです。
FactSales:
- DimRateCardID int (FK to DimRateCard)
- SalesDate int (FK to DimDateID)
- Sales int
DimRateCard
- DimRateCardID int
- Product Name string
- Customer Name string
- Rate money
DimDate:
- DimDateID int
- Year int
- Month int
- Day int
- IsHoliday bit
キューブ構造は
Measure Groups:
- FactSales.Sales
- DimRateCard.Rate
Dimensions:
1) DimRateCard:
- Attribute - DimRateCardID, Product Name, Customer Name,
- Hierarchy - (Customer Name, Product Name)
2) DimDate:
- Attribute - DimDateID, Year, Month, Day, IsHoliday
- Hierarchy - (Year, Month, Day)
次のように総コストを計算する計算メンバーを作成しようとしています
WITH
MEMBER Measures.[Total Cost]
AS [DimRateCard].[Rate].membervalue * [FactSales].[Sales]
FORMAT_STRING = "Currency",
SELECT {
Measures.Cost,
[DimRateCard.Rate]
} ON COLUMNS,
[DimRateCard].[Customer].Members
ON ROWS
FROM [DW Snow Flake]
Cost 列は #error を返しますが、COLUMNS で [DimRateCard].[RateCardID] を選択すると問題なく動作するようです。私は関係データベースのバックグラウンドから来ました。これは、私が SQL で達成しようとしているものです。
SELECT drc.CustomerName, drc.ProductName, SUM(f.Sales * drc.Rate)
FROM FactSales f
INNER JOIN DimRateCard drc ON drc.DimRateCardID = f.DimRateCardID
GROUP BY drc.CustomerName, drc.ProductName
誰かがこの問題に光を当てることができますか?
率を FactSales ではなくディメンションに入れている理由を明確にするためです。レートが決定される方法は、(マーケティングによって決定される) 日付範囲で行われた販売数によって決まります。たとえば、5 単位以下の購入には 1 単位あたり 5 ドル、6 から 15 単位の購入には 4 単位、16 から 25 単位の購入には 3 ドルを請求するとします。今日 3 単位、明日 5 単位、翌週 10 単位 (合計 18 単位) を購入した場合、1 単位あたり 3 ドルが請求されます。
ありがとう