`
ghost_fly
  • 浏览: 111015 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

Oracle BIEE 中的时间维与时间轴函数

阅读更多
累计、同比、环比是 BI 项目中常用的分析方法。本文讲述如何利用 Oracle BIEE 的时间维(Time Dimension)及时间轴函数(Time Series Conversion Function)实现累计、同比、环比计算。本文使用的示例数据可以通过此链接下载:http://www.zw1840.com/。 如果你不了解如何创建 Oracle BIEE 资料库,请参考之前的文章 Hello BIEE
 

目录

时间轴函数概述

    累计、同比、环比是 BI 项目中常用的分析方法。如果采用关系型数据库,直接通过 SQL 语句进行这样的计算是比较麻烦的。Oracle BIEE 提供的解决方法是时间轴函数。时间轴函数是位于逻辑模型层内的函数,使用时间轴函数能够定义出“去年同期值”或“本年累计值”之类的与时间相关的计算字段。Oracle BIEE 现在支持两个时间轴函数:
  • Ago:从当前时间起回溯用户指定的 n 个时间段,返回当时的度量值。
  • ToDate:从用户指定时间段的起点开始,到当前时间为止,计算度量值的累计值。
    使用时间轴函数的前提条件是在逻辑模型内定义了时间维。上面两个函数说明中的“时间段”实际上指的是时间维的层级(Level)。例如使用 Ago 函数定义“去年同期值”,指定的时间段为“年”这一层级,指定的回溯周期为 1,表示得到去年的值。再比如使用 ToDate 函数定义“本年累计值”,指定的时间段也是“年”这一层级,表示从年的起点(年初)开始到当前时间为止,求度量值的累计值。
 

创建时间维的准备工作

    时间维的创建过程与创建普通维度基本相同,只是维度对象的某些设置不同。因此创建物理模型、逻辑模型、及展现模型的过程在此不细说了,如果你不了解请参考之前的文章 Hello BIEE
 
    在物理模型层,导入时间维表 V_COMMON_DATE;将 V_COMMON_DATE.DAY_ID 定义为 V_COMMON_DATE 的主键;将 V_COMMON_DATE.DAY_ID 定义为 V_FINANCE_EXPENSE.CONSUME_DATE 的外键。
 


 


 


 


 

    在逻辑模型层,将物理表“V_COMMON_DATE”拖放到逻辑模型“Finance”内;使用“Rename Wizard”重命名;将逻辑字段“Day Id”定义为逻辑表“Date Dim”的逻辑主键;在逻辑表“Date Dim”和“Expense Fact”之间创建逻辑连接。
 


 


 


 

    在展现模型层,将逻辑表“Date Dim”拖放到展现模型“消费分析”内;只保留年、月、日的名称字段,并重命名。
 


 

    需要注意的是,Oracle BIEE 对与时间维相关的物理表及逻辑表有以下要求[6]
  • 如果某个物理表的字段被映射到了时间逻辑表上,那么这个物理表中的字段不能再映射到其他逻辑表中。
  • 作为时间逻辑表的数据源的物理表,只允许与物理事实表关联。且关联只能基于外键(foreign key),而不能基于复杂连接(complex join)。

 

创建时间维

    与创建普通维度对象一样,以逻辑表“Date Dim”为基础创建维度对象“Date”;依次定义层级:“Total Level”、“Year Level”、“Month Level”、“Day Level”,并设定层级的元素数;将逻辑表“Date Dim”的各列拖放当相应的层级;定义各层级的层键,并设定主层键,以及用于下钻的层键。
 


 

层级
Level
元素数
Number of elements
层键
Key
主层键
Primary
用于下钻
Use for drilldown)
Total Level 1 N/A N/A N/A
Year Level 3 Year Id Yes No
Year Name No Yes
Month Level 36 Month Id Yes No
Month Name No Yes
Day Level 1000 Day Id Yes No
Day Name No Yes
    时间维与普通维度有两处不同。首先,双击维度“Date”节点,在“Dimension”对话框中需要选中“Time Dimension”选项,以表明此维度对象为时间维度。
 


 

    其次,时间维度中需要定义时间序列键(Chronological Key)。时间序列键的作用是表明时间维中具有一组单调增加的时间序列值[1]。定义时间序列 时存在以下原则:
  • 时间维中,至少一个层级上应定义有时间序列键[2]
  • 物理存储的最细时间粒度上必须定义时间序列键[3]。在例子中,物理表“V_FINANCE_EXPENSEE”的日期字段“CONSUME_DATE”为日期,即 物理存储的最细时间粒度为日期,因此时间维“Date”的“Day Level”上应该定义时间序列键。
  • 除了必要的时间序列键,时间维的各个层级上均可建立额外的时间序列键,这主要是为提高查询性能服务[4]
  • 时间维的同一层级上可以建立多个时间序列键,但只有第一个时间序列键有效。[5]
    在这个简单的例子中,我只把层级“Day Level”的逻辑层键“Day Id”定义为时间序列键。
 


 

使用时间轴函数定义度量值

    定义好时间维后,就可以在逻辑事实表中定义使用时间轴函数的逻辑列了。在逻辑表“Expense Fact”上单击右键,选择“New Object\Logical Column”创建逻辑列。在“Logical Column”对话框中选择“Use existing logical columns as source”再按右侧的按钮,可以打开“Expression Builder”编辑逻辑列的公式。最后不要忘记将逻辑列添加到展现模型中。
 
    例如,使用 Ago 函数定义“去年同期值”。
 
  AGO(Finance."Expense Fact".Amount, Finance."Date"."Year Level", 1)  

    第一个参数是逻辑字段 Finance."Expense Fact".Amount,是用于时间轴运算的度量值;第二个参数是逻辑模型时间维的层级 Finance."Date"."Year Level",表明回溯的时间单位为年;第三个参数表示回溯的时间周期,1 则为回溯一年,即去年。
 


 

    再例如,使用 ToDate 函数定义“本年累计值”。
 
  TODATE(Finance."Expense Fact".Amount, Finance."Date"."Year Level")  

    第一个参数是逻辑字段 Finance."Expense Fact".Amount,是用于时间轴运算的度量值;第二个参数是逻辑模型时间维的层级 Finance."Date"."Year Level",表明累计计算开始自年时间的起点,终止到当前时间。
 


 

    在进行时间查询时应注意几个重要的粒度[7],以查询 select "Date Dim"."Month Name", "Expense Fact"."Amount Year Ago" 为例:
  • "Date Dim"."Month Name" 为查询粒度
  • "Expense Fact"."Amount Year Ago" 逻辑列对应的时间维层级为时间序列粒度
  • 在包含时间序列函数的查询中,时间序列粒度必须大于等于查询粒度。
  • "Expense Fact"."Amount Year Ago" 逻辑列对应的物理表的时间粒度被称为存储粒度
  • 与存储粒度对应的时间维层级上必须定义时间序列键。
    Ago 与 ToDate 函数可以嵌套调用,但需要遵守一定规则[8]
 
    在使用时间序列函数时也有一定限制,具体请参考 BIEE 文档[9]
 

查询

    定义如下查询,其中“消费金额(同期)”与“消费金额(年累计)”分别为使用 Ago 和 ToDate 函数创建的逻辑列:
 


 

    结果如下图所示:
 

分享到:
评论

相关推荐

    Oracle BIEE 架构介绍

    Oracle BIEE 架构中的 Oracle Interactive Dashboard 是一个交互式的仪表盘,提供了一个实时、交互的分析仪表盘,允许用户实时监控和分析商务智能信息。该仪表盘支持完全互动的、图形化的分析,提供了一个简便的...

    Oracle BIEE 时间函数 (ago,todate).pdf

    Oracle BIEE 时间函数(ago、todate) ...Oracle BIEE 的时间函数可以帮助用户实现复杂的分析方法,但是需要正确地创建时间维和使用时间轴函数。同时,需要注意 Oracle BIEE 对于时间维相关的物理表及逻辑表的要求。

    Oracle BIEE常见问题解决办法汇总

    知识点: 在 Oracle BIEE 中,添加筛选器可以根据需要选择对应的列,并在筛选器属性页面中选择运算符,实现提示组合。 问题2:钻取 * 维度层次 * 在逻辑层建立维度 * 作为维度的列必须设置为逻辑主键 知识点: 要...

    oracle BIEE技术手册

    在实际应用中,Oracle BIEE支持多种集成方式,例如通过Web服务接口与其他系统交互,或使用BI Publisher将报表嵌入到其他应用程序中。此外,BIEE还提供了移动支持,用户可以通过手机或平板设备访问报表和分析。 最后...

    Oracle+BIEE开发讲解

    Oracle BIEE通常与Oracle数据库中的数据仓库紧密配合,构建星型或雪花型数据模型,以优化查询性能。数据立方体是BIEE中的关键概念,它将多维数据组织成易于分析的形式。开发过程中需设计和实施这些数据立方体,确保...

    ORACLE BIEE 开发文档(中文)

    Oracle BIEE(Business Intelligence Enterprise Edition)是一款强大的商业智能解决方案,用于数据分析和报表制作。本文档主要涵盖了从数据源的导入到前端展示的全过程,详细介绍了如何使用BIEE Administration ...

    oracle_BIEE.rar_BIEE_oracle_oracle BI_oracle biee_oracle ppt

    本压缩包中的"oracle_BIEE.pdf"文档很可能是对Oracle BIEE的详细内部介绍,包括其核心组件、功能特性、实施步骤以及最佳实践。 Oracle BIEE的关键知识点涵盖以下几个方面: 1. **系统架构**:Oracle BIEE基于服务...

    自定义 ORACLE BIEE的外观和调试工具

    ### 自定义 Oracle BIEE 的外观与调试工具 #### 一、引言 在现代企业环境中,业务智能(Business Intelligence, BI)系统是至关重要的工具之一,它可以帮助组织更好地理解和利用其数据。Oracle Business ...

    Oracle Biee的中文教程

    Oracle Business Intelligence Enterprise Edition (BIEE) 是Oracle公司推出的一款强大的商业智能解决方案,它提供了从数据集成、数据仓库建设到数据分析的一整套工具。本中文教程旨在帮助用户深入理解和掌握BIEE的...

    ORACLE BIEE学习提高

    - **设置时间维**:你需要在RPD中定义时间维度,包括日历层次结构(如年、季度、月、日等)。这确保了正确的时间相关查询和聚合。 - **时间维度量**:利用时间维度,你可以创建时间跨度计算,如期间总计、同比...

    Oracle BIEE 介绍 ppt 方案

    Oracle BIEE的全方面介绍,为什么选用BIEE,满足了哪些业务等可以参考

    suse10 下安装oracle biee 10g

    ### SUSE Linux Enterprise Server 10 下安装 Oracle BIEE 10g 详细步骤 #### 系统环境概述 本篇文章将详细介绍如何在 SUSE Linux Enterprise Server 10 (i586) 操作系统上安装 Oracle Business Intelligence ...

    oracle biee 11g 中文安装文档

    Oracle BIEE 11g 是一款强大的商业智能和分析平台,主要用于数据挖掘、报表制作以及决策支持。本文档详细介绍了在中文环境下安装 Oracle BIEE 11g 的步骤和配置要求,确保用户能够顺利地进行系统部署。 首先,我们...

    ORACLE BIEE

    Oracle BIEE与Oracle数据仓库紧密结合,能够高效地处理大量复杂数据,包括结构化和非结构化数据,从而为分析提供坚实的基础。其数据管理功能确保了数据的质量和一致性,为准确的业务洞察提供了保障。 **2. 强大的...

    oracle biee常见问题解答

    ### Oracle BIEE 常见问题解答 #### 一、仪表板操作与配置 **1. 仪表板分组下拉显示** - **解决办法**:为了实现仪表板分组下拉显示的功能,需要对`instanceconfig.xml`进行配置。具体来说,在此配置文件中加入`...

Global site tag (gtag.js) - Google Analytics