页面树结构

版本比较

标识

  • 该行被添加。
  • 该行被删除。
  • 格式已经改变。



面板
borderColor#BBBBBB
bgColor#F0F0F0
borderWidth1
borderStylesolid
目录


需求说明

动态多维分析:以月为时间参数。每个月打开报表时展现的是当前月或上月的数据。

多维分析默认时间参数是随时间而变化的,无需每次都去编辑多维分析。

以Cube【Sales】为例,下面介绍两种方式来实现动态多维分析。

实现方法

方式一:通过VBA和Excel的函数灵活组合实现

(1)新建一个多维参数。新建多维分析参数,命名为

1、新建一个多维参数。新建多维分析参数,命名为"当前月份"。参数类型选择成员;控件类型选择下拉树;成员所在层次选择Time;备选值选择成员树选择方式;默认值选择MDX语句,MDX语句为:SELECT {strToMember("[时间]." || "[" || trim(str (int(year(now()) -

18

6))) || "年].[" || trim(str (int(year(now()) -

18

6))) ||"年" || trim(str(int(( (month(now()) - 1) / 3) + 1))) || "季度]" || ".[" || trim(str (int(year(now()) -

18

6))) || "年" || trim(str(month(Now()))) || "月]")} ON columns FROM [Sales]

其它设置默认即可。设置如下图:

,其它设置默认即可。设置如下图:

Image Added 

Image Removed 

注意
注意:因Cube【Sales】的时间维年级别只有1997年和1998年两个成员,为了保证多维分析可以刷新出数据,我们使用当前年份2009减去12,最后得到的是1997年10月成员。如果用户希望看到当前时间前一月的数据,MDX语句修改为

 注意:因Cube【Sales】的时间维年级别只有2017年和2016年两个成员,为了保证多维分析可以刷新出数据,我们使用当前年份2022减去6,最后得到的是2016年2月成员。如果用户希望看到当前时间前一月的数据,MDX语句修改为"select {strToMember("[Time].["+cstr(year(now()))+"年"+cstr(month(Now())-1)+"月]")} on columns from [Sales]"即可。

(2) 新建多维分析。选择Cube

2、新建多维分析。选择Cube 【Sales】构建多维分析。其中行区选择"Store"

维的CA、OR和WA成员,列上选择度量维的Store Cost、Store Sales和Sales Count成员。(3) 新建局部自定义成员。在左侧资源树的自定义成员\局部下新建一个局部自定义成员。把

维的华南、华北和华东成员,列上选择度量维的销售量、销售成本和销售额成员。

3、 新建局部自定义成员。在左侧资源树的 自定义成员>局部 下新建一个局部自定义成员。把"当前月份"

参数是从左侧资源树参数节点下拖入到MDX表达式中。具体设置如下:

参数是从左侧资源树参数节点下拖入到MDX表达式中,完成MDX语法校验、最后点击确定保存。具体设置如下:

Image Removed

Image Added 

(4) 添加上面步骤建立的局部自定义成员到多维分析的行区,此时出现的

4、添加上面步骤建立的局部自定义成员到多维分析的行区,此时出现的"当前月份"

参数默认值是1997年10月。(5) 点击多维分析工具栏上按钮参数设置,在参数应用值界面设置

参数默认值是2016年2月。

5、点击多维分析工具栏上按钮 参数设置,在参数应用值界面设置"当前月份"参数为使用参数默认值后,点击

确定。(6) 刷新报表,最后得到的效果如下图。当系统时间更新后,打开此多维分析,

确定

6、刷新报表,最后得到的效果如下图。当系统时间更新后,打开此多维分析,"当前月份"参数的值也会跟着变化,因此默认看到的是多维分析的最新时间数据,我们也可以通过切换参数值来查看其他时间的数据。

Image Removed

Image Added

方式二:通过用户属性实现

(1) 在业务库里增加一张表Time

1、在业务库里增加一张表Time_New(Time_id, Time_Name,Time_type),用来记录各类时间类型的最新数据。其中字段Time_id记录当前业务库中最新多维时间的ID;Time_Name记录当前业务库最新多维时间的名称;Time_

type是时间类型的标志,如时间维的层次机构是年>季度>月>日,我们可以使用标志:Y(代表年)、Q(代表季度)、M(代表月)、D(代表日)。表数据示例如下:

type是时间类型的标志,如时间维的层次机构是年>季度>月,我们可以使用标志:Y(代表年)、Q(代表季度)、M(代表月)。表数据示例如下:

Image Removed(2) 通过ETL操作,更新Time

Image Added

2、通过ETL操作,更新Time_New表的数据,使当前数据是用户能看到的最新时间。

(3) 添加业务库作为关系数据源。

(4) 在用户属性下新建一个用户属性。此用户属性是为了取业务库中最新的月份时间,其数据源选择步骤

(5)创建的关系数据源,类型选择字符串,命名为

3、添加业务库作为关系数据源。

4、在用户属性下新建一个用户属性。此用户属性是为了取业务库中最新的月份时间,其数据源选择步骤1中创建的关系数据源,类型选择“字符串”,命名为"最新月份",表达式设置如下:Select Time_ID as A from Time_New where Time_type='M';

(6) 新建一个多维参数。新建多维分析参数,命名为

Image Added

5、新建一个多维参数。新建多维分析参数,命名为"时间"

。参数类型选择成员;控件类型选择下拉树;成员所在层次选择Time;备选值选择成员树选择方式;默认值选择MDX语句,MDX语句为select

。参数类型选择“成员”;控件类型选择“下拉树”;成员所在层次选择“时间”;备选值选择“成员树选择”方式;默认值选择“MDX语句”,MDX语句为:select {最新月份} on Columns from [Sales]

on Columns,其中最新月份是把左侧用户属性节点下的

,其中最新月份是把左侧用户属性节点下的"最新月份"拖入;其它设置默认即可。具体设置如下图:

  Image Removed

Image Added

Image Removed

(7)  新建多维分析。选择Cube 【Sales】构建多维分析。其中行区选择"Store"维的CA、OR和WA成员,列上选择度量维的Store Cost、Store Sales和Sales Count成员。

(8)  新建局部自定义成员。在左侧资源树的自定义成员\局部下新建一个局部自定义成员。在其MDX表达式中输入如下:sum({时间}),其中"时间"是从左侧资源树参数节点下拖入。具体设置如下: Image Removed

(9) 添加上面步骤建立的局部自定义成员到多维分析的切块区,此时会自动生成一个Time参数,在右上方的工作区选中Time参数,在右下方的属性面板区,设置Time参数不显示。

(10) 点击多维分析工具栏上按钮 参数设置,在参数应用值界面设置时间和Time参数为使用参数默认值后,点击 确定。

(11) 刷新报表,最后得到的效果如下图。当更新业务库的最新时间后,打开此多维分析, 面板
borderColor#BBBBBB
bgColor#F0F0F0
borderWidth1
borderStylesolid
toc

Image Added

6、新建多维分析。选择Cube 【Sales】构建多维分析。其中行区选择“商店”维的华南、华北和华东成员,列上选择度量维的销售量、销售成本和销售额成员。

7、新建局部自定义成员。在左侧资源树的 自定义成员 > 局部 下新建一个局部自定义成员。从左侧资源树参数节点下拖拽时间参数到MDX表达式中。具体设置如下:

Image Added

8、将以上定制的自定义成员添加到行区中,刷新报表,最后得到的效果如下图。当更新业务库的最新时间后,打开此多维分析,"时间"参数的值也会跟着变化,因此默认看到的是多维分析的最新时间数据,我们也可以通过切换参数值来查看其他时间的数据。

Image Removed

Image Added