`
successfulroof
  • 浏览: 74345 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

解决Mondrian 创建时间维度Hours的难题

    博客分类:
  • J2ee
 
阅读更多

最近一直忙于熟悉Mondrian,其中也遇到了一下问题

 

其中一个比较麻烦的就是这样的

 

我们的时间维度里面包含有Year、Quarter、Month、Day、Hour

 

其中前面几个是可以正常的钻取的(Year、Quarter、Month、Day)

 

但是当从Day 2011-07-5 钻取到Hours的时候就出了问题,数据只出来一条并且是 2011-07-05  00:00:00。

 

看看数据库中的Hours这个字段是Date类型的,而生成的MDX语句如下:


select "DIM_PUB_HOUR"."HOUR" as "c0" from "DIM_PUB_HOUR" "DIM_PUB_HOUR"
where ("DIM_PUB_HOUR"."DAY" = DATE '2011-06-08' and "DIM_PUB_HOUR"."MONTH" = '2011-06' and "DIM_PUB_HOUR"."YEAR" = '2011')
and "DIM_PUB_HOUR"."HOUR" = DATE '2011-06-08' group by "DIM_PUB_HOUR"."HOUR" order by "DIM_PUB_HOUR"."HOUR" ASC

 

<Cube name="&#20449;&#21495;&#26426;&#27969;&#37327;&#20998;&#26512;" cache="true" enabled="true">
    <Table name="FACT_CLL_XHJ">
    </Table>
    <Dimension type="StandardDimension" foreignKey="DEV" highCardinality="false" name="RoadNum" caption="&#36335;&#21475;&#32534;&#21495;">
      <Hierarchy name="&#36335;&#21475;&#32534;&#21495;" hasAll="true" allMemberName="&#25152;&#26377;&#36335;&#21475;" primaryKey="BH">
        <Table name="DIM_CLL_DEV">
        </Table>
        <Level name="RoadNum" column="NAME" type="String" uniqueMembers="true" levelType="Regular" hideMemberIf="Never">
        </Level>
      </Hierarchy>
    </Dimension>
    <Dimension type="TimeDimension" foreignKey="TIME_ID" highCardinality="false" name="TimePoint" caption="&#26102;&#38388;&#28857;">
      <Hierarchy name="&#26102;&#38388;" hasAll="true" allMemberName="&#25152;&#26377;&#26102;&#38388;" primaryKey="XH">
        <Table name="DIM_PUB_HOUR">
        </Table>
        <Level name="Year" column="YEAR" type="String" uniqueMembers="true" levelType="TimeYears" hideMemberIf="Never">
        </Level>
        <Level name="Month" column="MONTH" nameColumn="MONTH_NAME" type="String" uniqueMembers="false" levelType="TimeMonths" hideMemberIf="Never">
        </Level>
        <Level name="Day" column="DAY" type="Date" uniqueMembers="false" levelType="TimeDays" hideMemberIf="Never">
        </Level>
        <Level name="Hours" column="HOURS"  uniqueMembers="false" levelType="TimeHours" hideMemberIf="Never">
        </Level>
      </Hierarchy>
    </Dimension>
    <Dimension type="StandardDimension" foreignKey="WAY" highCardinality="false" name="CarRoadNum" caption="&#36710;&#36947;&#32534;&#21495;">
      <Hierarchy name="&#36710;&#36947;&#32534;&#21495;" hasAll="true" allMemberName="&#25152;&#26377;&#36710;&#36947;&#32534;&#21495;" primaryKey="BH">
        <Table name="DIM_CLL_WAY">
        </Table>
        <Level name="CarRoadNum" column="BH" type="String" uniqueMembers="true" levelType="Regular" hideMemberIf="Never">
        </Level>
      </Hierarchy>
    </Dimension>
    <Measure name="&#27969;&#36890;&#37327;" column="CLL" aggregator="sum" visible="true">
    </Measure>
    <CalculatedMember name="FlowCount" caption="&#27969;&#36890;&#37327;&#35745;&#31639;" formula="sum([Measures].[&#27969;&#36890;&#37327;])" dimension="Measures" visible="true">
    </CalculatedMember>
  </Cube>

 

很明显上面只执行了一个查询 0 点时候的数据,其他小时都没有查询,去网上查了一下。

才知道Mondriad暂时对这个小时还不支持。解决办法:

 

1.把数据库所有时间维类型都改成numeric类型的,把他们当做普通的维度来做

 

2.在表中新增一个字段 Hours_name 是 numeric  其中的值为 0-23 ,然后 用

 

 <Level name="Hours" column="HOUR_NAME" type="Numeric" uniqueMembers="false" levelType="TimeHours" hideMemberIf="Never">
        </Level>

这样就可以正常的使用了。

分享到:
评论

相关推荐

    mondrian-api.zip

    例如,时间维度可能有年、季度、月的层次,每个层次又有相应的级别。开发者可以通过`Hierarchy`和`Level`类来构建这些结构。 5. **Measures**: 度量是可计算的数值,如销售额、利润等。在mondrian中,`Measure`类...

    数据分析工具mondrian教程

    例如,你可以定义一个时间维度,包括年、季度和月份层次;度量可能包括总销售额和平均销售额。创建Cube的过程需要理解业务需求,并将这些需求转化为多维模型。 接下来,我们要讨论ROLAP(关系型在线分析处理)。 ...

    mondrian运行源码配置方法

    4. **创建R立方体**:mondrian通过XML文件定义数据仓库和立方体结构,即Schema XML文件。你需要根据实际需求编写或修改这个文件,定义表、维度、度量等。 5. **运行示例**:mondrian提供了一些示例查询来测试配置...

    Mondrian实例

    立方体由维度(Dimensions)和度量(Measures)组成,维度代表数据的不同方面,如时间、地点等,度量则是可以度量的数值,如销售额、利润等。用户通过MDX语句在这些维度和度量之间进行交互,获取所需信息。 **二、...

    联机分析olap之mondrian

    Schema Workbench是Mondrian提供的一个图形化工具,用于创建和编辑Mondrian的XML schema文件。通过这个工具,开发者可以直观地设计多维数据模型,包括维度、层次、度量等,并能直接预览MDX查询结果,极大地简化了...

    mondrian的基本模式

    在 mondrian 模式中,每个维度由一个或多个层次构成,层次则包含一系列成员(如时间维度中的年、季度、月份)。 - **层次 (Hierarchies)**:层次在维度内提供了一种组织结构,允许用户沿着特定路径(如时间层次的年...

    Mondrian+Oracle 实例

    配置Mondrian与Oracle的连接涉及创建数据源(JDBC连接),定义Mondrian XMLA模式文件,以及在应用中设置相应的连接参数。这通常涉及到设置数据库URL、用户名、密码以及必要的JDBC驱动。 4. **功能介绍** - **多维...

    Mondrian 3.0 Technical Guide

    - **时间维度** 是OLAP分析中最常见的维度之一,可以按照不同的粒度(年、季度、月等)进行分析。 ##### 3.8 多个层次结构 - 支持在同一维度中定义多个层次结构,从而能够从不同角度进行数据分析。 ##### 3.9 ...

    如何将Mondrian用于web项目.ppt

    【Mondrian是什么】 Mondrian是一个开源的Java实现...通过以上内容,我们可以看到Mondrian作为OLAP解决方案,为Java Web项目提供了强大的分析能力,使得开发人员能够快速构建数据密集型应用,提供深度洞察和报告功能。

    mondrian设置schema3.0工具

    1. **创建维度**:维度代表了分析数据的角度,比如时间、地点、产品等。在Schema Workbench中,你可以定义每个维度的属性和层次,层次则定义了如何从底层细节数据导航到高层次的汇总数据。 2. **定义度量**:度量是...

    Mondrian介绍及配置.pdf

    - Cube 文件是 Mondrian 中的核心配置文件,用于定义多维数据库的逻辑模型、数据立方体、维度和成员等,并将其映射到关系数据库中的物理模型上。 #### 三、Cube文件配置详解 **1. 添加数据立方体(Cube)** - ...

    Mondrian用于web项目

    Mondrian支持角色和安全性配置,可以根据用户的角色限制其查看的维度、层次和成员。 3. 动态参数:在报表中,用户可能需要输入某些参数来过滤查询结果。开发人员需要在MDX查询中嵌入动态参数,并在Web界面提供参数...

    Pentaho多维分析(Mondrian)使用指南

    5. **维度成员**:维度的成员是构成维度的最小单位,如时间维度可能包括年、月、日等成员。 6. **集合操作**:MDX支持对集合进行各种操作,如交集、并集、差集等,使得数据筛选和聚合更为强大。 7. **计算成员**:...

    mondrian报表技术概要

    一个维度可以有多个级别,例如年、月、日这样的时间维度。 ```xml ``` 这里定义了一个名为“STORAGE_NAME”的级别,它对应于表中的“STORAGE_NAME”列。 ##### Measure标签 `&lt;Measure&gt;`标签定义了度量值,即...

    mondrian-3.0-technical-guide_2.pdf

    文档提到了“all”成员、时间维度、级别顺序和显示、多重层次结构、退化维度和内联表的概念。 4. MDX与Mondrian MDX(多维表达式)是用于查询和操作OLAP数据的标准查询语言。文档解释了MDX的基本概念,包括MDX的...

    mondrian源码分析与说明.pdf

    Schema Manager是mondrian的核心组件,负责加载和管理Schema对象,它提供了创建、修改和验证Schema的接口。 2.3. 包mondrian.calc 这个包包含了mondrian的计算逻辑,包括表达式树的构造和计算。它提供了对基本和...

    Tutorial_Mondrian.pdf

    2. Mondrian插件的安装:教程接着介绍了如何安装和测试Mondrian插件,创建一个简单的"Simple"项目,并通过Eclipse插件创建一个新的Schema,以及如何创建一个*.mondrian文件。 3. 创建简单的立方体(Cube):本部分...

    如何创建交互式的OLAP分析,与mysql和mondrian打通案例分析

    如何创建交互式的OLAP分析,与mysql和mondrian打通 Pentaho Introduction Mondrian features and architecture Schemas and queries olap4j Roadmap Case Studies Business Intelligence suite Q & A

    mondrian支持的函数以及schame元素属性

    2. 时间函数:如PERIODSTODATE、SAMEPERIODLASTYEAR等,帮助处理时间维度的数据。 3. 阶段函数:如STRTOSET、HEAD、TAIL等,用于处理成员集合。 4. 转换函数:如IIF、CASE等,用于条件判断和数据转换。 5. 其他高级...

Global site tag (gtag.js) - Google Analytics