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 个或更少的单位收取 5 美元,购买 6 至 15 个单位收取 4 美元,购买 16 至 25 个单位收取 3 美元。如果您今天购买 3 件,明天购买 5 件,下周购买 10 件(总共 18 件),您将被收取每件 3 美元的费用。

谢谢

4

0 回答 0