分享
 
 
 

Oracle中使用SQL MODEL定义行间计算 (1)

王朝oracle·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

利用 SQL MODEL 子句,您可以根据查询结果定义多维数组,然后将规则应用于该数组以计算新值。这些规则可以是复杂的相互依靠的计算。与外部解决方案相比,通过将高级计算集成到数据库中,可以大幅度提升性能、可伸缩性以及可治理性。

用户可以将数据保留在 Oracle 环境内,而无需将数据复制到单独的应用程序或 PC 电子表格中。

MODEL 子句通过将查询列映射到以下三组来定义多维数组:分区列、维度列和度量列。这些元素执行以下任务:

分区以类似于分析函数的分区方式(在数据仓库指南中标题为“数据仓库中用于分析的 SQL”的一章中有述)来定义结果集的逻辑块。将 MODEL 规则应用于每个分区的单元格。

维度用于标识分区内的每个度量单元格。这些列用于标识日期、区域以及产品名之类的特征。

度量类似于星型模式中事实表的度量。它们通常包含数值,例如销售单位或成本。通过指定每个单元格的完整维度组合,可以在单元格所处的分区内对其进行访问。

要针对这些多维数组创建规则,您需要定义以维度值形式表达的计算规则。规则灵活且简洁,并且可以使用通配符和 FOR 循环,以最大限度地表达您的意图。利用 MODEL 子句构建的计算通过将分析集成到数据库中改善了传统的电子表格计算,通过符号引用提高了可读性,并提供了可伸缩性和更好的可治理性。

下图使用假设的销售表格从概念的角度概述了该模型的特征。该表格具有四列:国家/地区、产品、年份和销售量。该图分为三个部分。上段阐释了将表格划分为分区、维和度量三列的概念。中段给出了两个假想规则,以猜测 PRod1 和 Prod2 的销售,因为产品销售的计算值来自前两年。最后,第三部分显示了将规则应用于这个包含假设数据的表格后得出的查询输出。黑色输出是从数据库检索的数据,而蓝色输出表示根据规则计算出的行。请注重,这些规则是在每个分区内应用的。

映射到分区、维和度量的列

COUNTRY PRODUCT YEAR SALES

分区 维度 维度 度量

规则: sales('prod1', 2002) = sales('prod1', 2000) + sales('prod1', 2001)

sales('prod2', 2002) = sales('prod2', 2000) + sales('prod2', 2001)

MODEL 子句的输出:

COUNTRY PRODUCT YEAR SALES

分区 维度 维度 度量

A prod1 2000 10

A prod1 2001 15

A prod2 2000 12

A prod2 2001 16

B prod1 2000 21

B prod1 2001 23

B prod2 2000 28

B prod2 2001 29

A prod1 2002 25

A prod2 2002 28

B prod1 2002 44

B prod2 2002 57

请注重,MODEL 子句没有更新表格中的现有数据,也没有向表格中插入新数据 要更改表格中的值,必须将模型结果提供给 INSERT、UPDATE 或 MERGE 语句。

案例

通过使用 MODEL 子句,您可以将电子表格计算引入数据库。您将使用 Sales History 模式数据并通过包含新 MODEL 子句的 SELECT 语句来执行类似电子表格的计算。您需要标识规则,以找出诸如销售猜测之类的信息。

前提条件

开始本教程之前,您应该:

1.完成了教程在 Windows 上安装 Oracle 数据库 10g。

2.下载 model_clause.zip 并将其解压缩到您的工作目录(例如,c:\wkdir)

设置示例数据

使用 SH 模式创建视图。该视图将按国家/地区提供产品销售的年度总计(总款和总量),并跨所有渠道进行聚集。

1.启动一个 SQL*Plus 会话。选择开始 > 程序 > Oracle-OraDB10g_home > application Development > SQL Plus。

(注重:本教程假设您拥有 c:\wkdir 文件夹。假如没有,则需要创建此文件夹,并将 model_clause.zip 的内容解压缩到此文件夹中。当执行这些脚本时,指定路径)

2.以 SH 用户的身份登录。输入 SH 作为 User Name,并输入 SH 作为 PassWord。然后单击 OK。

3.首先,确保环境简洁。从 SQL*Plus 会话运行 cleanup.sql 脚本。 @c:\wkdir\cleanup.sql

cleanup.sql 脚本包含以下内容: DROP VIEW sales_view;DROP TABLE dollar_conv;DROP TABLE growth_rate;DROP TABLE ledger;

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有