pentaho - 调试BI堆栈: MySQL + Mondrian + Saiku server

标签 pentaho business-intelligence mondrian saiku

我正在尝试学习如何构建 BI 堆栈,但我一直无法理解该过程的哪一部分失败了:

  1. 设计星型架构:完成
  2. 将数据从我的 OLTP 数据库 (MySQL) 加载到我的明星数据库(也是 MySQL):使用 Pentaho 数据集成完成
  3. 为立方体创建 Mondrian XML 描述:使用 Mondrian Schema Workbench 完成
  4. 使用 Mondrian XML 描述和 MySQL 明星数据库设置正确配置的 Saiku 服务器:完成

结果:Saiku 中没有出现立方体。我不知道这可能来自哪个元素。第 2 步是正确的,因为我可以运行这部分。

这是我的星型架构:

CREATE TABLE IF NOT EXISTS `dim_date` (
  `date_id` int(11) NOT NULL AUTO_INCREMENT,
  `date` datetime DEFAULT NULL,
  `month` varchar(3) DEFAULT NULL,
  `year` varchar(4) DEFAULT NULL,
  PRIMARY KEY (`date_id`),
  KEY `idx_dim_date_lookup` (`date`,`month`,`year`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1;

CREATE TABLE IF NOT EXISTS `dim_sector` (
  `sector_id` int(11) NOT NULL AUTO_INCREMENT,
  `sector` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`sector_id`),
  KEY `idx_dim_sector_lookup` (`sector`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1;

CREATE TABLE IF NOT EXISTS `dim_size` (
  `size_id` int(11) NOT NULL AUTO_INCREMENT,
  `size` varchar(10) DEFAULT NULL,
  PRIMARY KEY (`size_id`),
  KEY `idx_dim_size_lookup` (`size`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1;

CREATE TABLE IF NOT EXISTS `fact_companies` (
  `fact_id` int(11) NOT NULL AUTO_INCREMENT,
  `count` int(11) NOT NULL,
  `date_id` int(11) NOT NULL,
  `sector_id` int(11) NOT NULL,
  `size_id` int(11) NOT NULL,
  PRIMARY KEY (`fact_id`),
  KEY `date_id` (`date_id`),
  KEY `sector_id` (`sector_id`),
  KEY `size_id` (`size_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1;

ALTER TABLE `fact_companies`
  ADD CONSTRAINT `fact_companies_ibfk_1` FOREIGN KEY (`date_id`) REFERENCES `dim_date` (`date_id`),
  ADD CONSTRAINT `fact_companies_ibfk_2` FOREIGN KEY (`sector_id`) REFERENCES `dim_sector` (`sector_id`),
  ADD CONSTRAINT `fact_companies_ibfk_3` FOREIGN KEY (`size_id`) REFERENCES `dim_size` (`size_id`);

我的 Mondrian XML 是(缺少大小):

<Schema name="New Schema1">
  <Cube name="companies_cube" visible="true" cache="true" enabled="true">
    <Table name="fact_companies">
    </Table>
    <Dimension type="TimeDimension" visible="true" foreignKey="date_id" name="date">
      <Hierarchy name="All" visible="true" hasAll="true" allMemberName="all" allMemberCaption="all" allLevelName="all">
        <Level name="Date" visible="true" table="dim_date" column="date" nameColumn="date" uniqueMembers="false">
        </Level>
        <Level name="Month" visible="true" table="dim_date" column="month" nameColumn="month" uniqueMembers="false">
        </Level>
        <Level name="Year" visible="true" table="dim_date" column="year" nameColumn="year" uniqueMembers="false">
        </Level>
      </Hierarchy>
    </Dimension>
    <Dimension type="StandardDimension" visible="true" foreignKey="sector_id" name="Sector">
      <Hierarchy name="Sector" visible="true" hasAll="true" primaryKey="sector_id" primaryKeyTable="sector_id">
        <Level name="Sector" visible="true" table="dim_sector" column="sector_id" nameColumn="sector" uniqueMembers="false">
        </Level>
      </Hierarchy>
    </Dimension>
    <Measure name="count companies" column="count" aggregator="sum" visible="true">
    </Measure>
  </Cube>
</Schema>

我与 Saiku 服务器的连接是通过以下方式完成的:

type=OLAP
name=test
driver=mondrian.olap4j.MondrianOlap4jDriver
location=jdbc:mondrian:Jdbc=jdbc:mysql://192.168.1.43/testdb;Catalog=res:test/testdb.xml;JdbcDrivers=com.mysql.jdbc.Driver;
username=test
password=test

我写这篇文章时考虑了提供的 foodmart 示例和 saiku 的文档。

我应该看哪里?我可以做什么来查看哪些内容不起作用?开发 BI 基础设施的专业方法是什么?

最佳答案

我没有 100% 正常运行,因为查询未能执行,但 saiku 现在已加载。

第一点:tomcat/saiku/catalina.out 包含用于调试的有趣日志信息。第二点:saiku 配置中的位置字符串确实指向丢失的文件,但这没有帮助。第三点:Mondrian的XML中应该提到维度表(正确的版本如下)。

<Schema name="New Schema1">
  <Cube name="companies_cube" visible="true" cache="true" enabled="true">
    <Table name="fact_companies">
    </Table>
    <Dimension type="TimeDimension" visible="true" foreignKey="date_id" highCardinality="false" name="date">
      <Hierarchy name="Date" visible="true" hasAll="true" allMemberName="all dates" allMemberCaption="all dates" allLevelName="all dates">
        <Table name="dim_date">
        </Table>
        <Level name="Year" visible="true" table="dim_date" column="year" nameColumn="year" type="String" uniqueMembers="false" levelType="TimeYears" hideMemberIf="Never">
        </Level>
        <Level name="Month" visible="true" table="dim_date" column="month" nameColumn="month" type="String" uniqueMembers="false" levelType="TimeMonths" hideMemberIf="Never">
        </Level>
        <Level name="Date" visible="true" table="dim_date" column="date" nameColumn="date" type="String" uniqueMembers="false" levelType="TimeDays" hideMemberIf="Never">
        </Level>
      </Hierarchy>
    </Dimension>
    <Dimension type="StandardDimension" visible="true" foreignKey="sector_id" highCardinality="false" name="Sector">
      <Hierarchy name="Sector" visible="true" hasAll="true" allMemberName="all sector" allMemberCaption="all sector" allLevelName="all sector" primaryKey="sector_id">
        <Table name="dim_sector" alias="">
        </Table>
        <Level name="Sector" visible="true" table="dim_sector" column="sector_id" nameColumn="sector" type="String" uniqueMembers="false" levelType="Regular" hideMemberIf="Never">
        </Level>
      </Hierarchy>
    </Dimension>
    <Measure name="count companies" column="count" aggregator="sum" visible="true">
    </Measure>
  </Cube>
</Schema>

关于pentaho - 调试BI堆栈: MySQL + Mondrian + Saiku server,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14167137/

相关文章:

business-intelligence - pentaho BA 服务器和 Bi 服务器

mysql - Pentaho 作业通信失败

php - Pentaho 报表设计器 mySQl 查询选择

java - 在 Java 上运行 PDI Kettle - Mongodb 步骤缺少插件

excel - MDX : What is Set Expression in Filter function?

java - Java/Groovy 中是否有可用的临时报告生成器库?根据选择的维度/度量生成 SQL 查询

translation - Mondrian saiku - vertica查询翻译错误

azure - 防止 Azure SQL 数据仓库中出现重复数据的策略

java - Mondrian - 设置数据库模式定义

olap - 聚合表来处理事实表中的不同计数