如何使用mdx创建分组维度

如何使用mdx创建分组维度,mdx,Mdx,我正在尝试使用mdx创建一个bucketing分组。我有一个称为QtyOpen的度量值和一个时间维度 我希望有一个具有以下逻辑的维度: 桶1用于显示截至昨天日期的所有未结数量 Bucket 2用于显示当前日期的所有打开数量 桶3用于显示明天日期的所有打开数量 因此,如果直到昨天的所有OpenQty都是15,今天的所有OpenQty都是7,明天的所有OpenQty都是12,它应该显示如下: Bucket 1 | Todays date | Tomorrows date 15

我正在尝试使用mdx创建一个bucketing分组。我有一个称为QtyOpen的度量值和一个时间维度

我希望有一个具有以下逻辑的维度:

桶1用于显示截至昨天日期的所有未结数量

Bucket 2用于显示当前日期的所有打开数量

桶3用于显示明天日期的所有打开数量

因此,如果直到昨天的所有OpenQty都是15,今天的所有OpenQty都是7,明天的所有OpenQty都是12,它应该显示如下:

Bucket 1 | Todays date | Tomorrows date
   15           7              12
select (
            {StrToMember("[Time].[Time YQMD].[Year].&[" + format(now(), "yyyy") + "].&[Q" + format(datepart("q", now())) + "].&[" + format(now(), "MMM") + "].&[" + format(now(), "dd") + "]")
            : 
            StrToMember("[Time].[Time YQMD].[Year].&[" + format(now(), "yyyy") + "].&[Q" + format(datepart("q", now())) + "].&[" + format(now(), "MMM") + "].&[" + format(now(), "dd") + "].lead(3)")}
            ) on columns, 
non empty ([PPV].[Country].[Country], [Measures].Receipt Quantity]) on rows
from [Model]
因此,我成功地获得了我想要的日期范围的语法。对此的查询如下所示:

Bucket 1 | Todays date | Tomorrows date
   15           7              12
select (
            {StrToMember("[Time].[Time YQMD].[Year].&[" + format(now(), "yyyy") + "].&[Q" + format(datepart("q", now())) + "].&[" + format(now(), "MMM") + "].&[" + format(now(), "dd") + "]")
            : 
            StrToMember("[Time].[Time YQMD].[Year].&[" + format(now(), "yyyy") + "].&[Q" + format(datepart("q", now())) + "].&[" + format(now(), "MMM") + "].&[" + format(now(), "dd") + "].lead(3)")}
            ) on columns, 
non empty ([PPV].[Country].[Country], [Measures].Receipt Quantity]) on rows
from [Model]
这里缺少的是“Bucket 1”,它收集今天之前所有天的OpenQty

我将是一个巨大的奖金,能够使用这个维度的所有措施

谢谢

谢谢你的帮助


谢谢。

您需要的是动态时间计算。容易设置,但不是很简单。请参阅此链接,它将帮助您:

您可以在
WITH
子句中执行此操作:

WITH
  SET [Today] AS
    STRTOSET(
       "{[Time].[Time YQMD].[Year].&[" + format(now(), "yyyy") + "]" + 
       ".&[Q" + format(datepart("q", now())) + "]" &
          ".&[" + format(now(), "MMM") + "].&[" + format(now(), "dd") + "]}"
    )
  MEMBER [Time].[Time YQMD].[All].[Today] AS
    [Today].item(0).item(0)
  SET [Pre-Today] AS
    {null:[Today].lag(1)}
  MEMBER [Time].[Time YQMD].[All].[Pre-Today] AS  
    AGGREGATE([Pre-Today])
  MEMBER [Time].[Time YQMD].[All].[Tomorrow] AS
    [Today].item(0).lead(1)
  SET [BUCKETS] AS
   {
     [Time].[Time YQMD].[All].[Pre-Today]
    ,[Time].[Time YQMD].[All].[Today]
    ,[Time].[Time YQMD].[All].[Tomorrow]
   }
SELECT
   [BUCKETS] ON 0, 
NON EMPTY 
  ([PPV].[Country].[Country], [Measures].Receipt Quantity]) ON 1
FROM [Model];

应该很简单,但是您可以添加一些您已经尝试过的
mdx
,以便我们了解您的多维数据集中的维度吗?您好。谢谢我用一些我已经开始工作的mdx编辑了消息。