我有一个非常简单的立方体。
这是数据源的架构:
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 个或更少的单位收取 5 美元,购买 6 至 15 个单位收取 4 美元,购买 16 至 25 个单位收取 3 美元。如果您今天购买 3 件,明天购买 5 件,下周购买 10 件(总共 18 件),您将被收取每件 3 美元的费用。
谢谢