1

我需要知道床位的预订率是多少(就像在酒店里一样)。

某个日期范围内的床位数量(每月总和),该范围内的预订(包括该范围内部分日期的部分预订总和)

我创建了一个“预订”事实表,其中包含一个 StartDate 和一个 EndDate,其中一个度量“countSejoursDate”(count(rows))和一个度量“NbrOfBeds”(sum)。我创建了 2 个“向导时间”维度,链接如下: 在此处输入图像描述

我还创建了一个名为“日期”的第三个“向导时间”维度,与任何事实无关。

在尝试获取结果时,使用下面的 MDX,我只能检索某个日期范围内的行数……但即使这样,每个月第一天的值也是错误的!

with member nbsejsDate as AGGREGATE( 
          {NULL:LINKMEMBER([Date].[Calendrier].CURRENTMEMBER,[START_DATE].[Start_Calendrier])}
        * {LINKMEMBER([DATE].[Calendrier].CURRENTMEMBER, [END_DATE].[End_Calendrier]):NULL}
        , [Measures].[countSejoursDate])
select nbsejsDate
on 0 
, [Date].[Calendrier].[Jour].&[2015-03-01]:[Date].[Calendrier].[Jour].&[2015-03-31] on 1
from [Cube]
4

1 回答 1

1

这有点奇怪,因为我们这里是一个以开始和结束日期形式存在的多对多关系。试图依靠 MDX 计算而不是使用多对多关系来进行正确的计算,这很棘手,而且非常容易出错。

解决这个问题有不同的可能性:

  • 在 Facts 的时间维度链接中使用 Range (From - To) 链接类型。

  • 使用 Javascript 视图创建一个新列,该列是日期数组(开始/结束)。多对多关系是动态创建的。

如果我正确理解了问题,这应该会使任何计算变得容易得多。

希望能帮助到你

于 2016-04-04T13:12:36.897 回答