Lookup Tables 查找表
(page 290)
You can define a lookup table and refer to that lookup table in the rules section. Such a lookup table is
sometimes termed a reference table . Reference tables are defined in the initial section of the SQL
statement and then referred in the rules section of the SQL statement.
你可以定义一查找表且在规则段引用该查找表。该查找表有时被称之为引用表。引用表在SQL语句的初始化段定义而在SQL语句的规格段引用。
In Listing 9-19, lines 5 to 9 define a lookup table ref_prod using a Reference clause.
Line 5
REFERENCE ref_prod is specifying ref_prod as a lookup table. Column Prod_name is a dimension
column as specified in line 8 and column Prod_list_price is a measures column. Note that the
reference table must be unique on dimension column and should retrieve exactly one row per
dimension column’s value.
在列表9-19,5到9行使用Reference子句定义lookup表ref_prod。
行5 REFERENCE
ref_prod定义ref_prod为一查找表。在第8行定义列Prod_name是维度列且列Prod_list_price是度量列。注意引用表必须是在维度列上唯一且每一维度列值应当准确的检索一行。
Line 10 specifies the main model section starting with the keyword MAIN.
This section is named as
main_section for ease of understanding, although any name can be used. In the line 15, a rule for the
column Prod_list_price is specified and populated from the lookup table ref_prod. Line 16 shows that
the reference table that measures columns is accessed using the clause ref_prod.prod_list_price
[cv(product)] . The current value of the Product column is passed as a lookup key in the lookup table
using the clause cv(product) .
行10定义主model段由关键字MAIN开头。
虽然可以使用任意命名,但为容易理解该段命名为main_section。在15行指定了对列
Prod_list的规则且由来自查找表ref_prod。行16展示度量列访问了查找表,使用子句ref_prod.prod_list_price[cv(product)]。Product列的当前值作为查找表中的查找键传入,使用子句
cv(product)。
In summary, you define a lookup table using a REFERENCE clause, and then access that lookup table
using the syntax look_table_name.measures column .
For example, the syntax in this example is
ref_prod.prod_list_price [cv(product)]. To access a specific row in the lookup table, you pass the
current value of the dimension column from the left hand side of the rule, in this example, using the
cv(product) clause. You might be able to understand better if you imagine ref_prod as a table,
cv(product) as primary key in to that table, and prod_list_price as a column to fetch from that lookup
table.
总结一下,你用REFERENCE
子句定义一个查找表,而用句法“查找表名.度量列”访问查找表。
例如,在本例中的句法是ref_prod.prod_list_price
[cv(product)]。为了访问查找表中的特定行,你规则的左手边传入维度列的当前值,在本例中,用cv(product)
子句。如果你想象ref_prod 是一张表可能能更好的理解,cv(product) 作为那个表的主键,而prod_list_price
作为一列取自查找表。
Listing 9-19. Reference Model
1 select year, week,sale, prod_list_price
2 from sales_fact
3 where country in ('Australia') and product ='Xtend Memory'
4 model return updated rows
5 REFERENCE
ref_prod on
6 (select prod_name, max(prod_list_price) prod_list_price from products
7 group by prod_name)
8 dimension by (prod_name)
9 measures (prod_list_price)
10 MAIN
main_section
11 partition by (product, country)
12 dimension by (year, week)
13 measures ( sale, receipts, 0 prod_list_price )
14 rules (
15 prod_list_price[year,week] order by year, week =
16 ref_prod.prod_list_price [ cv(product) ]
17 )
18* order by year, week;
YEAR WEEK SALE PROD_LIST_PRICE
----- ---- ---------- ---------------
2000 31 44.78 20.99
2000 33 134.11 20.99
2000 34 178.52 20.99
...
More lookup tables can be added if needed.
Suppose you also need to retrieve the
country_iso_code column values from another table. You achieved that by adding a lookup table
ref_country as shown in Listing 9-20 lines 10 to 13. Column Country_name is the dimension column
and Country_iso_code is a measures column. Lines 22 and 23 refer to the lookup table using a new
rule Iso_code. This rule is accessing the lookup table ref_country using the Current Value of the
Country column as the lookup key.
如果需要可以加入多个查找表。
假设你也需要从其它表检索country_iso_code列值。你可以加入另一个查找表ref_country达到目的,
如列表9-20的行10到13所示。列Country_name是维度列而Country_iso_code是度量列。行22和23用新规则Iso_code引用lookup表。这个规则访问查找表ref_country,使用Country列的当前值作为查找键。
Listing 9-20. More Lookup Tables
1 select year, week,sale, prod_list_price, iso_code
2 from sales_fact
3 where country in ('Australia') and product ='Xtend Memory'
4 model return updated rows
5 REFERENCE
ref_prod on
6 (select prod_name, max(prod_list_price) prod_list_price from
7 products group by prod_name)
8 dimension by (prod_name)
9 measures (prod_list_price)
10 REFERENCE
ref_country on
11 (select country_name, country_iso_code from countries)
12 dimension by (country_name )
13 measures (country_iso_code)
14 MAIN
main_section
15 partition by (product, country)
16 dimension by (year, week)
17 measures ( sale, receipts, 0 prod_list_price ,
18 cast(' ' as varchar2(5)) iso_code)
19 rules (
20 prod_list_price[year,week] order by year, week =
21 ref_prod.prod_list_price
[ cv(product) ],
22 iso_code [year, week] order by year, week =
23 ref_country.country_iso_code
[ cv(country)]
24 )
25* order by year, week
YEAR WEEK SALE PROD_LIST_PRICE ISO_C
---- ---- ---------- --------------- -----
2000 31 44.78 20.99 AU
2000 33 134.11 20.99 AU
2000 34 178.52 20.99 AU
2000 35 78.82 20.99 AU
2000 36 118.41 20.99 AU
...
分享到:
相关推荐
本章“《Pro Oracle SQL》CHAPTER 9 The Model Clause”重点讲解了Model子句的使用,特别是其在聚合操作中的应用。 Model子句的基本结构允许用户指定一个数据区域(即模型区域),在这个区域内对数据进行计算和操作...
《Pro Oracle SQL》一书的第9章深入探讨了Oracle数据库中的"Model"子句,这一章节重点关注如何使用Model子句来更新数据行。在Oracle SQL中,Model子句是一种强大的功能,允许进行复杂的行处理和模拟迭代计算,通常...
《Pro Oracle SQL》一书的第9章深入探讨了Oracle数据库中的“Model”子句,这一章节重点关注了9.5节——评估顺序。在Oracle SQL中,Model子句是一种高级的行处理工具,用于进行复杂的行计算和模拟迭代过程,比如解决...
《Pro Oracle SQL》一书中的第9章详细探讨了Oracle SQL中的“模型”子句,这一章的主题是“9.7 迭代”。在Oracle数据库中,模型子句是一种强大的功能,它允许用户进行复杂的多步骤计算,尤其适用于处理数组、矩阵...
《Pro Oracle SQL》一书中的第9章详细探讨了Oracle SQL中的“模型”子句,这一章重点关注了位置引用和符号引用的概念。在Oracle数据库中,模型子句是一种强大的工具,用于处理复杂的行列操作,例如数据建模、数据...
《Pro Oracle SQL》是Oracle数据库查询的一本权威指南,其中第9章主要讲解了如何使用Model子句进行行间引用,这是一个高级SQL特性,用于处理复杂的行与行之间的计算和逻辑操作。9.2章节专注于Inter-Row Referencing...
《Pro Oracle SQL》一书的第9章,重点关注了使用"Model"子句进行性能调优的方法。在Oracle数据库中,Model子句是一种强大的功能,它允许数据建模和复杂的计算,尤其适用于解决多步骤计算问题,如模拟、预测和序列...
《Pro Oracle SQL》一书的第七章深入探讨了高级分组技术,特别是关于`HAVING`子句的部分。`HAVING`子句在SQL查询中扮演着至关重要的角色,它用于在聚合函数的结果集上设置条件,这与`WHERE`子句有所不同。`WHERE`...
Pro Oracle SQL unlocks the power of SQL in the Oracle Database—one of the most potent SQL implementations on the market today. To master it requires a three-pronged approach: learn the language ...
Walking the Tree: From the Top Down 5-9 Ranking Rows with the LEVEL Pseudocolumn 5-10 Formatting Hierarchical Reports Using LEVEL and LPAD 5-11 Pruning Branches 5-13 Summary 5-14 Practice 5 Overview 5...
### Oracle SQL 优化与调优技术详解:深入理解SQL提示 #### 一、SQL提示的定义及作用 在Oracle数据库的SQL语句中,SQL提示(Hints)是一种用于指导优化器选择特定执行计划的特殊注释语法。这些提示能够帮助数据库...
Clause-view个人中心、设置常用的itemview
资源分类:Python库 所属语言:Python 资源全名:clause-1.1.2.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
Oracle和SqlServer语法区别 Oracle和SqlServer是两种流行的关系型数据库管理系统,它们之间存在着一些语法区别。了解这些区别对于开发者来说非常重要,因为它可以帮助他们更好地迁移到新的数据库管理系统。下面将...
### ORACLE和SQL Server的语法区别 #### 一、概述 本文主要介绍Oracle与SQL Server在SQL语言层面的异同之处,重点在于Transact-SQL(T-SQL)与PL/SQL之间的区别,并提供了一些迁移策略。对于希望将现有的Oracle...
Oracle SQL查考手册是一部关于Oracle数据库查询语言的重要参考资料,它涵盖了运算符、表达式、条件、函数以及常见的SQL DDL(Data Definition Language)和Clause等内容。这篇总结将深入解析这些核心概念,帮助读者...
Chatopera 语义理解系统:机器学习,聊天机器人,意图识别clause-osc.zip
(b) the name of the table, the names of the table's attributes, the data types of the table's attributes, the formats of the table's attributes, and the maximum number of rows that the table can have...