HAWQ取代传统数仓实践(十九)-OLAP_第1页
HAWQ取代传统数仓实践(十九)-OLAP_第2页
HAWQ取代传统数仓实践(十九)-OLAP_第3页
HAWQ取代传统数仓实践(十九)-OLAP_第4页
HAWQ取代传统数仓实践(十九)-OLAP_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

HAWQ取代传统数仓实践(十九)一一OLAP

一、OLAP简介

1.概念

OLAP是英文是On-LineAnalyticalProcessing的缩写,意为联机分析处理。此

概念最早由关系数据库之父E.F.Codd于1993年提出。OLAP允许以一种称为多维

数据集的结构,访问业务数据源经过聚合和组织整理后的数据。以此为标准,

OLAP作为单独的一类技术同联机事务处理(On-LineTransactionProcessing,

OLTP)得以明显区分。

在计算领域,OLAP是一种快速应答多维分析查询的方法,也是商业智能的一

个组成部分,与之相关的概念还包括数据仓库、报表系统、数据挖掘等。数据仓库

用于数据的存储和组织,OLAP集中于数据的分析,数据挖掘则致力于知识的自动

发现,报表系统则侧重于数据的展现。OLAP系统从数据仓库中的集成数据出发,

构建面向分析的多维数据模型,再使用多维分析方法从多个不同的视角对多维数据

集合进行分析比较,分析活动以数据驱动。通过使用OLAP工具,用户可以从多个

视角交互式地查询多维数据。

OLAP由三个基本的分析操作构成:合并(上卷)、下钻和切片。合并是指数

据的聚合,即数据可以在一个或多个维度上进行累积和计算。例如,所有的营业部

数据被上卷到销售部门以分析销售趋势。下钻是一种由汇总数据向下浏览细节数据

的技术。比如用户可以从产品分类的销售数据下钻查看单个产品的销售情况。切片

则是这样一种特性,通过它用户可以获取OLAP立方体中的特定数据集合,并从不

同的视角观察这些数据。这些观察数据的视角就是我们所说的维度。例如通过经销

商、日期、客户、产品或区域等等,查看同一销售事实。

OLAP系统的核心是OLAP立方体,或称为多维立方体或超立方体。它由被称

为度量的数值事实组成,这些度量被维度划分归类。一个OLAP立方体的例子如图

1所示,数据单元位于立方体的交叉点上,每个数据单元跨越产品、时间、地区等

多个维度。通常使用一个矩阵接口操作OLAP立方体,例如电子表格程序的数据透

视表,可以按维度分组执行聚合或求平均值等操作。立方体的元数据一般由关系数

据库中的星型模式或雪花模式生成,度量来自事实表的记录,维度来自维度表。

数据单元

时间

图1

2.分类

通常可以将联机分析处理系统分为MOLAP、ROLAP、HOLAP三种类型。

(1)MOLAP

MOLAP(multi-dimensionalonlineanalyticalprocessing)是一种典型的OLAP

形式,甚至有时就被用来表示OLAP。MOLAP将数据存储在一个经过优化的多维

数组中,而不是存储在关系数据库中。某些MOLAP工具要求预先计算并存储计算

后的结果数据,这种操作方式被称为预处理。MOLAP工具一般将预计算后的数据

集合作为一个数据立方体使用。对于给定范围的问题,立方体中的数据包含所有可

能的答案。预处理的好处是可以对问题作出非常快速地响应。然而另一方面,依赖

于预计算的聚合程度,装载新数据可能会花费很长的时间。另外还有些MOLAP工

具,尤其是那些实现了某些数据库功能的MOLAP工具,并不预先计算原始数据,

而是在需要时才进行计算。

MOLAP的优点:

•优化的数据存储、多维数据索引和缓存带来的快速查询性能。

•相对于关系数据库,可以通过压缩技术,使数据存储需要更小的磁盘空间。

•MOLAP工具一般能够自动进行高级别的数据聚合。

•对于低基数维度的数据集合是紧凑的。

•数组模型提供了原生的索引功能。

MOLAP的缺点:

•某些MOLAP解决方案中的处理步骤可能需要很长的时间,尤其是当数据量很

大时。要解决这个问题,通常只能增量处理变化的数据,而不是预处理整个数

据集合。

­可能引入较多的数据冗余。

MOLAP产品:

商业的MOLAP产品主要有CognosPowerplay、OracleDatabaseOLAPOption、

MicroStrategy>MicrosoftAnalysisServices>Essbase等。

(2)ROLAP

ROLAP直接使用关系数据库存储数据,不需要执行预计算。基础的事实数据

及其维度表作为关系表被存储,而聚合信息存储在新创建的附加表中。ROLAP以

数据库模式设计为基础,操作存储在关系数据库中的数据,实现传统的OLAP数据

切片和分块功能。本质上讲,每种数据切片或分块行为都等同于在SQL语句中增

加一个“WHERE”子句的过滤条件。ROLAP不使用预计算的数据立方体,取而代之

的是查询标准的关系数据库表,返回回答问题所需的数据。与预计算的MOLAP不

同,ROLAP工具有能力回答任意相关的数据分析问题,因为该技术不受立方体内

容的限制。通过ROLAP还能够下钻到数据库中存储的最细节的数据。

由于ROLAP使用关系数据库,通常数据库模式必须经过仔细设计。为OLTP

应用设计的数据库不能直接作为ROLAP数据库使用,这种投机取巧的做法并不能

使ROLAP良好工作。因此ROLAP仍然需要创建额外的数据拷贝。但不管怎样,

ROLAP毕竟用的是数据库,各种各样的数据库设计与优化技术都可以被有效利用。

ROLAP的优点:

•在处理大量数据时,ROLAP更具可伸缩性,尤其是当模型中包含的维度具有

很高的基数,例如,维度表中有上百万的成员时。

•有很多可选用的数据装载工具,并且能够针对特定的数据模型精细调整ETL

代码,数据装载所需时间通常比自动化的MOLAP装载少的多。

•因为数据存储于标准关系数据库中,可以使用SQL报表工具访问数据,而不

必是专有的OLAP工具。

•ROLAP更适合处理非聚合的事实,例如文本型描述。在MOLAP工具中查询

文本型元素时性能会相对较差。

•通过将数据存储从多维模型中解耦出来,相对于用使用严格的维度模型,这种

更普通的关系模型增加了成功建模的可能性。

•ROLAP方法可以利用数据库的权限控制,例如通过行级安全性设置,可以用

事先设定的条件过滤查询结果。例如Oracle的VPD技术,能够根据连接的用

户自动在查询的SQL语句中拼接WHERE谓词条件。

ROLAP的缺点:

业界普遍认为ROLAP工具比MOLAP查询速度慢。

•聚合表的数据装载必须由用户自己定制的ETL代码控制。ROLAP工具不能自

动完成这个任务,这意味着额外的开发工作量。

•如果跳过创建聚合表的步骤,查询性能会大打折扣,因为不得不查询大量的细

节数据表。虽然可以通过适当建立聚合表缓解性能问题,但对所有维度表及其

属性的组合创建聚合表是不切实际的。

•ROLAP依赖于针对通用查询或缓存目标的数据库,因此并没有提供某些

MOLAP工具所具有的特殊技术,如透视表等。但是现代ROLAP工具可以利

用SQL语言中的CUBE、ROLLUP操作或其它SQLOLAP扩展。随着这些SQL

扩展的逐步完善,MOLAP工具的优势也不那么明显了。

•因为ROLAP工具的所有计算都依赖于SQL,对于某些不易转化为SQL的计算

密集型模型,ROLAP不再适用。例如包含预算、拨款等条目的复杂财务报表

或地理位置计算的场景。

ROLAP产品:

使用ROLAP的商业产品包括MicrosoftAnalysisServices、MicroStrategySAP

BusinessObjects,OracleBusinessIntelligenceSuiteEnterpriseEdition、Tableau

Software等等。也有开源的ROLAP服务器,如Mondrian0

(3)HOLAP

在额外的ETL开发成本与缓慢的查询性能之间难以选择,正是因为这种情况,

现在大部分商业OLAP工具都使用一种混合型(Hybrid)方法,它允许模型设计者

决定哪些数据存储在MOLAP中,哪些数据存储在ROLAP中。除了把数据划分成

传统关系型存储和专有存储,业界对混合型OLAP并没有清晰的定义。例如,某些

厂商的HOLAP数据库使用关系表存储大量的细节数据,而是用专用表保存少量的

聚合数据。HOLAP结合了MOLAP和ROLAP两种方法的优点,可以同时利用预计

算的多维立方体和关系数据源。HOLAP有以下两种划分数据的策略。

•垂直分区。这种模式的HOLAP将聚合数据存储在MOLAP中,以支持良好的

查询性能,而把细节数据存储在ROLAP中以减少立方体处理所需时间。

•水平分区。这种模式的HOLAP按数据热度划分,将某些最近使用的数据分片

存储在MOLAP中,而将老的数据存储在ROLAP„

3.性能

OLAP分析所需的原始数据量是非常庞大的。一个分析模型,往往会涉及数千

万或数亿条甚至更多的数据,而且分析模型中包含多个维度数据,这些维度又可以

由用户作任意的组合。这样的结果就是大量的实时运算导致过长的响应时间。想象

一个1000万条记录的分析模型,如果一次提取4个维度进行组合分析,每个维度

有10个不同的取值,理论上的运算次数将达到10的12次方。这样的运算量将导

致数十分钟乃至更长的等待时间。如果用户对维组合次序进行调整,或增加、或减

少某些维度的话,又将是一个重新的计算过程。

从上面的分析中可以得出结论,如果不能解决OLAP运算效率问题的话,

OLAP将只会是一个没有实用价值的概念。在OLAP的发展历史中,常见的解决方

案是用多维数据库代替关系数据库设计,将数据根据维度进行最大限度的聚合运算,

运算中会考虑到各种维度组合情况,运算结果将生成一个数据立方体,并保存在磁

盘上,用这种预运算方式提高OLAP的速度。例如Kylin就是使用这种以空间换时

间的方式来提高查询速度,而HAWQ在性能上的优势,也使它较为适合OLAP应

用。HAWQ与Hive的性能对比,参见"HAWQ与Hive查询性能对比测试”。

(/wzy0623/article/details/71479539)

二、OLAP实例

要做好OLAP类的应用,需要对业务数据有深入的理解。只有了解了业务,才

能知道需要分析哪些指标,从而有的放矢地剖析相关数据,得出可信的结论来辅助

决策。下面就以销售订单数据仓库为例,提出若干问题,然后使用HAWQ查询数

据以回答这些问题:

1.每种产品类型以及单个产品的累积销售量和销售额是多少?

2.每种产品类型以及单个产品在每个省、每个城市的月销售量和销售额趋势是

什么?

3.每种产品类型销售量和销售额和同比如何?

4.每个省以及每个城市的客户数量及其消费金额汇总是多少?

5.迟到订单的比例是多少?

6.客户年消费金额的平均数和中位数是多少?

7.客户年消费金额分布处于25%、50%、75%位置的消费金额是多少?

8.客户年消费金额为"高“、"中”、"低”档的人数及消费金额所占比例是多少?

9.每个城市按销售金额排在前三位的商品是什么?

10.所有产品的销售百分比排名?

1.每种产品类型以及单个产品的累积销售量和销售额是多少?

使用HAWQ的groupbyrollup求小计和总计。

dw=>selectduct_category,duct_name,sum(nq),sum(order_am

ount)

dw->fromv_sales_order_facttl?product_dimt2

dw->whereduct_sk=duct_sk

dw->groupbyrollup(duct_categoryjduct_name)

dw->orderbyt2,product_category,duct_name;

product_category|product_name|sum|sum

+-----------+----+----------

monitor|flatpanel||49666.00

monitor|ledpanelI11I3087.00

monitorI11I52753.00

peripheral|keyboard|38|67387.00

peripheral1138|67387.00

storage|floppydrive|52|348655.00

storage|harddiskdrive|80|375481.00

storage11132|724136.00

11181|844276.00

(9rows)

2.每种产品类型以及单个产品在每个省、每个城市的月销售

量和销售额是多少?

查询语句与上一个问题类似,只是多关联了邮编维度表,并且在groupby

rollup中增加了省、市两列。

dw=>selectt2・product_category,duct_name,t3・state,t3.city?su

m(nq),sum(order_amount)

dw->fromv_sales_order_facttl,product_dimt2,zip_code_dimt3

dw->wheretl.product_sk=t2.product_sk

dw->andtl.customer_zip_code_sk=t3.zip_code_sk

dw->groupbyrollup(t2.product_categoryjt2・product_name,t3.state,

t3.city)

dw->orderbyt2・product_category,t2.product_namet3.state^t3.city;

product_category|product_name|state1city|sum|

sum

monitor|flatpanel|oh|Cleveland||7

431.00

monitor|flatpanel|oh1||7

431.00

monitor|flatpanel1Pa|mechanicsburg||10

630.00

monitor|flatpanel1Pa|Pittsburgh||31

605.00

monitor|flatpanel1Pa1||42

235.00

monitor|flatpanel11||49

666.00

monitor|ledpanel1Pa|Pittsburgh|11|3

087.00

monitor|ledpanel1Pa1|11|3

087.00

monitor|ledpanel11|11|3

087.00

monitor|11|11|52

753.00

peripheral|keyboard|oh|Cleveland|38|10

875.00

peripheral|keyboard|oh1138|10

875.00

peripheral|keyboard|pa|mechanicsburg|129

629.00

peripheral|keyboard|pa|Pittsburgh|126

883.00

peripheral|keyboard|pa11156

512.00

peripheral|keyboard|1138|67

387.00

peripheral111138|67

387.00

storage|floppydrive|oh|Cleveland|18

229.00

storage|floppydrive|oh1118

229.00

storage|floppydrive|pa|mechanicsburg|1140

410.00

storage|floppydrive|pa|Pittsburgh|52|200

016.00

storage|floppydrive|pa1152|340

426.00

storage|floppydrive|1152|348

655.00

storage|harddiskdrive|oh|Cleveland|18

646.00

storage|harddiskdrive|oh1118

646.00

storage|harddiskdrive|pa|mechanicsburg|80|194

444.00

storage|harddiskdrive|pa|Pittsburgh|1172

391.00

storage|harddiskdrive|pa1180|366

835.00

storage|harddiskdrive|1180|375

481.00

storage1111132|724

136.00

1111181|844

276.00

(31rows)

3.每种产品类型销售量和销售额和同比如何?

需要查询周期快照v_month_end_sales_order_facto

dw=>selectt2.product^ategory,

dw->tl.year_monthj

dw->sum(quantityl)quantity_cur\

dw->sum(quantity2)quantity_preJ

dw->round((sum(quantityl)-sum(quantity2))/sum(quantity2)^2)

pct_quantityj

dw->sum(amountl)amount_cur

dw->sum(amount2)amount_pre.

dw->round((sum(amount1)-sum(amount2))/sum(amount2)^2)pct_a

mount

dw->from(selecttl.product_sk?

dw(>tl.year_month.

dw(>tl.month_order_quantityquantity].

dw(>t2.month_order_quantityquantity2.

dw(>tl.month_order_amountamountl^

dw(>t2.month_order_amountamount2

dw(>fromv_month_end_sales_order_facttl

dw(>joinv_month_end_sales_order_factt2

dw(>ontl.product_sk=t2.product_sk

dw(>andtl.year_month/100=t2.year_month/100+1

dw(>andtl.year_month-tl.year_month/100*100=t2.year_mon

th-t2.year_month/100*100)tl.

dw->product_dimt2

dw->wheretl.product_sk=t2.product_sk

dw->groupbyt2.product_categorytl.year_month

dw->orderbyt2.product_categorytl.year_month;

product_category|year_month|quantity_cur|quantity_pre|pct_quan

tity|amount_cur|amount_pre|pct_amount

+-----------------+++

--------+-------------------+-----------------+

storage201705|943|

|142814.00110172.00|0.30

storage201706I110|

|9132.00116418.00-0.92

(2rows)

4.每个省以及每个城市的客户数量及其消费金额汇总是多少?

dw=>selectt2.state,

dw->t2.city,

dw->count(distinctcustomer_sk)sum_customer_num?

dw->sum(order_amount)sum_order_amount

dw->fromv_sales_order_facttl,zip_code_dimt2

dw->wheretl.customer_zip_code_sk=t2.zip_code_sk

dw->groupbyrollup(t2・state,t2.city)

dw->orderbyt2.state?t2.city;

state|city|sum_customer_num|sum_order_amount

oh|Cleveland|4|35181.00

oh|435181.00

pamechanicsburg8375113.00

pa1Pittsburgh12|433982.00

pa|20|809095.00

||24|844276.00

(6rows)

5.迟到订单的比例是多少?

注意,sum」ate需要显式转化为numeric数据类型。

dw=>selectsum_total,sum_late,round(cast(sum_lateasnumeric)/sum_to

tai,4)late_pct

dw->from(selectsum(casewhenstatus_date_sk<entry_date_skthen1

dw(>else0

dw(>end)sum_lateJ

dw(>count(*)sum_total

dw(>fromsales_order_fact)t;

sum_total|sum_late|late_pct

-----------+----------+----------

151|2|0.0132

(1row)

6.客户年消费金额的平均数和中位数是多少?

分别使用两种方法求得平均数和中位数。HAWQ为分析型应用提供了丰富的聚

合函数。

dw=>selectround(avg(sum_order_amount)^2)avg_amount

dw->round(sum(sum_order_amount)/count(customer_sk)2)avg_amoun

tl,~~

dw->percentile_cont(0.5)withingroup(orderbysum_order_amoun

t)median_amount?

dw->median(sum_order_amount)median_amountl

dw->from(selectcustome^sk^sum(order_amount)sum_order_amount

dw(>fromv_sales_order_fact

dw(>groupbycustomer_sk)tl;

avg_amount|avg_amountl|median_amount|median_amountl

------------+-------------+---------------+-----------------

35178.17|35178.17|14277|14277

(1row)

7.客户年消费金额分布处于25%、50%、75%位置的消费金额

是多少?

dw=>selectpercentile_cont(0.25)withingroup(orderbysum_order_amou

ntdesc)max_amount_25J

dw->percentile_cont(0.50)withingroup(orderbysum_order_amou

ntdesc)max_amount_50J

dw->percentile_cont(0.75)withingroup(orderbysum_order_amou

ntdesc)max_amount_75

dw->from(selectcustomer_skJsum(order_amount)sum_order_amount

dw(>fromv_sales_order_fact

dw(>groupbycustomer_sk)tl;

max_amount_25|max_amount_50|max_amount_75

---------------+----------------+--------------

50536.5|14277|8342.25

(1row)

8.客户年消费金额为“高〃、“中〃、“低〃档的人数及消费金额所

占比例是多少?

使用在"HAWQ取代传统数仓实践(十二)--维度表技术之分段维度”中定义

的分段进行查询。

dw=>selectyearly

dw->bn,

dw->c_count

dw->sum_band.

dw->sum_total.

dw->round(sum_band/sum_totalJ4)band_pct

dw->from(selectcount(a.customer_sk)c_count

dw(>sum(annual_order_amount)sum_band.

dw(>a.yearyearly

dw(>band_namebn

dw(>fromannual_customer_segment_facta.

dw(>annual_order_segment_dimb.

dw(>annual_sales_order_factd

dw(>wherea.segment_sk=b.segment_sk

dw(>anda.customer_sk=d.customer_sk

dw(>anda.year=d.year

dw(>andb.segment_name='grid'

dw(>groupbya.year,bn)tl.

dw->(selectsum(annual_order_amount)sum_total

dw(>fromannual_sales_order_fact)t2

dw->orderbyyearl,bn;

yearl|bn|c_count|sum_band|sum_total|band_pct

-------+------+--+------------+----------+---------

2016|high|6I572190.00I572190.00I1.0000

(1row)

9.每个城市按销售金额排在前三位的商品是什么?

使用HAWQ提供的窗口函数row_number(),按城市分区,按销售额倒序,取

得销售排名。

dw=>selectcasewhentl.rn=1thentl.cityendcity,

dw->t2.product_name,

dw->tl.sum_order_amount^

dw->tl.rn

dw->from(selectcity,

dw(>product_sk.

dw(>sum_order_amount

dw(>row_number()over(partitionbycityorderbysum_o

rder_amountdesc)rn

dw(>from(selectt2.state||||t2.citycity,

dw(>product_sk,

dw(>sum(order_amount)sum_order_amount

dw(>fromv_sales_order_facttl?zip_code_dimt2

dw(>wheretl.customer_zip_code_sk=t2.zip_code_sk

dw(>groupbyt2.state|||ItZ.city^product_sk)t)t

1

dw->innerjoinproduct_dimt2onduct_sk=duct_sk

dw->wheretl.rn<=3

dw->orderbytl.city^tl.rn;

city|product_name|sum_order_amount|rn

oh:cleveland|keyboard|10875.00|1

1harddiskdrive|8646.00|2

1floppydrive|8229.003

pa:mechanicsburg|harddiskdrive|194444.0011

1floppydrive|140410.00|2

1keyboard|29629.003

pa:Pittsburgh|floppydrive|200016.0011

1harddiskdrive|172391.00|2

1flatpanel|31605.003

(9rows)

10.所有产品的销售百分比排名?

dw=>selectproduct_name,

dw->sum_order_amount

dw->percent_rank()over(orderbysum_order_amountdesc)rank

dw->from(selectproduct_sk?sum(order_amount)sum_order_amount

dw(>fromv_sales_order_fact

dw(>groupbyproduct_sk)tl,product_dimt2

dw->whereduct_sk=duct_sk

dw->orderbyrank;

product_name|sum_order_amount|rank

harddiskdrive|375481.00|0

floppydrive348655.00|0.25

keyboard67387.000.5

flatpanel49666.00|0.75

ledpanel3087.001

(5rows)

三、交互查询与图形化显示

1.Zeppelin简介

Zeppelin是一个基于Web的软件,用于交互式地数据分析。它一开始是

Apache软件基金会的孵化项目,2016年5月正式成为顶级项目。Zeppelin描述

自己是一个可以进行数据摄取、数据发现、数据分析、数据可视化的笔记本,用以

帮助开发者、数据科学家以及相关用户更有效地处理数据,而不必使用复杂的命令

行,也不必关心集群的实现细节。Zeppelin的架构如图2所示。

ZeppelinArchitecture

图2

从上图中可以看到,Zeppelin具有客户端/服务器架构,客户端一般就是指浏

览器。服务器接收客户端的请求,并将请求通过Thrift协议发送给翻译器组。翻

译器组物理表现为JVM进程,负责实际处理客户端的请求并与服务器进行通信。

翻译器是一个插件式的体系结构,允许任何语言或后端数据处理程序以插件的

形式添加到Zeppelin中。特别需要指出的是,Zeppelin内建Spark翻译器,因此

不需要构建单独的模块、插件或库。翻译器的架构如图3所示。

ZeppelinInterpreterArchitecture

InterpreterisconnectorbetweenZeppelinandBackenddataprocessingsystem.

SparkclusterMavenrepository

图3

当前的Zeppelin已经支持很多翻译器,如Zeppelin0.6.0版本自带的翻译器有

alluxio、cassandra>file、hbase、ignite、kylin、md、phoenix、sh、tajo、

angular>elasticsearch、flink>hive、jdbc、lens、psqkspark等18种之多。插

件式架构允许用户在Zeppelin中使用自己熟悉的特定程序语言或数据处理方式。

例如,通过使用%spark翻译器,可以在Zeppelin中使用Scala语言代码。

在数据可视化方面,Zeppelin已经包含一些基本的图表,如柱状图、饼图、线

形图、散点图等,任何支持的后端语言输出都可以被图形化表示。

在Zeppelin中,用户建立的每一个查询叫做一个note,note的URL在多用户

间共享,Zeppelin将向所有用户实时广播note的变化。Zeppelin还提供一个只显

示查询结果的URL,该页不包括任何菜单和按钮。用这种方式可以方便地将结果

页作为一帧嵌入到自己的web站点中。

2.使用Zeppelin执行HAWQ查询

(1)安装Zeppelin

HDP2.5.0安装包中已经集成了Zeppelin0.6.0,因此不需要单独进行复杂的安

装配置,只要启动Zeppelin服务就可以了。

(2)配置Zeppelin支持HAWQ

Zeppelin0.6.0通过JDBC翻译器解析HAWQ查询,只需进行简单的配置即可,

步骤如下。

在Ambari控制台主页面中,点击Services->ZeppelinNotebook->Quick

Links->ZeppelinUI,打开ZeppelinUI主页面。

在ZeppelinUI主页面中,点击anonymous->interpreter,进入翻译器页面。

点击edit编辑jdbc翻译器,配置default.driver、default.password>

default.url>defaultuser四个属性的值,我的配置如图4所示。

jdbC%jdtx:/edit|CrestartXremove

Option

shared-Interpreterfornote

Connecttoexistingprocess

Properties

namevalueaction

commonmax_count1000x

default.driverorgpostgresqlDriverX

default.password123456X

default.urljdbcpostgresql7/hdp3:5432/dwX

defaultuserdwtestX

hive.driverorg.apache.hivejdbcHiveDriverx

图4

•配置好后点击Save保存配置,然后点击restart重启jdbc翻译器,至此配置

完成。

(3)在Zeppelin中执行HAWQ查询

点击Notebook->Createnewnote,新建一个note,在其中输入查询语句,如

“每种产品类型以及单个产品在每个省、每个城市的月销售量和销售额是多少?”的

查询。

%jdbc

selectt2・product_category,t2・product_name,t3・state,t3・city,sum(nq)

sq,sum(order_amount)sa

fromv_sales_order_facttl,product_dimzip_code_dimt3

wheretl.product_sk=duct_sl<

andtl.customer_zip_code_sk=t3.zip_code_sk

groupbyt2・product_category,t2・product_name,t3・state,t3.city

orderbyt2.product^ategory^t2.product_nametS.state^t3.city;

运行结果的表格、柱状图、饼图、堆叠图、线形图、散点图分别如图5-图10

所示。

0^ZeppelinNotebook”SearchyourNotebooksanonymous-

UntitledNote1>::圉,电“④oQ0Adefault»

%jdbc

selectduct_category,duct_na«e,t3.state,t3.city,sun(nq)sq,sum(order_amount)sa

fromv_sales_order_facttl,product_dint2,zip_co<>e_di«t3

whereduct_sk=duct_sk

andtl.customer_zip_code_sk=t3.zip_code_sk

groupbyt2.product_category,t2.product_nan>e,t3.state,t3.city

orderbvt2.oroductcateeorv.t2.oroductname.t3.state.t3.citv:

曲|媪。4匕庄±-

product_categoryproduct_namestatecitysqsa

monitorflatpanelohde㈤andnull7,431

monitorflatpanelpamechanicsburgnull10.630

monitorflatpanelpaPittsburghnull31.605

monitorledpanelpaPittsburgh113,087

peripheralkeyboardohCleveland3810,875

peripheralkeyboardpamechanicstxjfgnull29,629

peripheralkeyboardpaPittsburghnull26.883

storagefloppydriveohdevelaidnull8,229.

Took2sec

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论