Mondrian4在Pentaho BA服务器自定义sql构建Schema模型

蒙德里安4在Pentaho BA服务器

 

先决条件

如果您使用Pentaho CE(社区版),首先必须在BI Server中启用Mondrian 4的支持。当我使用EE(企业版,版本5.2)时,我将无法帮助您解决此问题。但是,以下文章可能会有所帮助:Mondrian 4,OSGi In Pentaho 5.1 CE。一旦您满足所有先决条件,或者如果您使用的是Enterprise Edition,那么您就可以了。

 

创建Mondrian 4架构

这是一个有点棘手的部分,因为暂时没有Mondrian 4的官方文档(至少这是他们的支持所说的)。不过,您将能够在线找到一些示例,这些示例可以为您提供有关新架构的一般概念。而且我告诉你,自第3版以来它发生了很大变化!我发现在这个问题上特别有用的资源很少:

将两个物理表连接到一个事实表中

为什么我们甚至在我们的项目中开始研究Mondrian 4是因为它提供了一些关于Mondrian 3的附加功能。我们特别在以前版本的模式中遗漏的一件事是将两个物理表连接成一个事实表的可能性。您可以为维度执行此操作,但事实表不可能。这可以通过Mondrian 4毫无问题地实现。

假设我们有一个如下所示的数据库模式。使用两个表,应将其视为一个逻辑事实表和维度表。

现在我们要做的是创建一个Mondrian 4模式,它将有一个事实表和一个维度表。但是,正如您可以猜到的那样,事实表将包含来自两个物理表的值。我们现在来看看架构。

Mondrian 4 Schema

XHTML

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

<?xml version="1.0"?>

<Schema name="Example schema" metamodelVersion="4.0" xmlns="http://thejavatar.com"

        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

        xsi:schemaLocation="http://thejavatar.com file:/C:/mondrian4.xsd">

    <Cube name="Example cube" visible="true" cache="false" enabled="true">

        <MeasureGroups>

            <MeasureGroup table="FACT" name="MEASURES">

                <Measures>

<Measure name="MEASURE" aggregator="sum" column="MEASURE"/>

<Measure name="MEASURE_2" aggregator="sum" column="MEASURE_2"/>

                </Measures>

<DimensionLinks>

                    <ForeignKeyLink dimension="Dim" foreignKeyColumn="DIM_ID"/>

                </DimensionLinks>

            </MeasureGroup>

        </MeasureGroups>

        <Dimensions>

            <Dimension name="Dim" table="DIMENSION" key="ID">

                <Attributes>

                    <Attribute name="DIM_1" keyColumn="DIM_1"/>

<Attribute name="ID" keyColumn="ID" visible="false"/>

                </Attributes>

            </Dimension>

        </Dimensions>

    </Cube>

    <PhysicalSchema>

    <Query alias="FACT">

            <ExpressionView>

                <SQL dialect="generic">

                    select f.*, f2.measure_2 from FACT f INNER JOIN FACT2 f2 ON f.id = f2.fact_id

                </SQL>

            </ExpressionView>

        </Query>

<Table name="DIMENSION">

            <Key>

                <Column name="ID"/>

            </Key>

        </Table>

    </PhysicalSchema>

</Schema>

正如您所看到的,我使用了一种非常简单的方法来实现这一目标。使用SQL标记告诉Mondrian在需要检索事实表的数据时应该使用的确切查询。现在我不能多说这个解决方案的性能,也不能说使用一些更复杂的Mondrian 4技术来解决这个问题。

将架构上传到服务器

现在您有了Mondrian 4架构文件,您需要将其上传到服务器。不幸的是,现在你不能像创建新数据源时那样通常使用Mondrian 3架构。不过,您仍然可以使用文件浏览器通过BI服务器中的GUI上载文件。在我的情况下,我已将文件Mondrian4Schema.xml直接上传到/ public文件夹。

为Mondrian 4设置数据源

现在架构文件在服务器上,我们可以为报告创建数据源。要做到这一点,我们需要编辑olap4j.properties文件,位于下../pentaho/server/biserver-ee/pentaho-solutions/system

Adding new datasource through olap4j.properties file

 

1

2

3

4

5

 

customds.name=Mondrian 4 Test

customds.className=org.pentaho.platform.plugin.services.connections.PentahoSystemDriver

customds.connectString=jdbc:mondrian4:Catalog=solution:/public/Mondrian4Schema.xml;Jdbc=jdbc:oracle:thin:@database;JdbcUser=user;JdbcPassword=password

 

最关键的是配置的第三行,我希望它几乎是不言自明的。基本上,您应该只在JdbcJdbcUserJdbcPassword之后的目录和数据库设置之后更改模式的位置,并将其余部分保留在此行中。

使用Mondrian 4创建报告

现在,当您创建新的Analysis报告时,您应该能够在标准数据源旁边的数据源选择期间看到Mondrian 4 Test

当我们将一些样本数据插入数据库时​​。

1

2

3

4

5

 

insert into dimension values(1, 'DIM')

insert into fact values(1,10,1)

insert into fact2 values(1,1,20)

 

该报告如下所示。

启用日志

您可能会惊讶地看不到查询的日志在其通常位置对Mondrian 4运行。要启用它们,您需要编辑位于../pentaho/server/biserver-ee/pentaho-solutions/system/osgi中的log4j.xml文件,必要的配置应该已经存在并且只需要取消注释。

外部链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值