关于Kylin的介绍和使用请参考之前的文章
分布式大数据多维分析(OLAP)引擎Apache Kylin安装配置及使用示例
Kylin对外提供的是SQL查询接口,基于Kylin构建OLAP多维分析系统,第一种方案是针对业务,定制开发一个前端界面,将界面上用户的选择和操作,翻译成SQL,提交给Kylin查询。另一种方案则是将Kylin与BI工具整合起来,借助BI工具,对Kylin中的Cube进行查询分析。Kylin本身对于BI工具Tableau可以非常好的整合使用,我自己下载了Tableau的试用版,效果确实不错,官方文档中也给出了详细的教程:

http://kylin.apache.org/cn/docs15/tutorial/tableau_91.html

可惜,Tableau是商业软件,收费的。

本文介绍另一个开源免费的BI工具–Saiku。
Saiku是一个轻量级的OLAP分析引擎,用户可以在非常友好的界面下利用OLAP和内存引擎进行向下钻取,过滤、分类、排序和生成图表。Saiku利用Mondrian完成了界面?MDX?SQL
的转换,最终将SQL通过JDBC提交给Kylin执行。

Github上已经有大神提供了编译好的相关jar包下载:

https://github.com/mustangore/kylin-mondrian-interaction

按照里面的说明,很简单就完成了Saiku+Kylin的整合部署。

Saiku中配置Kylin数据源


在浏览器输入Saiku的WEB地址:http://172.16.212.17:8080/
用户名密码为:admin/admin

STEP1:编写Mondrian Schema文件

  1. <?xml version="1.0"?>
  2. <Schema name="ad_schema">
  3. <Cube name="lxw1234_ad_cube2">
  4. <!-- 事实表(fact table) -->
  5. <Table name="AD_REPORT" />
  6. <Dimension name="地域">
  7. <Hierarchy hasAll="false">
  8. <Table name="AD_REPORT"></Table>
  9. <Level name="省份" column="PROVINCE" table="AD_REPORT"></Level>
  10. <Level name="城市" column="CITY" table="AD_REPORT"/>
  11. </Hierarchy>
  12. </Dimension>
  13. <Measure name="曝光数" column="IMP_PV" aggregator="sum" datatype="Integer" />
  14. <Measure name="唯一曝光数" column="COOKIEID_IMP" aggregator="distinct-count" datatype="Integer" />
  15. <Measure name="点击数" column="CLK_PV" aggregator="sum" datatype="Integer" />
  16. <Measure name="唯一点击数" column="COOKIEID_CLK" aggregator="distinct-count" datatype="Integer" />
  17. </Cube>
  18. </Schema>

STEP2:添加Kylin数据源

进入Saiku管理控制台,点击”Add Schema”,将编写好Schema文件上传。

接着点击”Add Data Source”,添加数据源:

STEP3:创建查询

回到Saiku Home主页,点击”Create a new query”,创建查询:

在多维数据下拉菜单中,选择Schema文件中定义好的Cube,自动获取指标和维度,双击指标和维度,在右边的区域即可自动进行查询展示。

Saiku中同样支持上钻、下钻、过滤、排序等操作。

存在的问题


在试用期间,发现两个严重的问题,导致Saiku和Kylin的整合甚至不能继续:

1. 事实表和维度表的join方式:

Mondrian中统一使用内关联(Inner
Join)的方式将事实表和维度表关联,而Kylin中,我的Cube是将事实表和维度表进行左关联(Left Join)生成的,因此不支持Inner
Join的查询。除非像我例子中的,把左右的维度名称都放置到事实表中,不和维度表关联,这样就没有问题。

2. Count Distinct的问题:

Mondrian对于Count Distinct的指标会翻译成SELECT COUNT(*) FROM (SELECT DISTINCT …)的形式,这种查询SQL提交给Kylin,并不支持,因此对于Count Distinct类型的指标无法查询分析。

看来要想很好的使用Saiku+Kylin,这两个问题还有待研究解决。

转自:lxw的大数据田地 » 使用Saiku+Kylin构建多维分析OLAP平台

【转】Kylin系列-使用Saiku+Kylin构建多维分析OLAP平台的更多相关文章

  1. Saiku_学习_03_Saiku+Kylin构建多维分析OLAP平台

    一.技术选型 参见:Saiku+Kylin多维分析平台探索 1.saiku Saiku 作为分析平台,提供可视化的操作,能方便的对数据进行查询.分析,并提供图形化显示 2.kylin Kylin 作为 ...

  2. Saiku + Kylin 多维分析平台探索

    背景 为了应对各种数据需求,通常,我们的做法是这样的: 对于临时性的数据需求:写HQL到Hive里去查一遍,然后将结果转为excel发送给需求人员. 对于周期性的.长期性的数据需求:编写脚本,结合Hi ...

  3. 《基于Apache Kylin构建大数据分析平台》

    Kyligence联合创始人兼CEO,Apache Kylin项目管理委员会主席(PMC Chair)韩卿 武汉市云升科技发展有限公司董事长,<智慧城市-大数据.物联网和云计算之应用>作者 ...

  4. Kylin系列之二:原理介绍

    Kylin系列之二:原理介绍 2018年4月15日 15:52 因何而生 Kylin和hive的区别 1. hive主要是离线分析平台,适用于已经有成熟的报表体系,每天只要定时运行即可. 2. Kyl ...

  5. Kylin系列(一)—— 入门

          因为平常只会使用kylin而不知其原理,故写下此篇文章.文章不是自己原创,是看过很多资料,查过很多博客,有自己的理解,觉得精华的部分的一个集合.算是自己对Kylin学习完的一个总结和概括吧 ...

  6. kylin 系列(一)安装部署

    kylin 系列(一)安装部署 一.环境说明 1.1 版本选择 cdh 版本下载地址:http://archive.cloudera.com/cdh5/cdh/5/ 软件名称 版本 JDK 1.8 H ...

  7. Kylin使用笔记-0: kylin介绍

    APACHE KYLIN™ 概览 Apache Kylin™是一个开源的分布式分析引擎,提供Hadoop之上的SQL查询接口及多维分析(OLAP)能力以支持超大规模数据,最初由eBay Inc. 开发 ...

  8. Jenkins持续集成企业实战系列之Jenkins手动构建-----04

    注:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.    最初接触Jenkins也是由于公司需求,根据公司需求Java代码项目升级的.(公司是 ...

  9. Jenkins系列之-—06 Ant构建

    一.Ant 简介&构建环境 Apache Ant 是由 Java 语言开发的工具 构建ant环境: 1). 安装jdk,设置JAVA_HOME ,PATH ,CLASS_PATH 2). 下载 ...

随机推荐

  1. jQuery 学习笔记(2)(jQuery静态方法)

    jQuery静态方法 1.$.each() 和 $.map()  既可以遍历数组也可以遍历伪数组 $.each(arr, function(value, index) { ... } ) $.map( ...

  2. oracle中并行执行不一定比串行执行快

    并行执行与串行执行相比,能否缩短执行时间,取决于如下几个方面:1.待执行的目标SQL是否适合并行执行,有些SQL是不太适合并行执行的,比如走索引的嵌套循环连接.2.数据库服务器上的硬件资源(如CPU. ...

  3. shell 命令 set命令

    set命令输出所有的变量,包括全局变量和局部变量: set-o命令显示bash Shell的所有参数配置信息 set -o nounset              -u                ...

  4. SectionList的使用

    这个是效果: 第一步:准备数据源:Car.json {"data": [ { "cars": [ { "icon": "m_180 ...

  5. Java基础知识(JAVA中String、StringBuffer、StringBuilder类的区别)

    java中String.StringBuffer.StringBuilder是编程中经常使用的字符串类,他们之间的区别也是经常在面试中会问到的问题.现在总结一下,看看他们的不同与相同. 1.可变与不可 ...

  6. Python3学习之路~3.2 递归、函数式编程、高阶函数、匿名函数、嵌套函数

    1 递归 在函数内部,可以调用其他函数.如果一个函数在内部调用自身本身,这个函数就是递归函数. def calc(n): print(n) if int(n / 2) == 0: return n r ...

  7. 设置 matlab 画图格式

    1:设置 matlab 画图格式 clear;clc; % load("array.mat"); % Bestallarray=array; % rllofcircle(Besta ...

  8. Sql注入基础原理介绍

    说明:文章所有内容均截选自实验楼教程[Sql注入基础原理介绍]~ 实验原理 Sql 注入攻击是通过将恶意的 Sql 查询或添加语句插入到应用的输入参数中,再在后台 Sql 服务器上解析执行进行的攻击, ...

  9. [LeetCode] 106. Construct Binary Tree from Postorder and Inorder Traversal_Medium tag: Tree Traversal

    Given inorder and postorder traversal of a tree, construct the binary tree. Note:You may assume that ...

  10. Dotfuscator 使用图解教程

    Dotfuscator:是.NET混淆器和压缩器,它可以帮助您防止您的应用程序被反编译.同时,它还可以使得您的应用程序更加小巧以及高效.我用的是4.9版本的Dotfuscator,Dotfuscato ...