公司的olap用的cubes+mysql,性能有點落後了,是以最近研究一下kylin
參考有贊的這篇文章:
https://tech.youzan.com/kylin-mondrian-saiku/
原理看一下上面的文章,主要記錄一下整合的步驟
搭建
首先部署好kylin,具體步驟後續補充。
下載下傳saiku最新版,解壓。
github上已經有一個整合Kylin,Mondrian以及Saiku的項目(作者mustangore):
https://github.com/mustangore/kylin-mondrian-interaction
項目中有步驟,不過是英文的,解釋一下:
1. 進入saiku下目錄: $SAIKU_HOME/tomcat/webapps/saiku/WEB-INF/lib/
2. 在目前目錄加入kylin-jdbc.jar(在kylin的路徑下,/lib裡面),
加入Mondrian 4.4 jar with Kylin dialect(在剛才github項目中/mondrian下),
加入新的Commons HTTPClient jar(在剛才的github項目中/saiku/commons-httpclient-3.1.jar),
删除舊的Mondrian jar和Commons HTTPClient jar
3. 啟動Saiku (_sh start-saiku.sh_)
4. 通路 http://saiku-server:8080/
* 使用者名: admin
* 密碼: admin
5. 第一次登入之前需要license認證,認證具體過程:
1、https://licensing.meteorite.bi/login 新增賬號登入。
2、建立公司記錄。
3、建立license。
4、将license下載下傳到本地。
5、 http://saiku-server:8080/upload.html 将 下載下傳的license檔案上傳。上傳完畢之後即可登入。
如圖:
使用:
STEP1:編寫Mondrian Schema檔案
<?xml version="1.0"?>
<Schema name="ad_schema">
<Cube name="lxw1234_ad_cube2">
<!-- 事實表(fact table) -->
<Table name="AD_REPORT" />
<Dimension name="地域">
<Hierarchy hasAll="false">
<Table name="AD_REPORT"></Table>
<Level name="省份" column="PROVINCE" table="AD_REPORT"></Level>
<Level name="城市" column="CITY" table="AD_REPORT"/>
</Hierarchy>
</Dimension>
<Measure name="曝光數" column="IMP_PV" aggregator="sum" datatype="Integer" />
<Measure name="唯一曝光數" column="COOKIEID_IMP" aggregator="distinct-count" datatype="Integer" />
<Measure name="點選數" column="CLK_PV" aggregator="sum" datatype="Integer" />
<Measure name="唯一點選數" column="COOKIEID_CLK" aggregator="distinct-count" datatype="Integer" />
</Cube>
</Schema>
STEP2:添加Kylin資料源
進入Saiku管理控制台,點選”Add Schema”,将編寫好Schema檔案上傳。
接着點選”Add Data Source”,添加資料源:
- Name: Kylin Data Source
- Connection Type: Mondrian
- URL: jdbc:kylin://{your_kylin_url}:7070/{your_project_name}
- Schema: {your_mondrian_schema}
- JDBC:org.apache.kylin.jdbc.Driver
- Username: {your_kylin_username} (預設: admin)
- Password: {your_kylin_password} (預設: KYLIN)