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

上传人:b****6 文档编号:7160232 上传时间:2023-01-21 格式:DOCX 页数:13 大小:407.81KB
下载 相关 举报
Oracle BIEE 中的时间维与时间轴函数.docx_第1页
第1页 / 共13页
Oracle BIEE 中的时间维与时间轴函数.docx_第2页
第2页 / 共13页
Oracle BIEE 中的时间维与时间轴函数.docx_第3页
第3页 / 共13页
Oracle BIEE 中的时间维与时间轴函数.docx_第4页
第4页 / 共13页
Oracle BIEE 中的时间维与时间轴函数.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

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

《Oracle BIEE 中的时间维与时间轴函数.docx》由会员分享,可在线阅读,更多相关《Oracle BIEE 中的时间维与时间轴函数.docx(13页珍藏版)》请在冰豆网上搜索。

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

OracleBIEE中的时间维与时间轴函数

OracleBIEE中的时间维与时间轴函数

   累计、同比、环比是BI项目中常用的分析方法。

本文讲述如何利用OracleBIEE的时间维(TimeDimension)及时间轴函数(TimeSeriesConversionFunction)实现累计、同比、环比计算。

本文使用的示例数据可以通过此链接下载:

如果你不了解如何创建OracleBIEE资料库,请参考之前的文章 HelloBIEE。

目录

∙时间轴函数概述

∙创建时间维的准备工作

∙创建时间维

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

∙查询

∙参考

时间轴函数概述

   累计、同比、环比是BI项目中常用的分析方法。

如果采用关系型数据库,直接通过SQL语句进行这样的计算是比较麻烦的。

OracleBIEE提供的解决方法是时间轴函数。

时间轴函数是位于逻辑模型层内的函数,使用时间轴函数能够定义出“去年同期值”或“本年累计值”之类的与时间相关的计算字段。

OracleBIEE现在支持两个时间轴函数:

∙Ago:

从当前时间起回溯用户指定的n个时间段,返回当时的度量值。

∙ToDate:

从用户指定时间段的起点开始,到当前时间为止,计算度量值的累计值。

   使用时间轴函数的前提条件是在逻辑模型内定义了时间维。

上面两个函数说明中的“时间段”实际上指的是时间维的层级(Level)。

例如使用Ago函数定义“去年同期值”,指定的时间段为“年”这一层级,指定的回溯周期为1,表示得到去年的值。

再比如使用ToDate函数定义“本年累计值”,指定的时间段也是“年”这一层级,表示从年的起点(年初)开始到当前时间为止,求度量值的累计值。

创建时间维的准备工作

   时间维的创建过程与创建普通维度基本相同,只是维度对象的某些设置不同。

因此创建物理模型、逻辑模型、及展现模型的过程在此不细说了,如果你不了解请参考之前的文章 HelloBIEE。

   在物理模型层,导入时间维表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”内;使用“RenameWizard”重命名;将逻辑字段“DayId”定义为逻辑表“DateDim”的逻辑主键;在逻辑表“DateDim”和“ExpenseFact”之间创建逻辑连接。

 

 

 

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

 

   需要注意的是,OracleBIEE对与时间维相关的物理表及逻辑表有以下要求[6]:

∙如果某个物理表的字段被映射到了时间逻辑表上,那么这个物理表中的字段不能再映射到其他逻辑表中。

∙作为时间逻辑表的数据源的物理表,只允许与物理事实表关联。

且关联只能基于外键(foreignkey),而不能基于复杂连接(complexjoin)。

 

创建时间维

   与创建普通维度对象一样,以逻辑表“DateDim”为基础创建维度对象“Date”;依次定义层级:

“TotalLevel”、“YearLevel”、“MonthLevel”、“DayLevel”,并设定层级的元素数;将逻辑表“DateDim”的各列拖放当相应的层级;定义各层级的层键,并设定主层键,以及用于下钻的层键。

 

层级

Level

元素数

Numberofelements

层键

Key

主层键

Primary

用于下钻

Usefordrilldown)

TotalLevel

1

N/A

N/A

N/A

YearLevel

3

YearId

Yes

No

YearName

No

Yes

MonthLevel

36

MonthId

Yes

No

MonthName

No

Yes

DayLevel

1000

DayId

Yes

No

DayName

No

Yes

   时间维与普通维度有两处不同。

首先,双击维度“Date”节点,在“Dimension”对话框中需要选中“TimeDimension”选项,以表明此维度对象为时间维度。

 

   其次,时间维度中需要定义时间序列键(ChronologicalKey)。

时间序列键的作用是表明时间维中具有一组单调增加的时间序列值[1]。

定义时间序列时存在以下原则:

∙时间维中,至少一个层级上应定义有时间序列键[2]。

∙物理存储的最细时间粒度上必须定义时间序列键[3]。

在例子中,物理表“V_FINANCE_EXPENSEE”的日期字段“CONSUME_DATE”为日期,即物理存储的最细时间粒度为日期,因此时间维“Date”的“DayLevel”上应该定义时间序列键。

∙除了必要的时间序列键,时间维的各个层级上均可建立额外的时间序列键,这主要是为提高查询性能服务[4]。

∙时间维的同一层级上可以建立多个时间序列键,但只有第一个时间序列键有效。

[5]

   在这个简单的例子中,我只把层级“DayLevel”的逻辑层键“DayId”定义为时间序列键。

 

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

   定义好时间维后,就可以在逻辑事实表中定义使用时间轴函数的逻辑列了。

在逻辑表“ExpenseFact”上单击右键,选择“NewObject\LogicalColumn”创建逻辑列。

在“LogicalColumn”对话框中选择“Useexistinglogicalcolumnsassource”再按右侧的按钮,可以打开“ExpressionBuilder”编辑逻辑列的公式。

最后不要忘记将逻辑列添加到展现模型中。

   例如,使用Ago函数定义“去年同期值”。

 

AGO(Finance."ExpenseFact".Amount,Finance."Date"."YearLevel",1)

 

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

 

 

   再例如,使用ToDate函数定义“本年累计值”。

 

TODATE(Finance."ExpenseFact".Amount,Finance."Date"."YearLevel")

 

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

 

 

   在进行时间查询时应注意几个重要的粒度[7],以查询select"DateDim"."MonthName","ExpenseFact"."AmountYearAgo"为例:

∙"DateDim"."MonthName"为查询粒度。

∙"ExpenseFact"."AmountYearAgo"逻辑列对应的时间维层级为时间序列粒度。

∙在包含时间序列函数的查询中,时间序列粒度必须大于等于查询粒度。

∙"ExpenseFact"."AmountYearAgo"逻辑列对应的物理表的时间粒度被称为存储粒度。

∙与存储粒度对应的时间维层级上必须定义时间序列键。

   Ago与ToDate函数可以嵌套调用,但需要遵守一定规则[8]。

   在使用时间序列函数时也有一定限制,具体请参考BIEE文档[9]。

查询

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

 

   结果如下图所示:

 

zw1840athotmaildotcom 转载请注明出处,谢谢!

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 外语学习 > 韩语学习

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1