Куб SSAS - вычисляемый элемент из измерения - PullRequest
0 голосов
/ 13 мая 2011

У меня очень простой куб.

Это схема источника данных:

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, но, кажется, работает нормально, если я выберу [DimRateCard]. [RateCardID] на COLUMNS. Я пришел из базы данных отношений. Это то, чего я пытаюсь достичь в 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 долларов за единицу за покупку 5 единиц или меньше, 4 доллара за покупку от 6 до 15 единиц, 3 доллара за покупку от 16 до 25 единиц. Если вы покупаете 3 единицы сегодня, 5 завтра и 10 неделю спустя (всего 18), с вас будет взиматься 3 доллара США за единицу.

Спасибо

...