SSAS多维数据集 - 从维度计算成员

时间:2011-05-13 16:14:09

标签: ssas mdx olap cube

我有一个非常简单的立方体。

这是数据源的架构:

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美元。

由于

0 个答案:

没有答案