《KyLin学习理解》-02-KyLin的网页界面使用

来源:互联网 发布:海软订货系统源码 编辑:程序博客网 时间:2024/06/05 16:38

上一篇:http://blog.csdn.net/qq_21383435/article/details/75198823
1。根据上一张分析的内容得知。
涉及到的字段是
   pro表的
     字段: ID 商品名称 价格 购买数量 付款 类别ID 时间
     聚合函数:sum(num) ,sum(pay)
   cate表的
     字段:ID 类别名称
     聚合函数:无
2。首先我们要设计建表语句

create table prob(id bigint,name string,price int,num int,pay int,cid bigint,date_time string) row format delimited fields terminated by '\t' stored as textfile; create table cateb(caid bigint,caname string) row format delimited fields terminated by '\t' stored as textfile; 

注意:这里建标语句和第一章有一点不同,cate表的caid ,caname字段名不一样了,因为如果一样两个名称会相同,造成连接查询的时候,有两个字段名称一致,显示的内容一样,其中一个字段的名称会被覆盖,在kylin 1.6中我没找到解决方法。
3。这里有我设计的两个shell脚本,用于生成测试数据
类别表的测试数据生成脚本

#!/bin/bashfor i in {1..1000}do   echo ${i}$'\t''类别'${i} >> cate1000.txtdone

商品表的测试语句的生成

#!/bin/shfunction random(){      min=$1      max=$(($2-$min+1))      num=$(cat /dev/urandom | head -n 10 | cksum | awk -F ' ' '{print $1}')      echo $(($num%$max+$min))  } for i in {1..10000};do    pcode=$(random 2 1000);    price=$(random 2 100);    count=$(random 2 10);    pay=$[$price*$count];    cid=$(random 2 1000);    num1=$(random 2 9);    num2=$(random 2 9);    m1=$(random 2 9);      day1=$(random 2 2);    day2=$(random 2 9);    echo    ${i}$'\t'"产品"${pcode}$'\t'${price}$'\t'${count}$'\t'${pay}$'\t'${cid}$'\t'"20"${num1}${num2}"-0"${m1}"-"${day1}${day2} >> pro100000.txt;    echo "生成第"${i}"条数据";done;

4。把生成的文件,load到HIVE中。

load data local inpath '/opt/hzjs/lcc_work/pro.txt' overwrite into table prob; load data local inpath '/opt/hzjs/lcc_work/cate.txt' overwrite into table cateb; 

5。设计Model数据模型
这里写图片描述
首先建立一个项目。填写项目名称和项目描述
这里写图片描述
然后选中数据源同步按钮,就是把HIVE中的数据开始与KyLin做数据同步。
这里写图片描述
选择要同步数据的表,就是业务涉及的所有表
这里写图片描述
new一个model也就是数据模型
这里写图片描述
给Model命名
这里写图片描述
1,选择事实表,2选择查找表,点开2后,会出现选择哪个查找表,会选择连接方式,和连接的字段,可以添加多个。
这里要解释一下:
星型模型:一个事实表,0个或者多个维度表,(我自己的解释,就是一张主要的表,这个表里面很多外键,每个外键指向一个新表,新表是为了这张表服务的,比如说
ID 书籍ID 书籍数量 付账 类别ID 用户ID
这张表里 书籍ID 类别ID 用户ID 都是指向一个对象的ID
),总之就是其他表围着一张表转。
雪花模型:是维度之后还有维度,上面解释的新表后面还有新表。比如用户 还有许多地址表。

这里写图片描述
这一步就是上面业务分析,要用到了的。
涉及到的字段是
   pro表的
     字段: ID 商品名称 价格 购买数量 付款 类别ID 时间
     聚合函数:sum(num) ,sum(pay)
   cate表的
     字段:ID 类别名称
     聚合函数:无
因为所有字段都涉及到了,所以这里我们都选择进去。
这里写图片描述
上面的业务很简单,但是考虑我们要查询最高的价格,和时间。所以这里根据
涉及到的字段是
   pro表的
     字段: ID 商品名称 价格 购买数量 付款 类别ID 时间
     聚合函数:sum(num) ,sum(pay)
   cate表的
     字段:ID 类别名称
     聚合函数:无
主要是聚合函数的内容,我们选择可能要计算的字段。
这里写图片描述
如果表里涉及时间,我们可以在这里设计时间格式,和在where里过滤一些脏数据。
好了到此为止我们设计好了Model数据模型。

6。设计CUBE
这里写图片描述
1选择我们要根据哪个模型设计CUBE,2 这个CUBE的名称是什么
这里写图片描述
点击1,后一般设计主表 事实表位normal,辅助表设计为可推断的derived的。
这里写图片描述
涉及到的字段是
   pro表的
     字段: ID 商品名称 价格 购买数量 付款 类别ID 时间
     聚合函数:sum(num) ,sum(pay)
   cate表的
     字段:ID 类别名称
     聚合函数:无
这里的设计是根据业务需求里面的聚合函数去设计的,有就设计,没有就不要添加了,否则数据会急剧增加。
这里写图片描述
这里的意思是选择你要合并的数据范围。这个不深入研究,就是当HivE有新数据的时候,自动被KyLIn添加计算范围内。
这里写图片描述
这里很重要,
1。代表最低的CUBE查询,比方说有10条查询语句,每条语句都查询了商品的名称name和商品的price,那么我们可以把这两个字段加在这里,可以优化CUBE,不然kyLin会根据排列组合全部生成预计算的SQL语句,会占用大量内存。
2。代表有层级关系的可以选择这里,比方说 三个字段分别是 年月日,或者时分秒,或者省市区等
3。这里是添加主表,事实表的连接字段,本宝宝在这里吃亏过因为这里没选择,最后只导入了一个pro主表信息。导致连接查询另外一个表,找不到了。出错
4。这里是优化的,把最常出现的字段,用于过滤的字段放在前面,可以优化。

其他的下一步下一步,就可以了。
这里写图片描述
成功后进行Build操作。
这里写图片描述
这里要注意了,我的数据随机生成的是2000年到2100年的数据,这一点相当于根据时间选择数据,如果你选择的时间段没有数据,最后查询结果没有任何数据。
这里写图片描述
这里build完成后,就可以查询数据了。这里也可以看build过程中哪里出错了。
这里写图片描述
当编译好后这里是有数据的。而且是ready状态,然后就可以在
这里写图片描述
查询数据了,验证SQL。

上一篇:http://blog.csdn.net/qq_21383435/article/details/75198823