4

我有一个目标多维数据集事实表,目标是每月级别(1 月 = 300,2 月 = 450,3 月 = 350 等)

在使用月份作为连接时,它与我的多维数据集中的日期维度相连接,但是维度粒度处于日级别。

我想要做的是创建一个计算,以便将每月目标平均分配给当月的日子,因此 1 月的每一天都有 300/31 Feb 450/28 等的目标。

然后,我希望能够将此计算的度量用作我的目标,并将其用作每日/每月/每季度/年度目标。

我认为这应该可以通过 MDX 语句(或者可能使用一些计算量度的一些语句)来实现,但我对它并不熟悉。

那么这种方法会起作用吗? mdx 会是什么样子?

谢谢

4

1 回答 1

0

如果您有能力对源 OLTP/staging 数据库进行更改,那么如果您需要在该级别报告,最好将 Targets 事实表的粒度更改为每天。如果您的 OLTP 数据库中有一个日期维度表,您可以使用视图来执行此操作,方法是将您的每月事实表连接到月份属性上的日期维度,然后将目标值平均分配到该月的几天中。

如果您使用的是 SQL Server,并且您的 OLTP 架构如下所示:

CREATE TABLE dimDate (
    Date Date,
    YearMonth Integer,
    ...
)

CREATE TABLE factMonthlyTarget (
   YearMonth Integer,
   Value Integer,
   ...
)

您的新事实视图将类似于以下内容:

CREATE VIEW factDailyTarget AS
   SELECT 
      dimDate.Date,
      factMonthlyTarget.Value / Months.DaysPerMonth AS Value
   FROM
      factMonthlyTarget, 
      dimDate, 
      (
         SELECT YearMonth, COUNT(*) AS DaysPerMonth
         FROM dimDate
         GROUP BY YearMonth
      ) Months
   WHERE factMonthlyTarget.YearMonth = Months.YearMonth
         AND Months.YearMonth = dimDate.YearMonth
于 2012-12-12T16:21:30.140 回答