Apache Kylin的COUNT_DISTINCT精确去重实战

背景:

Apache Kylin在1.5.3以及之前版本中使用精确去重只支持int类型,而目前1.5.4版本中已经支持其他数据类型的精确去重了,下面我们来验证一下对字符串进行精确去重。

环境:

Hadoop:2.6.0

HBase:1.1.4

Hive:1.2.1

Kylin:1.5.4.1

 

准备数据:

维表:region_tbl和city_tbl

数据如下:

region_tbl:

regionid  regionname

G01           北京

G02           江苏

G03           浙江

G04           上海

G05           广州

 

city_tbl:

regionid  cityid   cityname

G01           G0101      朝阳

G01           G0102      海淀

G02           G0201      南京

G02           G0202      宿迁

G03           G0301      杭州

G03           G0302      嘉兴

G04           G0401      徐汇

G04           G0402      虹口

G05           G0501      广州

G05           G0502      海珠

 

事实表:web_access_fact_tbl

数据如下:

day                       cookieid                                 regionid cityid         siteid         os             pv

2016-07-19       GBSYO1IMQ7GHQXOVTP G03         G0302      810           Mac OS    2

2016-07-03       NTJ95UHFUD3UECNS0U G05         G0502      3171         MacOS    4

2016-07-20       ZR27L7C79CCJGTN1F7   G04         G0402      8793         MacOS    2

2016-07-01       C17QEB0560LUZHD26P  G04         G0402      9793         Android 5.0      5

2016-07-01       N9LRCVTU6PGSUDJ9RB G03        G0301      1292         MacOS    1

 

创建工程

可以创建一个如下的工程名称:

创建Model

1.      数据模型如下:

2.      维度字段

 

3.      度量字段

创建Cube

1.      Cube维度

 

2.      Cube度量

可以看到,我们这里对COOKIEID字符型字段进行COUNT_DISTINCT精确去重计数,返回类型为bitmap。

 

3.      增量构建Cube的起始时间

因为事实表数据的时间是从2016-07-01开始的,所以我们这里保持分区时间从2016-07-01开始。

 

构建Cube

当上面的Cube创建好之后,我们开始构建Cube,选择“End Date (Exclude)”的时间为2017-07-04 00:00:00

 

提交构建Cube操作后,我们可以通过Monitor页面查看执行过程:

 

查询验证

Cube构建完成后,就可以通过Insight页面进行查询Cube数据:

1.      查询每天的uv和pv数

查询SQL:

select "DAY",

    count(distinct cookieid),

    sum(pv)

 from web_access_fact_tbl

 group by "DAY";

 

 

查询结果为:

 

可以看到结果是正确的。如果数量比较大,我们可以通过Hive查询来验证结果的正确性:

 

可以看到2016-07-01和2016-07-03两天的结果与我们Kylin中查询的一致。

        

 

你可能感兴趣的:(Kylin,Apache,Kylin实战)