Apache Kylin和Superset(Caravel)集成

本文转自Apache Kylin公众号apachekylin.前端

Superset 是一个数据探索和可视化平台,设计用来提供直观的,可视化的,交互式的分析体验。python

Superset 提供了两种分析数据源的方式:react

1. 用户能够以单表形式直接查询多种数据源,包括 Presto、Hive、Impala、SparkSQL、MySQL、Postgres、Oracle、Redshift、SQL Server、Druid 等。本文后续内容也会详细介绍Superset如何支持Kylin数据源。sql

2. 一个 SQL 的 IDE 供高级分析师使用 SQL 查询定义所须要分析的数据集,这种方法使用户在一个查询中实现用 Superset 查询数据源的多表,并当即对查询进行可视化分析。数据库

Superset 的前世此生

Superset 起源于 2015 年初黑客马拉松项目,曾经使用过 Caravel 和 Panoramix 做为项目名。如今主要维护小组是 Airbnb 数据科学组,代码托管在 Github。做为 Apache 软件基金会孵化项目,Superset 目标是要作成数据可视化平台。apache

Superset 对于数据源端经过一个成熟的 OR-Mapping 方案对接了几乎市面上全部数据库产品,数据的分析和建模再使用 Pandas 统一加工序列化后由前端渲染展现. 进而前端渲染出众多富有表现力的可视化图表,这些可视化技术包括但不限于: D3,react stack,mapbox,deck.gl。浏览器

笔者在使用 Superset 过程当中也感受到一些不足,例如没法经过权限隔离不一样用户可访问的数据源,数据查询暂时不支持下钻操做,多数据源不容易作交互查询等。可是瑕不掩瑜,Superset 依然是如今这个星球上最好的开源 BI 平台。app

superset

Apache Kylin 与 Superset 集成

交互式分析是 Apache Kylin 与 Superset 共同的产品目标,使用 Kylin 做为 Superset 查询,数据通过 Kylin Cube 的预计算处理,在 Superset 前端进行可视化分析想必是快到飞起,真可谓是强强联合。ide

Kyligence 数据科学小组开源了 kylinpy 项目完成了 Kylin 与 Superset 数据源的集成。如今咱们就来手把手教读者实现 Kylin 和 Superset 的集成,并实现交互式的可视化分析。工具

准备工做

1. 安装 Apache Kylin

请参考 Apache Kylin installation guide:http://kylin.apache.org/docs23/

2. Apache Kylin 提供了样例 Cube,方便你们学习使用。Kylin 启动成功后,能够在 Kylin 安装路径下运行如下命令生成样例数据 Cube:

         ./${KYLIN_HOME}/bin/sample.sh

运行后,使用默认的 Kylin 帐号 ADMIN / KYLIN  登录界面,在 System 页面点击 Reload Metadata 便可看到样例项目 Learn_kylin。

 

选择样例 Cube “Kylin_sales_cube”,点击 Action -> Build。选择日期不要晚于 2014-01-01 来进行全量构建。

superset

点击前往 Monitor 页面查看 Cube 构建的进程,知道100%完成,Cube 就能够进行查询了。

前往 Insight 页面执行一个查询验证 Cube 可以返回结果。

select part_dt
sum(price) as total_selled
count(distinct seller_id) as sellers
from kylin_sales
group by part_dt
order by part_dt

查询会击中新构建的 Kylin_sales_cube。

3. 下面咱们安装 Superset,并初始化。

强烈建议使用虚拟环境来安装全部的依赖包(virtualenv/virtualenvwrapper)

经过 PyPi 仓库安装 superset

pip install superset

建立初始超级用户: admin/admin

fabmanager create-admin –app superset –username admin –password admin –firstname admin –lastname admin –email admin@fab.org

使用默认 sqllite metadata,位于 $HOME/.superset/superset.db,而且根据 migrate 建立表结构

superset db upgrade

初始化 role 等

superset init

执行如上4条命令即可以在 POSIX 操做系统上部署 Superset,如想加载 Superset提供的例子数据,能够再执行

superset load_examples

4. 安装 kylinpy

pip install kylinpy

5. 安装验证,若是一切顺利,Superset daemon应该能够跑起来了

-d 选项能够打开 debug 模式

superset runserver -d

 

Starting server with command:
gunicorn -w 2 –timeout 60 -b  0.0.0.0:8088 –limit-request-line 0 –limit-request-field_size 0 superset:app

[2018-01-03 15:54:03 +0800] [73673] [INFO] Starting gunicorn 19.7.1
[2018-01-03 15:54:03 +0800] [73673] [INFO] Listening at: http://0.0.0.0:8088 (73673)
[2018-01-03 15:54:03 +0800] [73673] [INFO] Using worker: sync
[2018-01-03 15:54:03 +0800] [73676] [INFO] Booting worker with pid: 73676
[2018-01-03 15:54:03 +0800] [73679] [INFO] Booting worker with pid: 73679

….

 

创建链接

如今全部的准备工做已经完毕,咱们来试试在 Superset 中建立一个 Apache Kylin 数据源。

1. 浏览器打开 http://localhost:8088 账号密码是刚才 fabmanager 建立的 admin/admin。

superset

点击 Source —> Datasource,以下配置,注意以下几点:

  • SQLAlchemy URI 格式为:

kylin://<username>:<password>@<hostname>:<port>/<project name>

  • 勾选 Expose in SQL Lab 后这个数据源即可以在 SQL Lab 中展现出来。
  • 点击 Test Connection 能够测试连接是否成功。

建立 Kylin 数据源

superset

测试链接

superset

查询 Kylin 表单

链接成功后页面最下会展现这个 Kylin 项目内全部的表。

superset

1. 点击 Source —> Tables,添加 Table,此处须要手动输入须要添加的表名。

superset2. 在全部列表中选定相应的表,就能够开始查询之旅啦。

superset

使用 SQL Lab 查询 Apache Kylin 多表

熟悉 Kylin 的读者都知道,Kylin Cube 一般都是以多表关联建模为基础生成的,所以分析 Kylin Cube 的数据时,使用多表进行查询对于 Kylin 来讲是很是常见的场景。在使用 Superset 分析 Kylin 数据时,咱们可使用 Superset 中的 SQL Lab 功能来查询多表,并对其进行可视化分析。

在这里咱们以一个能够击中 Kylin 中的 sample cube ‘kylin_sales_cube’ 的查询为例。

superset

查询返回后点击可视化按键便可针对当前查询进行可视化分析。

superset

你能够复制下面的完整查询来体验 SQL Lab 查询 Kylin Cube 的功能。

select YEAR_BEG_DT,
MONTH_BEG_DT
WEEK_BEG_DT
META_CATEG_NAME
CATEG_LVL2_NAME,
CATEG_LVL3_NAME,
OPS_REGION,
NAME as BUYER_COUNTRY_NAME,
sum(PRICE) as GMV,
sum(ACCOUNT_BUYER_LEVEL) ACCOUNT_BUYER_LEVEL,
count(*) as CNT
from KYLIN_SALES
join KYLIN_CAL_DT
on CAL_DT=PART_DT
join KYLIN_CATEGORY_GROUPINGS
on SITE_ID=LSTG_SITE_ID
and KYLIN_CATEGORY_GROUPINGS.LEAF_CATEG_ID=KYLIN_SALES.LEAF_CATEG_ID
join KYLIN_ACCOUNT
on ACCOUNT_ID=BUYER_ID
join KYLIN_COUNTRY
on ACCOUNT_COUNTRY=COUNTRY
group by YEAR_BEG_DT,
MONTH_BEG_DT

WEEK_BEG_DT
META_CATEG_NAME
CATEG_LVL2_NAME,
CATEG_LVL3_NAME,
OPS_REGION,
NAME

使用 Superset 的多种功能查询 Apache Kylin

根据不少 Apache Kylin 用户在对接可视化及报表分析前端时,所提出的一些常见需求,咱们对Superset 的相应功能也作了一些测试,能够说企业对于报表分析及可视化展示所须要的绝大部分功能,Superset 都已经能够提供了。

排序

Superset 支持使用任意数据源上定义的度量进行排序,不论这个度量是否在图表上。

superset

superset

过滤功能

在 Superset 中有多种过滤功能均可以使用在对 Kylin 的查询中。

1. 日期过滤

在 Superset 中你能够对定义为时间列的维度进行日期和时间的过滤。

superset2. 维度过滤

对于其余非时间维度,Superset 也提供了维度的筛选器,支持 SQL 中的 in,not in,等于,不等于,大于等于,小于等于,小于,大于,like 等多种过滤方式。

superset3. 报表内搜索

你能够在报表返回后使用搜索框功能对数据进行筛选。

superset4. 度量过滤

对于度量 Superset 支持用户直接写入 SQL 的having 表达式。

superset5. 联动过滤

使用 Superset 中提供的过滤框可视化组件,能够实现一个过滤器联动过滤多个可视化图形的效果。

以下图,过滤框组件能够联动控制仪表盘上的全部可视化图形。

superset6. Top N

你能够经过对数据进行排序和设置返回行数限制来实现展现 Top 10/Bottom 10 等功能。

superset7. 分页

在返回的数据量较大时,Superset 支持设置每页数据行数实现数据的分页。

superset

8. 多种可视化

Superset 提供多样的可视化图表选择,这里仅以世界地图和睦泡图为例做为展现。

superset

superset

superset

9. 其它功能

 

另外 Superset 还支持数据导出 CSV,报表分享,查看报表 SQL 等功能。

10. 中文支持

 

最重要的是,Superset 因为社区的贡献已提供了中文版本!

 

Superset 使用了 Flask 的翻译扩展工具 Flask-Babel(http://packages.python.org/Flask-Babel/) ,使用了这个扩展包后,每一个对应的语言版本只须要在翻译文件中将对应的 Superset 文字翻译成中文便可,这使得 Superset 社区的中文用户能够很容易的贡献翻译内容。

superset

 

总结

多个开源项目的结合每每能产生1+1>2的效果,Kylin 专一于 OLAP 计算引擎,Superset 专一于数据可视化展示. 分析师手中的双剑合璧实现交互式分析,让企业使用大数据技术显著提高生产力。

相关文章
相关标签/搜索