设为首页 加入收藏

TOP

Oracle 学习之 数据仓库(二) Dimension 的理解(一)
2015-11-21 01:32:46 来源: 作者: 【 】 浏览:4
Tags:Oracle 习之 数据 仓库 Dimension 理解
在数据仓库中,有事实表、维度表两个概念。
?
事实表是数据仓库结构中的中央表,它包含联系事实与维度表的数字度量值和键。事实数据表包含描述业务(例如产品销售)内特定事件的数据。
?
维度表是维度属性的集合。是分析问题的一个窗口。是人们观察数据的特定角度,是考虑问题时的一类属性,属性的集合构成一个维。
?
如图示
?
?
我们以sh用户下的sales表和times表来看,
?
SALES为事实表
?
SQL> desc sales
 Name                     Null?    Type
 ----------------------------------------- -------- ----------------------------
 PROD_ID                  NOT NULL NUMBER
 CUST_ID                  NOT NULL NUMBER
 TIME_ID                  NOT NULL DATE
 CHANNEL_ID                   NOT NULL NUMBER
 PROMO_ID                 NOT NULL NUMBER
 QUANTITY_SOLD                NOT NULL NUMBER(10,2)
 AMOUNT_SOLD                  NOT NULL NUMBER(10,2)

?

TIMES为维度表
?
SQL> desc times
 Name                     Null?    Type
 ----------------------------------------- -------- ----------------------------
 TIME_ID                  NOT NULL DATE
 DAY_NAME                 NOT NULL VARCHAR2(9)
 DAY_NUMBER_IN_WEEK               NOT NULL NUMBER(1)
 DAY_NUMBER_IN_MONTH              NOT NULL NUMBER(2)
 CALENDAR_WEEK_NUMBER             NOT NULL NUMBER(2)
 FISCAL_WEEK_NUMBER               NOT NULL NUMBER(2)
 WEEK_ENDING_DAY              NOT NULL DATE
 WEEK_ENDING_DAY_ID               NOT NULL NUMBER
 CALENDAR_MONTH_NUMBER            NOT NULL NUMBER(2)
 FISCAL_MONTH_NUMBER              NOT NULL NUMBER(2)
 CALENDAR_MONTH_DESC              NOT NULL VARCHAR2(8)
 CALENDAR_MONTH_ID            NOT NULL NUMBER
 FISCAL_MONTH_DESC            NOT NULL VARCHAR2(8)
 FISCAL_MONTH_ID              NOT NULL NUMBER
 DAYS_IN_CAL_MONTH            NOT NULL NUMBER
 DAYS_IN_FIS_MONTH            NOT NULL NUMBER
 END_OF_CAL_MONTH             NOT NULL DATE
 END_OF_FIS_MONTH             NOT NULL DATE
 CALENDAR_MONTH_NAME              NOT NULL VARCHAR2(9)
 FISCAL_MONTH_NAME            NOT NULL VARCHAR2(9)
 CALENDAR_QUARTER_DESC            NOT NULL CHAR(7)
 CALENDAR_QUARTER_ID              NOT NULL NUMBER
 FISCAL_QUARTER_DESC              NOT NULL CHAR(7)
 FISCAL_QUARTER_ID            NOT NULL NUMBER
 DAYS_IN_CAL_QUARTER              NOT NULL NUMBER
 DAYS_IN_FIS_QUARTER              NOT NULL NUMBER
 END_OF_CAL_QUARTER               NOT NULL DATE
 END_OF_FIS_QUARTER               NOT NULL DATE
 CALENDAR_QUARTER_NUMBER          NOT NULL NUMBER(1)
 FISCAL_QUARTER_NUMBER            NOT NULL NUMBER(1)
 CALENDAR_YEAR                NOT NULL NUMBER(4)
 CALENDAR_YEAR_ID             NOT NULL NUMBER
 FISCAL_YEAR                  NOT NULL NUMBER(4)
 FISCAL_YEAR_ID              NOT NULL NUMBER
 DAYS_IN_CAL_YEAR             NOT NULL NUMBER
 DAYS_IN_FIS_YEAR             NOT NULL NUMBER
 END_OF_CAL_YEAR              NOT NULL DATE
 END_OF_FIS_YEAR              NOT NULL DATE

?

如果我们创建一个物化视图
?
create materialized view sales_month_sum 
enable query rewrite as 
  SELECT t.calendar_month_id,
         prod_id,
         channel_id,
         promo_id,
         SUM (quantity_sold) quantity_sold,
         SUM (amount_sold) amount_sold
    FROM sales s, times t
   WHERE s.time_id = t.time_id
GROUP BY prod_id,
         channel_id,
         promo_id,
         t.calendar_month_id;

?

?
如果我们做如下按月的分组查询
?
SQL> alter session set query_rewrite_enabled=true;
SQL> alter session set query_rewrite_integrity=trusted;
SQL> set autotrace traceonly
SQL> set line 200
SQL>   SELECT t.calendar_month_id,
         prod_id,
         channel_id,
         promo_id,
         SUM (quantity_sold) quantity_sold,
         SUM (amount_sold) amount_sold
    FROM sales s, times t
   WHERE s.time_id = t.time_id
GROUP BY prod_id,
         channel_id,
         promo_id,
         t.calendar_month_id; 

9068 rows selected.


Execution Plan
----------------------------------------------------------
Plan hash value: 3287305789

------------------------------------------------------------------------------------------------
| Id  | Operation            | Name          | Rows  | Bytes | Cost (%CPU)| Time     |
-------------------------------------------------------------------------------------------
首页 上一页 1 2 3 4 下一页 尾页 1/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇猜测:Oracleash报告中SQLText出.. 下一篇Oracle中PL/SQL的执行部分和各种..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: