0

私は非常に単純な立方体を持っています。

これは、データ ソースのスキーマです。

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 ドルが請求されます。

ありがとう

4

0 に答える 0