ssas中如何实现按月按小时或者按月按半小时查询?

0
一般设计的CUBE,都只能按月--天--小时--半小时--5分钟这个维度砖取获取数据。如何开发可以实现按月按小时的看数据。 达到效果是:月层级下直接是24小时,每个1小时是把1月中所有对应的时刻加地来的。
比如我查看10月份的数据
时间 受理量
1:00 700 ----这个700数据是1号的1点加上2号的1点,以此类推到31号
2:00 800
3:00 900



我们目前CUBE的现状:
时间维度有4个,要实现按月按小时 与按月按半小时,

谢谢大家,给我说一下。
已邀请:
1

never515 - 产品规划师/产品经理 2013-11-05 回答

如果你在设计CUBE的时候是使用的默认聚合方式,并且你的时间维度的属性包括月、天、小时、半小时、5分钟。
你可以在时间维度中设定自定义三个层次结构:月-天-小时-半小时;月-小时;月-半小时。处理CUBE之后直接在设计器自带的浏览器中浏览该CUBE。
①将月-天-小时-半小时层次拖动到行字段,将受理量拖动到汇总区。这时的数据可以按照从月->天->小时->半小时进行展示,也就是展示在浏览器中的最细粒度的数据为半小时级别。
②然后将月-小时层次替换月-天-小时-半小时层次,数据按照月->小时进行累加聚合,此时展示的最细粒度数据为小时级别。
此时你会发现,按照月-小时层次展示数据时,在小时这个层次的数据已经是将某个月份中每一天该时段的数据的累加和(也就是你要求的展示方式)。

此处以年-月-日层次与年-日层次举例:
(1)以年-月-日层次展示“计数”量值

1.png

此时,2012年1月1日计数808、2012年2月1日计数2026;2012年1月12日计数3793、2012年7月12日计数304、2012年8月12日计数230。
如果按照年-日的层次进行展示,那么2012年1日的数据应该是808+2026=2834;2012年12日的数据应该是3793+304+230=4327

(2)以年-日层次展示“计数量值”

2.png


2012年1日计数值为2834;2012年12日计数值为4327.

可以这样理解,如果你直接以默认聚合方式处理CUBE,它会按照每一种可能的属性层次展示方式进行聚合。如果你在数据库中存储的数据为5分钟粒度级别并并且有月、天、小时、半小时、5分钟这几个时间维度,在CUBE处理时,会按照5分钟->半小时;5分钟->小时;5分种->天;5分钟->月。
这样,任意半个小时、任意小时、任意天、任意月的数据已经存储在多维库中。然后如果需要展示月-小时这个时间层次,只需要按照月份,将该月份中相同的时间点累加就可以。

但是SSAS实际处理聚合的机制比这个例子估计要复杂太多,这需要非常深入的研究数据仓库理论。

要回复问题请先登录注册