网站大量收购闲置独家精品文档,联系QQ:2885784924

基于Hadoop生态圈的数据仓库实践 —— 进阶技术(五).doc

基于Hadoop生态圈的数据仓库实践 —— 进阶技术(五).doc

  1. 1、本文档共27页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于Hadoop生态圈的数据仓库实践——进阶技术(五)要点

基于Hadoop生态圈的数据仓库实践 —— 进阶技术(五) 五、快照 前面实验说明了处理维度的扩展。本节讨论两种事实表的扩展技术。 有些用户,尤其是管理者,经常要看某个特定时间点的数据。也就是说,他们需要数据的快照。周期快照和累积快照是两种常用的事实表扩展技术。 周期快照是在一个给定的时间对事实表进行一段时期的总计。例如,一个月销售订单周期快照汇总每个月底时总的销售订单金额。 累积快照用于跟踪事实表的变化。例如,数据仓库可能需要累积(存储)销售订单从下订单的时间开始,到订单中的商品被打包、运输和到达的各阶段的时间点数据来跟踪订单生命周期的进展情况。用户可能要取得在某个给定时间点,销售订单处理状态的累积快照。 下面说明周期快照和累积快照的细节问题。 1. 周期快照 下面以销售订单的月底汇总为例说明如何实现一个周期快照。 首先需要添加一个新的事实表。下图中的模式显示了一个名为month_end_sales_order_fact的新事实表。 该表中有两个度量值,month_order_amount和month_order_quantity。这两个值是不能加到sales_order_fact表中的,原因是,sales_order_fact表和新的度量值有不同的时间属性(数据的粒度不同)。sales_order_fact表包含的是每天一条记录。新的度量值要的是每月的数据。使用下面的脚本建立month_end_sales_order_fact表。 [sql] view plain copy 在CODE上查看代码片派生到我的代码片 USE dw; CREATE TABLE month_end_sales_order_fact ( order_month_sk INT COMMENT order month surrogate key, product_sk INT COMMENT product surrogate key, month_order_amount DECIMAL(10,2) COMMENT month order amount, month_order_quantity INT COMMENT month order quantity ) CLUSTERED BY (order_month_sk) INTO 8 BUCKETS STORED AS ORC TBLPROPERTIES (transactional=true); 建立了month_end_sales_order_fact表后,现在需要向表中装载数据。月底销售订单事实表的数据源是已有的销售订单事实表。month_sum.sql文件用于装载月底销售订单事实表,该文件内容如下。 [sql] view plain copy 在CODE上查看代码片派生到我的代码片 -- 设置变量以支持事务 set hive.support.concurrency=true; set hive.exec.dynamic.partition.mode=nonstrict; set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager; set pactor.initiator.on=true; set pactor.worker.threads=1; USE dw; SET hivevar:pre_month_date = add_months(current_date,-1); delete from month_end_sales_order_fact where month_end_sales_order_fact.order_month_sk in (select month_sk from month_dim where month = month(${hivevar:pre_month_date}) and year = year(${hivevar:pre_month_date})); insert into month_end_sales_order_fact select b.month_sk, duct_sk, sum(order_amount), sum(order_quantity) f

文档评论(0)

dajuhyy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档