zoukankan      html  css  js  c++  java
  • 结合使用saiku、mondrian workbentch建立多维查询报表

    1、简介

    前几篇博客已经介绍了saiku、mondrian、MDX和模式文件他们之间的关系,那么如何将它们串联起来,供产品人员使用哪?下面咱们一步一步的实现

    2、建立数据表

    建表语句参考:http://www.cnblogs.com/liqiu/p/5202708.html

    模式图如下:

    这是一个典型的事实表+维度表的星型数据结构!

    3、建立模式文件

    这里就不说具体细节啦,直接给出xml文件内容,感兴趣的同学可以直接载入进去即可

    <Schema name="SaleSchema">
      <Cube name="SalesCube" visible="true" cache="true" enabled="true">
        <Table name="sale" schema="public">
        </Table>
        <Dimension type="StandardDimension" visible="true" foreignKey="cusid" highCardinality="false" name="dimCustomer">
          <Hierarchy visible="true" hasAll="true" allMemberName="allCustomer" primaryKey="cusid">
            <Table name="customer" schema="public">
            </Table>
            <Level name="gender" visible="true" column="gender" type="String" uniqueMembers="true" levelType="Regular" hideMemberIf="Never">
            </Level>
          </Hierarchy>
        </Dimension>
        <Dimension type="StandardDimension" visible="true" foreignKey="proid" highCardinality="false" name="dimProductType">
          <Hierarchy visible="true" hasAll="true" allMemberName="allProduct" allMemberCaption="allProductTitle" primaryKey="proid" primaryKeyTable="product">
            <Join leftKey="proid" rightKey="protypeid">
              <Table name="product" schema="public">
              </Table>
              <Table name="producttype" schema="public">
              </Table>
            </Join>
            <Level name="productId" visible="true" table="product" column="proid" nameColumn="proname" type="String" uniqueMembers="true" levelType="Regular" hideMemberIf="Never">
            </Level>
            <Level name="productTypeId" visible="true" table="producttype" column="protypeid" nameColumn="protypename" type="String" uniqueMembers="true" levelType="Regular" hideMemberIf="Never">
            </Level>
          </Hierarchy>
        </Dimension>
        <Measure name="saleNumber" column="num" aggregator="sum" caption="NumTitle" visible="true">
        </Measure>
        <Measure name="saleAmount" aggregator="sum" caption="allSaleTitle" visible="true">
          <MeasureExpression>
            <SQL dialect="generic">
              <![CDATA[(unitprice*num)]]>
            </SQL>
          </MeasureExpression>
        </Measure>
        <CalculatedMember name="avgPrice" caption="avgPriceTitle" dimension="Measures" visible="true">
          <Formula>
            <![CDATA[[Measures].saleAmount/[Measures].saleNumber]]>
          </Formula>
          <CalculatedMemberProperty name="formatString" value="$#,##0.00">
          </CalculatedMemberProperty>
        </CalculatedMember>
      </Cube>
    </Schema>

    4、查询数据

    写如下MDX语句验证数据准确性

    select
           {[Measures].saleNumber,[Measures].saleAmount,[Measures].avgPrice}
    on columns,
           {([dimProductType].[allProduct],[dimCustomer].[allCustomer])}
    on rows
    from [salesCube]

    结果如下:

    5、上传模式文件

    打开saiku,上传模式文件即可

    如果如图:

  • 相关阅读:
    golang 多个worker正常关闭的示例
    golang调试工具Delve
    Golang & GitLab-CI 详细实例步骤
    [git] 能在关键时刻救命的git指令
    高效实时数据排行榜实现
    [Golang] 编译程序时打上git提交信息标记
    [Golang] 开源一个帧同步服务器
    Golang etcd服务注册与发现
    Golang pprof详解
    shell 递归枚举文件并操作
  • 原文地址:https://www.cnblogs.com/liqiu/p/5205687.html
Copyright © 2011-2022 走看看