数据库

 首页 > 数据库 > Oracle > oracle中MODEL子句的再探

oracle中MODEL子句的再探

分享到:
【字体:
导读:
         摘要:oracle中MODEL子句的再探model的语法如下:MODEL[<globalreferenceoptions>][<referencemodels>][MAIN<main-name>][PARTITIONBY(<cols>)]DIMENSIONBY(<cols...

oracle中MODEL子句的再探

oracle中MODEL子句的再探
 
model的语法如下:
 
MODEL
[]
[]
[MAIN ]
  [PARTITION BY ()]
  DIMENSION BY ()
  MEASURES ()
  []
  [RULES]  
  (, ,.., )
  www.2cto.com  
  ::=
    ::= RETURN {ALL|UPDATED} ROWS
  ::=
  [IGNORE NAV | [KEEP NAV]
  [UNIQUE DIMENSION | UNIQUE SINGLE REFERENCE]
  ::=  www.2cto.com  
  [UPDATE | UPSERT | UPSERT ALL]
  [AUTOMATIC ORDER | SEQUENTIAL ORDER]
  [ITERATE ()  [UNTIL ]]
  ::= REFERENCE ON ON ()
  DIMENSION BY () MEASURES ()
 
先解释一下关键字:
MODEL 标示字。
RETURN {ALL|UPDATED} ROWS 返回的结果集是否只包含修改或新增的记录,默认是ALL。
MAIN 当有引用MODEL自己时,标示以下条件是主MODEL的条件。
PARTITION BY 按参数中的列分组,之后的运算都是分组进行的;参数可以是表达式,但是必须有别名。
DIMENSION BY 声明各分组中的维度字段,相当于多维键值对的建,字段值即键;参数可以是表达式,但是必须有别名。
MEASURES 声明各分组中的指标字段,即键值对中的值;参数可以是表达式,但是必须有别名。
IGNORE NAV|KEEP NAV 替换null|保留null,0替换数组,空格替换字符,01-JAN-2001 替换日期,null替换其他,默认是KEEP NAV 。
UNIQUE DIMENSION|UNIQUE SINGLE REFERENCE 组内维度唯一|右侧引用唯一,默认是UNIQUE DIMENSION,右侧引用唯一的另一个区别是可能更新多个单元,因为左侧单元可能不唯一。
RULES [UPDATE|UPSERT|UPSERT ALL] 指标计算规则,更新|更新和简单插入|更新和复杂插入,默认是UPSERT 。
AUTOMATIC ORDER|SEQUENTIAL ORDER 指标计算的顺序,逻辑依赖顺序|书写顺序,默认是SEQUENTIAL ORDER 。
ITERALTE(N) [UNTIL(C)] 重复N次的计算,直到满足C的条件退出。
REFERENCE name ON (select子句) 维度、指标定义,内嵌子MODEL,主MODEL中使用name引用。
 
UPDATE 只更新已有单元,不存在则无效果。
UPSERT 在上面的基础上,如果左侧单元是以位置引用的话,则不存在就插入;FOR也是位置引用,但是更新的单元为FOR列表和其他维度的交叉乘集;左侧单元使用ANY引用,不会产生新单元,ANY的意思是IS NULL OR IS NOT NULL。  www.2cto.com  
UPSERT ALL 在上面的基础上,左侧单元可以使用IN,ANY等谓词。
 
UPSERT的执行过程:
1、找出左侧单元的逻辑引用,谓词也是逻辑引用。
2、计算出逻辑引用的笛卡尔积集合。
3、和位置引用一起得出需要运算的单元集。
4、根据RULE规则更新或新增记录。
 
指标运算:
可以使用自带的一些函数,当前维度值可以使用CV(),只能用在单元引用,如果是外面则必须加上维度名。
维度为ANY、FOR、BETWEEN等时,可以在单元后面加上ORDER BY 维度名,固定单元计算的顺序。
右侧表达式可以有分析函数,聚合函数等。
 
 
 
作者 hulubo
oracle中MODEL子句的再探
分享到:
ORA-12547经典错误处理
ORA-12547经典错误处理 ORA-12547错误处理       今天上午10:30左右,领导告知我,让我帮一同事将ORACLE安装下,他在安装的过程中出现了问题,报错,无法继续安装。        一、由于NLS_LANG设置错误,导致ora-12547错误       我过去看了看,发现在AIX5.3系统中使用DBCA建库到最后一步点完成后立即就出现了ORA...
oracle导入数据的方法
oracle导入数据的方法 启动服务:services.msc   第一步开启监听程序:lsnrctl start   第二步   导出原来数据操作   Exp tc4_gctos_file/ok @tcmg          导入操作:  www.2cto.com     Imp tc4_gctos_file/ok@orcl   导入文件: EXPDATA.DMP D:\TC4_gctos_file  ;如果遇到NO 根据实际情况改成YES在   ...
  •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
  • 在这里……