第一个建议:使用Saiku CE而不是 QlikView 进行报告。是查询 Mondrian OLAP、创建简单报告和快速测试的最佳选择。
- 报告工具:Saiku 2.6
- OLAP 模式:蒙德里安 3.8
- OLAP 模式工具:Pentaho Schema Workbench
- 数据仓库(或 DB):MySQL
- ETL 工具:Pentaho 数据集成(Kettle)
让我们描述一下解决方案的整个概念:
- [SOURCE DB]:您有一些数据源(数据库、其他系统),您希望将哪些数据用于报告。假设您将这些数据存储在 MySQL DB 中。
- [DWH]:要将数据用于报告,您需要创建一个数据仓库(星型模式),您可以在其中从
source db
.
- [ETL]:用于提取数据并将其
source db
加载到使用。DWH
ETL
- [ OLAP架构]:
OLAP schema
在DWH
. 它是一个 XML 文件,用于reporting applications
了解如何查询DWH
数据。它包含 OLAP 多维数据集、维度和度量的定义。
- [报表应用程序]:是一个知道如何以
DWH
OLAP方式查询数据的工具(它在OLAP模式中定义的多维数据集、维度和度量之上使用MDX查询)。您只需要定义 OLAP 模式位置和与 DWH 的连接即可使其工作。
请注意,如果您没有任何源数据库,则可以省略 and,目的只是为了证明一些功能概念source db
。ETL
对于 DWH(星型模式 DB),您需要 3 个包含这些列的表才能启动:
- 标准维度表【dim_supermarket】:
supermarket_key, supermarket_name, number_of_boxes, active, date_of_update
- 时间维度表[dim_date]:
date_key, day_of_month, week_of_year, month, year
- 事实表 [fact_sales]:
date_key
(INT), supermarket_key
(INT), sales
(DECIMAL)
..您可以在这篇文章的基础上使用 ETL (Kettle)填写日期维度
在 Pentaho Schema Wrokbench 中创建 OLAP 模式:
- 设置与 DWH 的数据库连接
- 在以下基础上创建立方体“销售”
fact_sales
- 创建名为“Sales”的度量(指向 中的
sales
列fact_sales
)
- 创建标准维度“超市”(添加表=
dim_supermarket
;在层次结构中填充主键= supermarket_key
;添加级别“超市名称”与列supermarket_name
)
- 创建时间维度“日期”(将维度类型设置为
TimeDimension
;添加表dim_date
;在层次结构中填充主键 = date_key
;添加级别“年” - 列year
,级别类型 = TimeYears
;添加级别“月” - 列month
,级别类型 = `TimeMonths; ...)
.. 现在您已经创建了具有一个多维数据集、一个度量和两个维度的 OLAP 模式
设置 Saiku 以使用您的 OLAP 模式和 DWH:
- 添加 Mondrian OLAP 模式文件:将 OLAP 模式 XML 文件复制到
saiku/tomcat/wabapps/saiku/WEB-INF/classes/
- 设置 OLAP 模式位置和 MySQL 连接到 thw DWH:编辑
saiku/tomcat/wabapps/saiku/WEB-INF/classes/saiku-datasources/test
,设置location=jdbc:mondrian:Jdbc=jdbc:mysql://localhost:3306/dwh;Catalog=res:test.xml;JdbcDrivers=com.mysql.jdbc.Driver;
- 添加 MySQL 连接器:例如
mysql-connector-java-5.1.17
到WEB-INF/lib
- 运行赛库。玩你的立方体。