【摘要】
用实例、分步骤,具体解说多维分析(OLAP)的实现。点击理解多维分析后盾实际 3:维度排序压缩
实际指标本期指标,是在实现数据类型转化根底上,实现维度排序压缩,进一步晋升计算速度。
实际的步骤:
1、 筹备根底宽表:批改上期的代码,实现维度排序压缩存成新组表。
2、 拜访根底宽表:上期代码不用批改,间接利用于新组表。
3、 新增数据追加:每日新增业务数据追加,每月从新排序重整。要尽可能不影响拜访根底宽表的性能,同时减小每日新增数据所须要的工夫。
本期样例宽表不变,仍然为 customer 表。从 Oracle 数据库中取出宽表数据的 SQL 语句是 select * from customer。执行后果如下图:
假如当天日期是 2021-01-12,则取出当日新增数据的 SQL 是:
select * from customer where begin_date=to_date('2021-01-12','yyyy-mm-dd')
多维分析计算的指标也不变,用上面 Oracle 的 SQL 语句示意:
select department_id,job_id,to_char(begin_date,'yyyymm') begin_month ,sum(balance) sum,count(customer_id) count
from customer
where department_id in (10,20,50,60,70,80)
and job_id in ('AD_VP','FI_MGR','AC_MGR','SA_MAN','SA_REP')
and begin_date>=to_date('2002-01-01','yyyy-mm-dd')
and begin_date<=to_date('2020-12-31','yyyy-mm-dd')
and flag1='1' and flag8='1'
group by department_id,job_id,to_char(begin_date,'yyyymm')
筹备宽表维度排序压缩:有序列存。列存是指列式存储,集算器新建组表时,默认列存。
有序是指字段值物理有序存储,也就是用维度字段排序后存入组表。用于排序的维度字段程序十分要害,要将反复度高的维度排在后面。
本例的维度包含:department_id,job_num,employee_id,begin_date,customer_id。其中,部门编号 department_id 总数起码(事实表中只呈现 11 个部门),所以反复度最高。其余字段中,job_num,employee_id,begin_date,customer_id 反复度顺次升高。
...