Ssas 创建计算时间段层次结构

Ssas 创建计算时间段层次结构,ssas,mdx,Ssas,Mdx,为了给最终用户提供更好的多维数据集浏览体验,我尝试创建一个由计算成员组成的时间段层次结构 目前,我在DSV中使用了一个计算列,在日期表的每一行上创建了一个值相同的列(值始终为)。然后,在我的日期和时间维度中,我使用该计算列创建了一个单级别、单成员层次结构,如下所示: 现在,我已经成功地通过以下计算将时段添加到我的日历层次结构中: 创建成员CURRENTCUBE.[完成日期].[日历].[全部].[最后30天] 作为总和(上个期间(30,个成员)( “[完成日期][日历][日期]。”+ “&

为了给最终用户提供更好的多维数据集浏览体验,我尝试创建一个由计算成员组成的时间段层次结构


目前,我在DSV中使用了一个计算列,在日期表的每一行上创建了一个值相同的列(值始终为
)。然后,在我的
日期和时间
维度中,我使用该计算列创建了一个单级别、单成员层次结构,如下所示:


现在,我已经成功地通过以下计算将时段添加到我的
日历
层次结构中:

创建成员CURRENTCUBE.[完成日期].[日历].[全部].[最后30天]
作为总和(上个期间(30,个成员)(
“[完成日期][日历][日期]。”+
“&[”+CStr(年(现在())+“]&[”+CStr(月(现在()))+“]&[”+CStr(日(现在())+“]””
))),可见=1;
这在
日历
层次结构上正常工作:

但我想将它们移动到新的
时间段
层次结构中,以保持它们之间的良好分离


到目前为止,我尝试了两种不同的方法:

  • 更改计算成员的目标层次结构。将
    创建成员CURRENTCUBE.[完成日期].[日历].[全部].[过去30天]
    更改为
    创建成员CURRENTCUBE.[完成日期].[时间段].[全部].[过去30天]

  • 日历
    层次结构上计算成员的可见性更改为
    VISIBLE=0
    ,并在引用它的
    时间段
    层次结构上创建第二个计算成员:(我已尝试使用和未使用
    SUM()
    函数)

  • 创建成员CURRENTCUBE.[完成日期].[时间段].[全部].[最后30天]
    作为总额([完成日期][日历][全部][过去30天]),
    可见=1;
    
    但这两个都不适合我。所以我的问题是,我怎样才能完成我想要达到的目标

    我的最终目标是建立一个层次结构,用户可以将其拖动到透视表中并查看以下内容(但实际计算的时间段):


    我刚刚以这种方式创建了相同的:

    1) 为名为“All Time”的未筛选值添加虚拟属性 (键为int,值为0)

    2) 添加3个空成员

    CREATE MEMBER CURRENTCUBE.[Report Date].[Time Period].[All].[Last 30 Days]
     AS 
    null,
    VISIBLE = 1;
    CREATE MEMBER CURRENTCUBE.[Report Date].[Time Period].[All].[Last 60 Days]
     AS 
    null,
    VISIBLE = 1;
    CREATE MEMBER CURRENTCUBE.[Report Date].[Time Period].[All].[Last 90 Days]
     AS 
    null,
    VISIBLE = 1;
    
    3) 然后添加作用域(我有另一种键格式):

    它可以工作(还可以添加一个度量来计算要验证的级别的成员):


    我刚刚以这种方式创建了相同的:

    1) 为名为“All Time”的未筛选值添加虚拟属性 (键为int,值为0)

    2) 添加3个空成员

    CREATE MEMBER CURRENTCUBE.[Report Date].[Time Period].[All].[Last 30 Days]
     AS 
    null,
    VISIBLE = 1;
    CREATE MEMBER CURRENTCUBE.[Report Date].[Time Period].[All].[Last 60 Days]
     AS 
    null,
    VISIBLE = 1;
    CREATE MEMBER CURRENTCUBE.[Report Date].[Time Period].[All].[Last 90 Days]
     AS 
    null,
    VISIBLE = 1;
    
    3) 然后添加作用域(我有另一种键格式):

    它可以工作(还可以添加一个度量来计算要验证的级别的成员):

    多亏了我,我才成功地让它发挥作用

    下面是我现在用来设置计算时段层次结构的方法:

  • 进入DSV,在日期表上创建一个名为
    TimePeriod
    新命名计算
    ,并将该值设置为类似于
    所有时间

  • 在日期维度中,根据该命名计算创建一个新属性,并使用它创建层次结构

  • 确保新属性链接到
    属性关系
    选项卡中的日属性

  • 在多维数据集中,转到“计算”选项卡,在我们为每个要添加的时间段创建的
    时间段
    层次结构中创建一个虚拟计算成员:

  • 创建成员CURRENTCUBE.[完成日期].[时间段].[全部].[最后30天]
    为空,可见=1;
    创建成员CURRENTCUBE。[完成日期].[时间段].[全部].[最后60天]
    为空,可见=1;
    创建成员CURRENTCUBE。[完成日期].[时间段].[全部].[最后90天]
    为空,可见=1;
    //等等。。。
    
  • 现在,在计算的底部,为我们在上一步中进行的每个虚拟计算添加一个作用域(您需要更改
    strotmember()
    函数中的位以匹配您的day属性键):
  • 范围([完成日期][时间段][全部][过去30天]);
    此=上一个期间的总和(30,STROTOMBER)(
    “[完成日期][日历][日期]。”+
    “&[”+CStr(年(现在())+“]&[”+CStr(月(现在()))+“]&[”+CStr(日(现在())+“]””
    )));
    终端范围;
    范围([完成日期][时间段][全部][最后60天]);
    此=上一个期间的总和(60,STROTOMBER)(
    “[完成日期][日历][日期]。”+
    “&[”+CStr(年(现在())+“]&[”+CStr(月(现在()))+“]&[”+CStr(日(现在())+“]””
    )));
    终端范围;
    范围([完成日期][时间段][全部][最后90天]);
    此=上一个期间的总和(90,STROTOMBER)(
    “[完成日期][日历][日期]。”+
    “&[”+CStr(年(现在())+“]&[”+CStr(月(现在()))+“]&[”+CStr(日(现在())+“]””
    )));
    终端范围;
    
    多亏了我的努力,我才得以实现这一目标

    下面是我现在用来设置计算时段层次结构的方法:

  • 进入DSV,在日期表上创建一个名为
    TimePeriod
    新命名计算
    ,并将该值设置为类似于
    所有时间

  • 在日期维度中,根据该命名计算创建一个新属性,并使用它创建层次结构

  • 确保新属性链接到
    属性关系
    选项卡中的日属性

  • 在多维数据集中,转到“计算”选项卡,在我们为每个要添加的时间段创建的
    时间段
    层次结构中创建一个虚拟计算成员:

  • 创建成员CURRENTCUBE.[完成日期].[时间段].[全部].[最后30天]
    为空,可见=1;
    创建成员CURRENTCUBE。[完成日期].[时间段].[全部].[最后60天]
    为空,可见=1;