维度-退化维度

刚接触Mondrian,不熟悉如果只有一个事实表,没有单独的维度表,其中事实表就包含维度信息的怎么做Schema文件。一开始做了很多自关联,导致性能下降明显。基本多维度查询速度就很慢,基本出不来了。

其实这种同在事实表的,可以用退化维度来实现即可。

退化维度是这样的一种维度:由于它过于简单而不值得为它创建一个维表。考虑下面的事实表:

假设我们为支付方式列的值创建一个维表:

支付方式
Credit
Cash
ATM

这个维表没什么意义,它只有三个取值,没有额外的信息,并产生了额外的连接开销。你可以创建一个退化维度,只要声明一个维度却不指定表,Mondrian 会认为这些列是来自事实表。

<Cube name="Checkout"><Table name="checkout"><Dimension name="Payment method"><Hierarchy hasAll="true"><!-- 这里没有Table 元素 --><Level name="Payment method" column="payment_method" uniqueMembers="true"/></Hierarchy></Dimension>
<!-- 其他维度和度量-->
</Cube>

注意:

由于没有连接,Dimension 的foreignKey 属性是不必要的,并且Hierarchy 元素没有Table 子元素或primaryKey 属性。

上传Saiku后分析速度也块了。

Schema文件

<Schema name="FinSchema" description="财务模式" measuresCaption="财务模式"><Cube name="BalanceCube" caption="资产负债Cube" visible="true" description="资产负债Cube" cache="true" enabled="true"><Table name="资产负债视图" schema="dbo"></Table><Dimension type="StandardDimension" visible="true" highCardinality="false" name="组织" caption="组织编码"><Hierarchy visible="true" hasAll="true" allMemberName="所有组织" allMemberCaption="所有组织"><Level name="组织编码" visible="true" column="组织编码" nameColumn="组织名称" type="String" uniqueMembers="false" levelType="Regular" hideMemberIf="Never"></Level><Level name="组织名称" visible="true" column="组织名称" type="String" uniqueMembers="false" levelType="Regular" hideMemberIf="Never"></Level></Hierarchy></Dimension><Dimension type="StandardDimension" visible="true" highCardinality="false" name="年"><Hierarchy name="YearHierarchy" visible="true" hasAll="true" allMemberName="所有年" allMemberCaption="所有年"><Level name="年" visible="true" column="年" type="Integer" uniqueMembers="false" levelType="Regular" hideMemberIf="Never"></Level><Level name="期间" visible="true" column="期间" type="Integer" uniqueMembers="false" levelType="Regular" hideMemberIf="Never"></Level></Hierarchy></Dimension><Dimension type="StandardDimension" visible="true" highCardinality="false" name="账簿"><Hierarchy name="BookHierarchy" visible="true" hasAll="true" allMemberName="所有账簿" allMemberCaption="所有账簿"><Level name="账簿名称" visible="true" column="账簿名称" type="String" uniqueMembers="false" levelType="Regular" hideMemberIf="Never"></Level></Hierarchy></Dimension><Dimension type="StandardDimension" visible="true" highCardinality="false" name="项目分类"><Hierarchy name="ItemTypeHierarchy" visible="true" hasAll="true" allMemberName="所有分类" allMemberCaption="所有分类"><Level name="项目分类" visible="true" column="项目分类" type="String" uniqueMembers="false" levelType="Regular" hideMemberIf="Never"></Level></Hierarchy></Dimension><Dimension type="StandardDimension" visible="true" highCardinality="false" name="项目名称"><Hierarchy name="ItemHierarchy" visible="true" hasAll="true" allMemberName="所有项目" allMemberCaption="所有项目"><Level name="项目名称" visible="true" column="项目名称" type="String" uniqueMembers="false" levelType="Regular" hideMemberIf="Never"></Level></Hierarchy></Dimension><Measure name="年初数" column="年初数" aggregator="sum" visible="true"></Measure><Measure name="期末数" column="期末数" aggregator="sum" visible="true"></Measure></Cube>
</Schema>

维度退化(数据仓库)相关推荐

  1. 大数据--数据仓库--维度退化

    2.3 维度退化         不可能将所有与业务相关的维度分类到一个紧凑的表集合中.类似这样的情况,将一个或者多个维度存储到事实表中是合适的选择.采用这种方法,存储事实表中的维度列被称为退化维度, ...

  2. 微软BI 之SSAS 系列 - 多维数据集维度用法之二 事实维度(退化维度 Degenerate Dimension)...

    这篇文章是基于上一篇 SSAS 系列 - 多维数据集维度用法之一 引用维度 Referenced Dimension 继续讲解多维数据集维度用法中的事实维度. 事实维度,顾名思义就是把事实表 Fact ...

  3. 维度模型数据仓库(十四) —— 杂项维度

    (五)进阶技术         9. 杂项维度         本篇讨论杂项维度.简单地说,杂项维度就是一种包含的数据具有很少可能值的维度.例如销售订单,它可能有很多离散数据(yes-no这种类型的值 ...

  4. 维度模型数据仓库(十五) —— 多重星型模式

    (五)进阶技术         10. 多重星型模式         从(五)进阶技术1.  "增加列"开始,已经通过增加列和表扩展了数据仓库,在(五)进阶技术5. "快 ...

  5. 数据仓库工具箱:维度建模权威指南3

    数据仓库工具箱:维度建模权威指南3 零售业务 维度模型设计的4步 选择业务过程 声明粒度 确定维度(列名带有key后缀) 确定事实 零售业务案例研究 可加事实 不可加事实 维度表设计细节 日期维度(还 ...

  6. 数据仓库(基础篇)——基于维度建模思想

      大家好,我是不温卜火,是一名计算机学院大数据专业大三的学生,昵称来源于成语-不温不火,本意是希望自己性情温和.作为一名互联网行业的小白,博主写博客一方面是为了记录自己的学习过程,另一方面是总结自己 ...

  7. 数据仓库-基础知识(维度建模)

    一.数据仓库概述 1.1 数据仓库定义 数据仓库:Data Warehouse,是为企业所决策制定过程,提供所有支持类型的数据集合.用于分析性报告和决策支持.数仓是一个面向主题.集成的.相对稳定.反应 ...

  8. 浅谈数据仓库维度建模

    浅谈数据仓库维度建模流程 谈到Big Data就离不开数据仓库.数据集市等概念,而谈到数据仓库.数据集市,就又离不开数据仓库设计的方法,维度建模则是其中的典型.与维度建模相对立的则是范式建模,范式建模 ...

  9. 数据仓库之建模 维度表 事实表 维度建模三种模式 如何维度建模缓慢变化的维度 建模体系

    数据仓库之建模 ER建模 维度表和事实表 维度建模三种模式 如何维度建模 什么是缓慢变化的维度 最常见的三种数据仓库建模体系 联机分析处理 OLAP 元数据(Metadata) 数据仓库建模包含ER建 ...

最新文章

  1. IPsec ××× 配置實例
  2. 美国国家科学委员会发布学术研发报告
  3. 电磁炉线圈初步谐振实验 - 无线信标线圈
  4. html让元素纵向排列,html – 如何使元素排列到父元素的外边缘
  5. 转 Cocos2d-x3.0模版容器详解之三:cocos2d::Value
  6. F5 LTM设备降级实战
  7. /scriptalert(/xss/)/script
  8. LogViewer超大文本浏览工具
  9. java 字符串赋值_灵魂拷问:为什么 Java 字符串是不可变的?
  10. matlab输入excel高版本,『matlab读取excel指定列』excel中大量数据如何导入matlab当中?超过1000个数据无法一个一个输入...
  11. c - 比较字符串的大小
  12. 基于python的在线考试系统-Python在线考试系统防作弊功能的思路和实现
  13. lj245a引脚功能图_CA3140中文资料-引脚图及功能
  14. 谷歌地图开放俄军事设施高分辨率卫星图
  15. 查看计算机软件配置,最齐全的查看电脑配置指令集锦 查看电脑配置软件推荐【图文】...
  16. 一个不错的免费打电话的程序
  17. 基于tensorflow2.0的深度学习 一
  18. 编程将输入的百分制成绩转换为五分制成绩输出
  19. 解读SPSS重复测量方差分析的检验结果
  20. 油罐车起火造成损失和伤亡?资产监测设备可远程监测油罐车运输!

热门文章

  1. java hdfs导入hbase_使用BulkLoad批量导入数据到HBase中
  2. win7计算机ping不通,win7系统局域网中ping不通本机的解决方法
  3. python有什么优秀功能_Python都有什么强大的功能
  4. php 20分钟以前,php返回相对时间(如:20分钟前,3天前)的方法_PHP
  5. Python对命令提示符cmd以及操作系统的一些操作
  6. Java二叉搜索树转循环链表,关于java:二叉搜索树转换为单向链表interview1712
  7. java解析html_java中几种解析html的工具
  8. debian 10安装ssh依赖openssh-client版本错误的解决办法及开启ssh远程登录设置
  9. 武汉三首,记录备忘,写的不好,以后再改
  10. [Web 前端] CSS篇之 4. position 和 display 的取值和各自的意思和用法