页面树结构
转至元数据结尾
转至元数据起始


需求说明

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

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

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

实现方法

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

1、新建一个多维参数。新建多维分析参数,命名为"当前月份"。参数类型选择成员;控件类型选择下拉树;成员所在层次选择Time;备选值选择成员树选择方式;默认值选择MDX语句,MDX语句为:SELECT {strToMember("[时间]." || "[" || trim(str (int(year(now()) - 6))) || "年].[" || trim(str (int(year(now()) - 6))) ||"年" || trim(str(int(( (month(now()) - 1) / 3) + 1))) || "季度]" || ".[" || trim(str (int(year(now()) - 6))) || "年" || trim(str(month(Now()))) || "月]")} ON columns FROM [Sales],其它设置默认即可。设置如下图:

 

 注意:因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 【Sales】构建多维分析。其中行区选择"Store"维的华南、华北和华东成员,列上选择度量维的销售量、销售成本和销售额成员。

3、 新建局部自定义成员。在左侧资源树的 自定义成员>局部 下新建一个局部自定义成员。把"当前月份"参数是从左侧资源树参数节点下拖入到MDX表达式中,完成MDX语法校验、最后点击确定保存。具体设置如下:

 

4、添加上面步骤建立的局部自定义成员到多维分析的行区,此时出现的"当前月份"参数默认值是2016年2月。

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

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

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

1、在业务库里增加一张表Time_New(Time_id, Time_Name,Time_type),用来记录各类时间类型的最新数据。其中字段Time_id记录当前业务库中最新多维时间的ID;Time_Name记录当前业务库最新多维时间的名称;Time_type是时间类型的标志,如时间维的层次机构是年>季度>月,我们可以使用标志:Y(代表年)、Q(代表季度)、M(代表月)。表数据示例如下:

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

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

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

5、新建一个多维参数。新建多维分析参数,命名为"时间"。参数类型选择“成员”;控件类型选择“下拉树”;成员所在层次选择“时间”;备选值选择“成员树选择”方式;默认值选择“MDX语句”,MDX语句为:select {最新月份} on Columns from [Sales] ,其中最新月份是把左侧用户属性节点下的"最新月份"拖入;其它设置默认即可。具体设置如下图:

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

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

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

  • 无标签