У меня очень простой куб.
Это схема источника данных:
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 доллара США за единицу.
Спасибо