全球石油价格的多维分析

传统的数据仓库呈现一般是通过建立数据仓库,设置维度,预先计算,然后将多维分析的结果呈现给客户端。在本系统中,采用了一种不同的数据仓库构建思路,即试图在系统的数据仓库展现中,利用多维数据表之间的相关性,实现实时多维分析功能。

在多维数据结构中,事实表和维度表通过直接或间接的关系链接在一起。对于表中记录的选取,可以在其他相关表中找到相关的数据记录,对选取的数据和相关数据进行统计分析,得到这些数据的分布、趋势等分析结果。设置好多维分析的维度后,可以根据维度之间的层次关系,从不同的组合角度对数据进行分析,形成实时的多维分析。

数据仓库的开发内容一般可以分为两部分:数据仓库的设计和多维分析的实现。数据仓库的设计包括星型模式的构建、数据抽取模式的确定、数据转换和提纯的实现以及多维数据的存储。多维分析的实现包括多维分析维度的选择、度量值的定义、维度转换的方式、钻取路径的定义、钻取数据显示方式的确定。

在本系统的开发过程中,由于原型系统带来的需求不确定性和数据完整性的约束,如何设计一个好的结构来更好的显示多维数据,以及采用什么形式来显示多维数据是一个关键问题。讨论了系统中数据仓库的体系结构模式和多维数据结构的定义,讨论了系统原始数据源的复杂性、数据完整性和数据有效性方面的问题和解决方案。多维分析的设计包括维度之间的关联、事实数据的内容和形式、数据钻取等。

5.3.2.1维度表相关性分析

数据源表结构包括一个事实表和几个维度表。对于这些维度表,可以设计维度进行多维分析,即油品、交易市场、交易类型、价格单位、价格日期维度。维度数据和中间事实表之间有直接的关联,维度数据之间通过中间事实表产生简洁的关联。因此,在现有事实数据的基础上,可以可视化维度之间的关系。

图5.29显示了四个维度的内容数据,并列出每个维度中字段的值,这些值通过事实表相关联。选择原油后,其他三个维度的字段值的背景发生了变化。白底表示事实表中有与原油关联的交易市场,即库欣、OK和欧洲布伦特,表示事实表中有这两个市场的原油价格数据,而其他市场没有价格数据。

图5.29多维分析维度列表

默认情况下,维度列表显示所有可能的维度值。在选择了某个维度后,比如产品名称中的原油价值,那么通过油价数据与该维度所选值关联的维度值就会在其他维度中高亮显示。通过维度之间的相关性展示,可以分析出源数据中一些隐藏的分布模式。在这个例子中,我们可以看到系统中有库欣、OK和欧洲布伦特市场的原油现货价格FOB价格,而价格时间存在于1986到2008年,油价的单位名称仅以美元每桶的形式存在。多维分析的维度相关性分析还允许您在一次分析的基础上继续缩小选定值的范围。

5.3.2.2维度表与事实表的相关性分析与展示

在实时多维分析中,除了维度表之间的关联分析之外,还可以将维度表和事实表关联起来进行分析。在这种分析中,除了在界面左侧显示维度表之间的关联外,还可以在界面主体部分显示事实表数据以及基于事实表数据的一些统计分析。图5.30显示了全球油价不同交易类型的对比分析,反映了各种石油品种在现货交易、期货交易等方式下的价格对比,分析结果可以随着左维选择的变化而实时变化。

图5.30交易价格对比分析

对于事实表的展现,除了按照默认的维度顺序进行统计分析之外,还可以通过在界面中拖动维度的位置来直接转换维度之间的顺序,实现多维分析的旋转功能,此处不再赘述。

5.3.2.3事实表数据钻探

多维分析的另一个重要内容是数据钻取。在实时多维分析中,数据钻取的功能可以更加丰富。为了便于分析,我们预先定义了钻孔路径:

市场→价格类型→价格年份→产品名称。

这样就可以按照这个路径来钻取和分析油价。首次默认按照市场名称计算历史油价。选择一个市场后,向下钻两层,得到根据价格年份计算的历史油价。这里的钻取分析可以结合维度关联分析,更加灵活地实现数据钻取(图5.31,图5.32)。

图5.31数据钻探分析一

图5.32数据钻探分析二

5.3.2.4价格趋势分析。

价格趋势分析可以作为价格预测的补充。其功能是显示过去时间内不同油品、不同交易类型、价格单位的相关信息,从而直观表达油品未来的走势和趋势。该模块已由一个单独的模型程序模块完成(图5.33)。

图5.33多维价格趋势分析

在数据仓库展现中,利用实时多维分析中维度表之间的关联以及维度表与事实表之间的关联,可以更好地扩展多维分析的功能。多维分析的需求确定可以考虑使用原型法,通过数据仓库的实时多维展现,发现数据的内涵和数据之间的相关性,逐步帮助确定需要分析的维度、度量值、展现方式等内容,对数据源表结构的设计产生不利影响。