OLAP 安装和用户指南

DB2 OLAP 服务器视图

当创建 OLAP 应用程序和多维数据库时, DB2 OLAP 服务器会将新的应用程序和数据库编目并创建一组关系表,称为星形模式。另外,DB2 OLAP 服务器还会创建和管理大量的视图, 它们可以简化 SQL 应用程序对多维数据的访问。可以使用这些视图来使用自定义 应用程序和标准查询工具,以访问多维数据。一些应用程序是为充分利用存储在 DB2 OLAP 服务器创建的星形模式中的数据而设计的。

以下列表显示 DB2 OLAP 服务器管理的完整的一组视图:

命名视图的模式

DB2 OLAP 服务器将其所有的基础表和视图存储在用户名模式中, 其中,用户名是指定给 DB2 OLAP 服务器的用户 ID。对于本章中的 SQL 示例,使用模式名 OLAPSERV。

所有视图名都是大写的。不要在视图名两边加引号。DB2 OLAP 服务器构造视图名并将它们存储在目录视图中。您的 SQL 应用程序可从目录视图查询视图名。图 9显示主要的 DB2 OLAP 服务器视图。

图 9. DB2 OLAP 服务器模式


Figure views not displayed.

使用方块目录视图

DB2 OLAP 服务器在其用户名模式中会使用一个方块目录视图。 此视图对每个方块包含一行。使用此视图可获得有关存储在一个模式中的所有 OLAP 应用程序和方块的详情。方块目录视图编目 DB2 OLAP 服务器管理的所有 OLAP 应用程序和数据库。

方块目录视图名

方块目录视图名是 CUBECATALOGVIEW。象所有其他视图一样,它由指定给 DB2 OLAP 服务器的模式拥有。

方块目录视图的内容

表 14显示方块目录视图中的列。

表 14. 方块目录视图的内容
名称 类型 最大大小 内容
AppName VarChar 8 OLAP 应用程序的名称, 该应用程序包含用 CubeName 标识的关系方块。
CubeName VarChar 8 多维数据库的名称。
CubeViewName VarChar 27 此多维数据库的方块视图的全限定名。
FactViewName VarChar 27 此多维数据库的事实视图的全限定名。
StarViewName VarChar 27 此多维数据库的星形视图的全限定名。
AliasIdViewName VarChar 27 此多维数据库的别名 ID 视图的全限定名。
LROViewName VarChar 27 此多维数据库的 LRO 视图的全限定名。

使用 SQL 语句来查询方块目录视图

使用此 SQL 语句来获得 OLAP 应用程序的列表:

SELECT DISTINCT APPNAME FROM OLAPSERV.CUBECATALOGVIEW 

使用此 SQL 语句来获得 Sample 应用程序中的多维数据库的列表:

SELECT CUBENAME FROM OLAPSERV.CUBECATALOGVIEW WHERE APPNAME='Sample'

使用此 SQL 语句来获得 Sample 应用程序中的多维数据库 Basic 的视图名:

SELECT CUBEVIEWNAME,FACTVIEWNAME,STARVIEWNAME,ALIASIDVIEWNAME,LROVIEWNAME
  FROM OLAPSERV.CUBECATALOGVIEW WHERE APPNAME='Sample' AND CUBENAME='Basic'

查询维和成员信息

方块视图和维视图包含有关关系方块中的维和成员的信息。 每个关系方块都有一个方块视图, 并且关系方块内的每个维都有一个维视图。这些视图可用于查询指定给 OLAP 轮廓中的维和成员的许多属性。

使用方块视图

DB2 OLAP 服务器管理的每个关系方块都有一个方块视图。 对于该关系方块中的每个维,此视图都包含一行。使用此视图,可获取有关方块的维的信息。

方块视图名

方块视图名是从方块目录视图的 CubeViewName 列获取的。

方块视图内容

表 15显示方块视图中的列。

表 15. 方块视图的内容
名称 类型 大小 内容
DimensionName VarChar 80 OLAP 维名。
RelDimensionName VarChar 18 DB2 OLAP 服务器维名。此列包含星形视图或事实 视图中与此维对应的列的名称。相对于此关系方块的所有其他维名和亮点维中的 成员名,RelDimensionName 是唯一的名称。RelDimensionName 是 DimensionName 的修改版本。可能需要对 DimensionName 进行的更改有:
  • 限制此名称的长度。
  • 除去或置换在多维名称中允许但在关系名中不允许的特殊字符。
  • 在进行了所有其他更改后,改变字符以便在关系方块的名称空间中创建唯一的名称。
DimensionType Small Integer
此列的值是:
  • 0 = 紧凑维
  • 1 = 稀疏维
  • 2 = 亮点维
DimensionTag Small Integer
此列的值是:
  • 0x00 表示无标记
  • 0x01 表示帐户
  • 0x02 表示时间
  • 0x04 表示国家
  • 0x08 表示货币分区
DimensionId Integer
OLAP 轮廓中的维 ID。
DimensionViewName VarChar 27 此维的维视图的全限定名。
UDAViewName VarChar 27 此维的“用户定义属性”(UDA) 视图的全限定名。
RATViewName VarChar 27 此维的关系属性视图的全限定名。

使用 SQL 语句来查询方块视图

要访问方块视图中的数据,您的应用程序必须首先从方块目录视图中确定该方块视图的名称。

例如,要查找 Sample 应用程序中 Basic 数据库的方块视图名,应使用以下 SQL 语句查询数据库:

SELECT CUBEVIEWNAME FROM OLAPSERV.CUBECATALOGVIEW
  WHERE APPNAME='Sample' AND CUBENAME='Basic'

此查询的结果可能是:

OLAPSERV.SAMPBASI_CUBEVIEW

要列示 Basic 数据库的维名和对应的维视图名:

SELECT DIMENSIONNAME.DIMENSIONVIEWNAME FROM OLAPSERV.SAMPBASI_CUBEVIEW

要列示 Basic 数据库的紧凑维的维名:

SELECT DIMENSIONNAME FROM OLAPSERV.SAMPBASI_CUBEVIEW WHERE DIMENSIONTYPE = 0

要确定用于命名星形视图中的列的非亮点维的名称:

SELECT RELDIMENSIONNAME FROM OLAPSERV.SAMPBASI_CUBEVIEW WHERE DIMENSIONTYPE <> 2  

要返回 Product维的关系属性视图的名称:

SELECT RATVIEWNAME FROM OLAPSERV.SAMPBASI_CUBEVIEW WHERE DIMENSIONNAME='Product'

维视图名

维视图名是从方块视图的 DimensionViewName 列获取的。

维视图内容

表 16显示维视图中的列。

表 16. 维视图的内容
名称 类型 大小 内容
MemberName VarChar 80 该成员的名称。
RelMemberName VarChar 18 仅亮点维。DB2 OLAP 服务器成员名。 此名称用于命名“事实”和“星形”视图中与“亮点”维的成员对应的列。 它相对于此关系方块的所有其他“亮点”维成员名和非亮点维名是唯一的名称。 它是 MemberName 的修改版本。可能需要对 MemberName 进行的更改有:
  • 限制此名称的长度。
  • 除去或置换在多维名称中允许,但在关系名中不允许的特殊字符。
  • 在进行了先前的更改后,改变字符以便在关系方块的名称空间中创建唯一的名称。
RelMemberID Integer None 此成员的 DB2 OLAP 服务器 ID。此 ID 用于将维表与事实表连接。
ParentRelId Integer None 在 OLAP 轮廓中成员的父代的关系 ID。对于最高级别的成员,此值是空值。
LeftSiblingRelId Integer None OLAP 轮廓中该成员的左同级成员的关系 ID。对于没有左同级成员的成员,此值是空值。
状态 Integer None 此成员的状态可包含下列项的组合:
  • 0x0000= 保留的
  • 0x0001= 表示设置为“从不共享”的成员
  • 0x0002= 表示设置为“仅标号”的成员
  • 0x0004 = 表示设置为“共享成员”的成员
  • 0x0008 = 保留的
  • 0x0010 = 表示带单个子代的父代成员,或只有一个子代带有聚集运算符的父代成员。 (所有其他子代都有 'no-op' 运算符。)
  • 0x0020 = 表示设置为“动态计算和存储”的成员
  • 0x0040 = 表示设置为“动态计算”的成员
  • 0x0080= 保留的
  • 0x0100= 保留的
  • 0x02000= 表示其中一个子代是共享的父代成员
  • 0x04000= 表示正规成员
CalcEquation Long VarChar(工作站);VarChar (OS/390) 32700(工作站);250 (OS/390) 计算的成员的缺省计算方程式。注意如果在用于计算该关系方块的计算脚本中指定了不同的计算,则缺省计算方程式可能不是用于计算该成员值的方程式。
UnarySymbol Small Integer None 一元计算符号:
  • 0 = 加
  • 1 = 减
  • 2 = 乘
  • 3 = 除
  • 4 = 百分比
  • 5 = 无运算符
AccountsType Integer None 此属性仅用于 Accounts 维。它可包含下列值的组合:
  • 0x0000 = 不屏蔽零或丢失值
  • 0x4000 = 屏蔽丢失值
  • 0x8000 = 屏蔽零值
  • 0x0001 = 平衡第一项
  • 0x0002 = 平衡最后一项
  • 0x0004 = 百分比
  • 0x0008 = 平均值
  • 0x0010 = 单位
  • 0x0020 = 仅细节
  • 0x0040 = 支出
NoCurrencyConv Small Integer None 货币转换设置:
  • 0x0000 = 使用货币转换
  • 0x0001 = 不使用货币转换
CurrencyMemberName VarChar 80 与此成员相关的货币方块中的成员名。
GenerationNumber Integer None 此成员的代号。
GenerationName VarChar 80 此成员的代名。
LevelNumber Integer
此成员的级号。
LevelName VarChar 80 此成员的级名。
别名表名对于 在轮廓中使用的每个 OLAP 别名表,都有一个别名列。 VarChar 80 此成员在相关的 OLAP 别名表中的别名。如果未对成员提供别名,此值为空值。参阅使用别名 ID 视图
关系属性列名对于每个 RatCol 用户定义属性,都有一个关系属性列。 创建关系属性列时指定的数据类型。 创建关系属性列时指定的大小。 此成员的关系属性的值。

使用 SQL 语句查询维名

要访问维视图中的数据,您的应用程序必须首先从方块视图中确定该维视图的名称。

例如,要查找 Basic 数据库中 Time 维的维视图名,应使用以下 SQL 语句查询数据库:

SELECT DIMENSIONVIEWNAME FROM OLAPSERV.SAMPBASI_CUBEVIEW WHERE DIMENSIONNAME='Time'

查询的结果可能是:OLAPSERV.SAMPBASID_TIME

使用 SQL 列示成员名

要列示 Time 维的成员名:

SELECT MEMBERNAME FROM OLAPSERV.SAMPBASID_TIME

事实视图和星形视图

DB2 OLAP 服务器创建和维护星形模式的事实表的两个视图:

事实视图
DB2 OLAP 服务器管理的每个方块都有一个事实视图。事实视图是一个简单的事实表的视图。 该事实表包含多维数据。使用此视图,来直接访问管理与维视图的必需连接的 SQL 应用程序中的多维数据。

星形视图
DB2 OLAP 服务器管理的每个方块都有一个星形视图。星形视图将事实表与星形模式的每个维视图连接。此视图提供对多维数据的简单 SQL 访问,且在用于即时查询和不管理与维视图的必需连接的通用查询工具时是很理想的。

因为一个事实表包含不同聚集级别的值,您必须确保在每个维中选择的成员集拥有相同的聚集级别(如果编写一个 SQL 应用程序来聚集)。否则,您的聚集将是不正确的。满足此需求的一个方法是在维表的代号或级号字段上包括一个约束。

对于每个非亮点维,DB2 OLAP 服务器创建的事实表都有一列,且对于存储数据的亮点维的每个成员,也都有一列。与图 9中使用的轮廓对应的事实表有如下的列:

该维列存储引用每个非亮点维的成员的成员 ID。通过使用维视图可以将成员 ID 映射至成员名。亮点成员列存储实际数据值。使用该亮点维的维视图可以将亮点维成员映射至事实视图中的列。

DB2 OLAP 服务器使用内部名称表示事实表的列,使用内部 ID 表示成员。 该事实视图将内部列名置换为维名和成员名,但它不把维列成员 ID 映射至成员名。 星形视图将内部列名置换为维名和成员名,并通过将事实表与维表连接来将维列成员 ID 映射至成员名。

虽然可以将任何紧凑维指定为亮点维,但是,当您正在从 SQL 应用程序访问事实视图或星形视图并正在运行即时查询时,如果您将 Accounts 维指定为亮点维,就可以获取最自然的映射。

事实视图名

从方块目录视图的 FactViewName 列获取事实视图名。

事实视图内容

事实视图包含两种类型的可变数目的列:

维列
每个非亮点维都有一列

亮点成员列
存储数据的每个亮点维成员都有一列

表 17显示有关事实视图中这两种类型的列的详情。

表 17. 事实视图的内容
名称 类型 内容
对于维列:

该维的简称取自方块视图的 RelDimensionName 列。

Integer 此维的成员的 RelMemberID。
对于亮点成员列:

该成员的短成员名取自亮点维的维视图的 RelMemberName 列。

Double 此单元的数据值。

使用 SQL 语句在 UNIX 和 Windows NT 上查询事实视图

要访问事实视图中的数据,您的应用程序必须首先从方块目录视图中确定该事实视图的名称。

例如,要查找 Sample 应用程序中 Basic 数据库的事实视图名,应使用以下 SQL 语句:

SELECT FACTVIEWNAME FROM OLAPSERV.CUBECATALOGVIEW
  WHERE APPNAME='Sample' AND CUBENAME='Basic'

该查询的结果可能是:

OLAPSERV.SAMPBASI_FACTVIEW

如果您的应用程序跟踪成员的 RelMemberID 值,则您可以直接查询事实视图。 例如,要选择产品 RelMemberId 3 (100-20) 在市场 RelMemberId 2 (East) 的 RelMemberID 4 (Q3) 时间的数据值:

SELECT PROFIT,SALES,COGS FROM OLAPSERV.SAMPBASI_FACTVIEW 
  WHERE PRODUCT=3 AND MARKET=2 AND TIME=4

更常见的是,对事实视图的查询包括与维视图的连接。与先前查询等效的使用连接的查询是:

SELECT PROFIT,SALES,COGS
    FROM OLAPSERV.SAMPBASI_FACTVIEW,
         OLAPSERV.SAMPBASID_TIME,
         OLAPSERV.SAMPBASID_MARKET,
         OLAPSERV.SAMPBASID_PRODUCT,
   WHERE OLAPSERV.SAMPBASID_TIME.MEMBERNAME='Q3'
     AND OLAPSERV.SAMPBASID_PRODUCT.MEMBERNAME='100-20'
     AND OLAPSERV.SAMPBASID_MARKET.MEMBERNAME='East'
     AND OLAPSERV.SAMPBASI_FACTVIEW.TIME=OLAPSERV.SAMPBASID_TIME.RELMEMBERID
     AND OLAPSERV.SAMPBASI_FACTVIEW.PRODUCT=OLAPSERV.SAMPBASID_PRODUCT.RELMEMBERID
     AND OLAPSERV.SAMPBASI_FACTVIEW.MARKET=OLAPSERV.SAMPBASID_MARKET.RELMEMBERID

星形视图名

星形视图名是从方块目录视图的 StarViewName 列获取的。

星形视图内容

星形视图包含两种类型的可变数目的列:

维列
每个非亮点维都有一列

亮点成员列
每个亮点维成员都有一列

表 18显示有关星形视图中这两种类型的列的详情。


表 18. 星形视图的内容
名称 类型 内容
对于维列:

该维的简称取自方块视图的 RelDimensionName 列。

VarChar(80) 成员名。
对于亮点成员列:

该成员的短成员名取自亮点维的维视图的 RelMemberName 列。

Double 此单元的数据值。

使用 SQL 语句在 UNIX 和 Windows NT 上查询星形视图

要访问星形视图中的数据, 您的应用程序必须首先从方块目录视图中确定该星形视图的名称。

例如,要查找 Sample 应用程序中 Basic 数据库的星形视图名,应使用以下 SQL 语句:

SELECT STARVIEWNAME FROM OLAPSERV.CUBECATALOGVIEW
  WHERE APPNAME='SAMPLE' and CUBENAME='BASIC'

此查询的结果可能是:OLAPSERV.SAMPBASI_STARVIEW

要选择产品 100-10 在中部市场第一季度的数据值:

SELECT PROFIT,SALES,COGS FROM OLAPSERV.SAMPBASI_STARVIEW
  WHERE PRODUCT='100-10' AND MARKET='Central' AND TIME='Q1'

要选择第二季度中部地区利润亏损的所有产品:

SELECT PRODUCT,PROFIT,SALES,COGS FROM OLAPSERV.SAMPBASI_STARVIEW
  WHERE MARKET='Central' AND TIME='Q2' AND PROFIT < 0

不是所有星形视图的成员均在同一分层级别,所以当使用 SQL 来执行聚集操作时要细心构造查询。从一个维中选择的成员应该处于相同的级别,以便避免双重聚集。

例如,下列 SQL 语句显示从星形视图的不同级别选择的成员。(某些销售额将统计两次,因为要聚集两个级别的总和。)

SELECT SUM(PROFIT) FROM OLAPSERV.SAMPBASI_STARVIEW
  WHERE MARKET IN ('Central','Illinois') AND
      PRODUCT='100' AND
      TIME IN ('Q1','1996')
 

假定 Illinois 位于 Central 地区且 Q1 属于 1996 年,此查询就会生成对 州级和地区级以及对季度级和年级总计的 PROFIT 数字。因为 Central 地区已经包括了 Illinois 的数据, 因此 Illinois 和 Q1 的数据在总计中被统计了两次。如果希望校正该 SQL 以便将两个不同的季度之间 Central 地区两个州的销售额相加,可能需要使用以下示例:

SELECT SUM(PROFIT) FROM OLAPSERV.SAMPBASI_STARVIEW
  WHERE MARKET IN ('Indiana','Illinois') AND
      PRODUCT='100' AND
      TIME IN ('Q1','Q2')
 


[ 页的顶部 | 上一页 | 下一页 | 目录 | 索引 ]