Chinaunix首页 | 论坛 | 博客
  • 博客访问: 101961057
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-04-12 09:52:26

     来源:IBM developerWorks 中国网站    作者:Jason Dere

属性引用的表:

    • CVSAMPLE.STORE (关联名 T2)
    • CVSAMPLE.LOCATION (关联名 T3)
  • 对于 product 维:

    查询中使用的属性:

    • PRODUCTID (PRODUCT)
    • LINE_NAME
    • LINEID (PRODUCT)
    • LINEID (LINE)
    • FAMILYID (LINE)
    • FAMILYID (FAMILY)
    • FAMILY_NAME

    属性引用的表:

    • CVSAMPLE.PRODUCT (关联名 T4)
    • CVSAMPLE.LINE (关联名 T5)
    • CVSAMPLE.FAMILY (关联名 T6)

  将维属性转换为 SQL 表达式

  将上面识别出的每个 Di 属性转换为 SQL 表达式。表 5 给出一个示例,将 time 维的 QUARTER_NAME 属性转换为 SQL 表达式:

表 5. QUARTER_NAME 属性
SQL 表达式模板 列/属性引用列表
'Qtr ' CONCAT (cast({$$1} as char(1))) 列:CVSAMPLE.TIME.QUARTER_NUMBER

  先从属性的 SQL 表达式模板开始。这看起来像 SQL 表达式,但是其中有 ‘{$$n}’ 标志,列或属性应该作为表达式放在这些地方,从而完成 SQL 表达式。对于 ‘{$$n}’ 标志,n 是一个序数,对应于属性的列/属性列表中的第 n 个列/属性。所以对于 QUARTER_NAME,‘{$$1}’ 表示列表中的第一个列/属性引用,即 CVSAMPLE.TIME 表中的 QUARTER_NUMBER 列。

  如果 ‘{$$n}’ 标志表示列/属性列表中的列引用,那么将 SQL 表达式模板中的 ‘{$$n}’ 替换为列名。通过在列名前面加上关联名,对它进行完全限定。对于示例中的 QUARTER_NAME,应该将 SQL 表达式模板中的 {$$1} 替换为 CVSAMPLE.TIME 表中的 QUARTER_NAME 列。CVSAMPLE.TIME 表的关联名是 T1,所以对于 QUARTER_NAME 产生的 SQL 表达式是:

'Qtr ' CONCAT (cast(T1."QUARTER_NUMBER" as char(1)))

  注意: 因为 Cube Views 元数据在引用 DB2 表和列时使用定界约定,所以需要将表名和列名放在双引号中。

阅读(424) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~