最近一直忙于熟悉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="信号机流量分析" cache="true" enabled="true">
<Table name="FACT_CLL_XHJ">
</Table>
<Dimension type="StandardDimension" foreignKey="DEV" highCardinality="false" name="RoadNum" caption="路口编号">
<Hierarchy name="路口编号" hasAll="true" allMemberName="所有路口" 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="时间点">
<Hierarchy name="时间" hasAll="true" allMemberName="所有时间" 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="车道编号">
<Hierarchy name="车道编号" hasAll="true" allMemberName="所有车道编号" 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="流通量" column="CLL" aggregator="sum" visible="true">
</Measure>
<CalculatedMember name="FlowCount" caption="流通量计算" formula="sum([Measures].[流通量])" 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>
这样就可以正常的使用了。
分享到:
相关推荐
例如,时间维度可能有年、季度、月的层次,每个层次又有相应的级别。开发者可以通过`Hierarchy`和`Level`类来构建这些结构。 5. **Measures**: 度量是可计算的数值,如销售额、利润等。在mondrian中,`Measure`类...
例如,你可以定义一个时间维度,包括年、季度和月份层次;度量可能包括总销售额和平均销售额。创建Cube的过程需要理解业务需求,并将这些需求转化为多维模型。 接下来,我们要讨论ROLAP(关系型在线分析处理)。 ...
4. **创建R立方体**:mondrian通过XML文件定义数据仓库和立方体结构,即Schema XML文件。你需要根据实际需求编写或修改这个文件,定义表、维度、度量等。 5. **运行示例**:mondrian提供了一些示例查询来测试配置...
立方体由维度(Dimensions)和度量(Measures)组成,维度代表数据的不同方面,如时间、地点等,度量则是可以度量的数值,如销售额、利润等。用户通过MDX语句在这些维度和度量之间进行交互,获取所需信息。 **二、...
Schema Workbench是Mondrian提供的一个图形化工具,用于创建和编辑Mondrian的XML schema文件。通过这个工具,开发者可以直观地设计多维数据模型,包括维度、层次、度量等,并能直接预览MDX查询结果,极大地简化了...
在 mondrian 模式中,每个维度由一个或多个层次构成,层次则包含一系列成员(如时间维度中的年、季度、月份)。 - **层次 (Hierarchies)**:层次在维度内提供了一种组织结构,允许用户沿着特定路径(如时间层次的年...
配置Mondrian与Oracle的连接涉及创建数据源(JDBC连接),定义Mondrian XMLA模式文件,以及在应用中设置相应的连接参数。这通常涉及到设置数据库URL、用户名、密码以及必要的JDBC驱动。 4. **功能介绍** - **多维...
- **时间维度** 是OLAP分析中最常见的维度之一,可以按照不同的粒度(年、季度、月等)进行分析。 ##### 3.8 多个层次结构 - 支持在同一维度中定义多个层次结构,从而能够从不同角度进行数据分析。 ##### 3.9 ...
【Mondrian是什么】 Mondrian是一个开源的Java实现...通过以上内容,我们可以看到Mondrian作为OLAP解决方案,为Java Web项目提供了强大的分析能力,使得开发人员能够快速构建数据密集型应用,提供深度洞察和报告功能。
1. **创建维度**:维度代表了分析数据的角度,比如时间、地点、产品等。在Schema Workbench中,你可以定义每个维度的属性和层次,层次则定义了如何从底层细节数据导航到高层次的汇总数据。 2. **定义度量**:度量是...
- Cube 文件是 Mondrian 中的核心配置文件,用于定义多维数据库的逻辑模型、数据立方体、维度和成员等,并将其映射到关系数据库中的物理模型上。 #### 三、Cube文件配置详解 **1. 添加数据立方体(Cube)** - ...
Mondrian支持角色和安全性配置,可以根据用户的角色限制其查看的维度、层次和成员。 3. 动态参数:在报表中,用户可能需要输入某些参数来过滤查询结果。开发人员需要在MDX查询中嵌入动态参数,并在Web界面提供参数...
5. **维度成员**:维度的成员是构成维度的最小单位,如时间维度可能包括年、月、日等成员。 6. **集合操作**:MDX支持对集合进行各种操作,如交集、并集、差集等,使得数据筛选和聚合更为强大。 7. **计算成员**:...
一个维度可以有多个级别,例如年、月、日这样的时间维度。 ```xml ``` 这里定义了一个名为“STORAGE_NAME”的级别,它对应于表中的“STORAGE_NAME”列。 ##### Measure标签 `<Measure>`标签定义了度量值,即...
文档提到了“all”成员、时间维度、级别顺序和显示、多重层次结构、退化维度和内联表的概念。 4. MDX与Mondrian MDX(多维表达式)是用于查询和操作OLAP数据的标准查询语言。文档解释了MDX的基本概念,包括MDX的...
Schema Manager是mondrian的核心组件,负责加载和管理Schema对象,它提供了创建、修改和验证Schema的接口。 2.3. 包mondrian.calc 这个包包含了mondrian的计算逻辑,包括表达式树的构造和计算。它提供了对基本和...
2. Mondrian插件的安装:教程接着介绍了如何安装和测试Mondrian插件,创建一个简单的"Simple"项目,并通过Eclipse插件创建一个新的Schema,以及如何创建一个*.mondrian文件。 3. 创建简单的立方体(Cube):本部分...
如何创建交互式的OLAP分析,与mysql和mondrian打通 Pentaho Introduction Mondrian features and architecture Schemas and queries olap4j Roadmap Case Studies Business Intelligence suite Q & A
2. 时间函数:如PERIODSTODATE、SAMEPERIODLASTYEAR等,帮助处理时间维度的数据。 3. 阶段函数:如STRTOSET、HEAD、TAIL等,用于处理成员集合。 4. 转换函数:如IIF、CASE等,用于条件判断和数据转换。 5. 其他高级...