Iteration 迭代
(page 287)
Iteration provides another facility to implementing complex business requirements using a concise
Model SQL statement. A block of rules can be executed in a loop a certain number of times or while a
condition remains true. The syntax for the iteration is:
迭代提供了另一种功能,用精简的Model SQL 语句执行复杂的业务需求。一段规则可在一循环中执行多次或者只要条件为真(就一直执行)。迭代的句法是:
[ITERATE (n) [UNTIL <condition>] ]
( <cell_assignment> = <expression> ... )
Use the syntax ITERATE (n) to execute an expression n times. Use the expression ITERATE UNTIL
<condition> to iterate while the given condition remains true.
用句法ITERATE (n) 执行表达式n次。用表达式ITERATE UNTIL <condition>只要给定的条件保持为真就迭代。
An Example
Suppose the goal is to show five weeks of sale column values in a comma-separated list format. This
requirement is implemented in Listing 9-17.
设目标是展示五周的销售列值以逗号分隔的串格式。该需求在列表9-17执行了。
NOTE Conversion of rows to columns is termed as pivoting . Oracle database 11g introduces syntax to implement pivoting function natively. In Oracle database 10g, you could use the Model clause to implement pivoting.
注意 转换行成列术语称之为pivoting(旋转
).Oracle数据库11g引入句法可执行内在的旋转函数。在Oracle数据库10g,你可用Model子句执行旋转。
注:关于pivot和unpivot参考http://blog.csdn.net/tianlesoftware/article/details/7060306
Line 8 specifies that the rules block is to be iterated five times for each row. That’s done through
the clause rules iterate(5). In line 10, you use Iteration_number, which is a variable available within
the rules section, to access the current iteration count of the loop. Iteration_number starts with a value
of 0 for the first iteration in the loop and ends at n-1 where n is the number of loops as specified in the
iterate(n) clause. In this example, the Iteration_number variable value ranges from 0 to 4. With
Iteration_number and bit of arithmetic, you can access the prior two weeks and the next two weeks’
values using the clause CV(week)-ITERATION_NUMBER +2. The CASE statement adds a comma for each
element in the list, except for the first element.
第8行指定规则块对每行执行5次。通过子句 rules iterate(5)做到。在第10行,你用
Iteration_number,在规则段内的一个变量,用于访问循环中迭代次数。Iteration_number 对应循环的第一次迭代的起始值是0,且终止值n-1,其中n是在iterate(n) 子句中指定的循环次数。在本例中,Iteration_number
变量值域是0到4。通过Iteration_number 和一点算术,你能用子句CV(week)-ITERATION_NUMBER
+2访问之前两周和之后两周的值。CASE语句为列表的每个元素加逗号,除了第一个元素。
For example, let’s assume the current row in the process has a value of year=2001 and week=23. In
the first iteration of the loop, iteration_number will be zero, and the clause cv(week)-ITERATION_NUMBER
+2 will access the row with week=23-0+2=25. In the next iteration, week 24 will be accessed, and so on. The FOR loop is repeated for every row in the model output.
例如,我们假设处理的当前行有year=2001 and week=23的值。在循环的第一次迭代中,iteration_number
是0,且子句cv(week)-ITERATION_NUMBER +2 将访问行
week=23-0+2=25。在下一次迭代中,访问week24,如此下去。FOR循环对model输出中的每行重复。
Let’s review the output rows in Listing 9-17. For the year 2001, week 23, column Sale_list has the
following list of values: 233.7, 141.78, 22.38, 136.92, 139.28. You can see how those values are
centered on the current week. The first two come from sales column for the immediately preceding
weeks. Then you have the current week’s sales, and then the values from the following two weeks.
我们查看列表9-17的输出行。对year2001,week23,列Sale_list有下列值:233.7, 141.78, 22.38,
136.92,
139.28。你可以看出这些值是如何以当前周为中心的。前两个来至于最近前两周的sales列。接着是当前周的sales,再是接下来两周的值。
Listing 9-17. Iteration
1 select year, week,sale, sale_list
2 from sales_fact
3 where country in ('Australia') and product ='Xtend Memory'
4 model return updated rows
5 partition by (product, country)
6 dimension by (year, week)
7 measures ( cast(' ' as varchar2(50) )
sale_list, sale)
8 rules iterate (5)
(
9 sale_list [ year, week ] order by year, week =
10 sale [cv(year), CV(week)- ITERATION_NUMBER +2 ] ||
11 case when iteration_number =0 then '' else ', ' end ||
12 sale_list [cv(year) ,cv(week)]
13 )
14* order by year, week
YEAR WEEK SALE SALE_LIST
----- ---- ---------- --------------------------------------------------
2001 20 118.03 22.37, , 118.03, 233.7, 141.78
2001 21 233.70 , 118.03, 233.7, 141.78, 22.38
2001 22 141.78 118.03, 233.7, 141.78, 22.38, 136.92
2001 23 22.38 233.7, 141.78, 22.38, 136.92, 139.28
2001 24 136.92 141.78, 22.38, 136.92, 139.28,
2001 25 139.28 22.38, 136.92, 139.28, , 94.48
PRESENTV and NULLs
If a rule is accessing a non-existent row, the rule will return a null value.
Notice that in the output of
Listing 9-17, Sale_list column in the first row has two commas consecutively. The reason is that the
row for the week=19 does not exist in the data, so accessing that non- existent cell returns a null value.
You can correct this double comma issue using a function to check for cell existence using a PRESENTV
function. This function accepts three parameters and the syntax for the function is:
如果规则访问一非存在行,规则将返回null值。
注意列表9-17的输出,第一行的Sale_list列有两个逗号连在一起。原因是行week=19不存在数据,这样访问非存在行返回null值。你可以纠正这个双逗号问题,使用一个函数检查单元格的存在,用PRESENTV函数。这个函数接收3个参数,函数句法如下:
PRESENTV (cell_reference, expr1, expr2)
If cell_reference references an existing cell, then the PRESENTV function returns expr1 . If the
Cell_reference references a non-existing cell, then the second argument expr2 is returned.
In Listing
9-18, line 10 performs this existence check on the Sale column for the year and week combination
using a clause sale [cv(year), CV(week)-iteration_number + 2 ]. If the cell exists, then the function
adds the value of the cell and comma to the returned string (lines 11 to 13). If the cell does not exist, the function returns the Sale_list column without altering the string (line 14). This solution eliminates the
double comma in the Sale_ list column value.
如果cell_reference引用存在的单元格,则PRESENTV函数返回expr1。如果cell_reference引用非存在单元格,则第二
个参数expr2返回。
在列表9-18,行10对year和week的组合在Sale列上执行存在性检查,使用子句sale [cv(year),
CV(week)-iteration_number + 2
]。如果单元格存在,则函数加单元格值和逗号到返回的串(行11到13)。如果单元格不存在,则函数返回Sale_list列不改变串(行14)。这个解决方案消除Sale_list列值中的双逗号。
Listing 9-18. Iteration and presntv
1 select year, week,sale, sale_list
2 from sales_fact
3 where country in ('Australia') and product ='Xtend Memory'
4 model return updated rows
5 partition by (product, country)
6 dimension by (year, week)
7 measures ( cast(' ' as varchar2(120) ) sale_list, sale, 0 tmp)
8 rules iterate (5)
(
9 sale_list [ year, week ] order by year, week =
10 presentv (
sale [cv(year), CV(week)-iteration_number + 2 ],
11 sale [cv(year), CV(week)-iteration_number +2 ] ||
12 case when iteration_number=0 then '' else ', ' end ||
13 sale_list [cv(year) ,cv(week)] ,
14 sale_list [cv(year) ,cv(week)] )
15 )
16* order by year, week
YEAR WEEK SALE SALE_LIST
----- ---- ---------- --------------------------------------------------
2001 20 118.03 22.37, 118.03, 233.7, 141.78
2001 21 233.70 118.03, 233.7, 141.78, 22.38
2001 22 141.78 118.03, 233.7, 141.78, 22.38, 136.92
...
2001 29 116.85 94.48, 116.85, 162.91, 92.21
The PRESENTNNV function is similar to PRESENTV, but provides the additional ability to differentiate
between references to non-existent cells and null values in existing cells.
The syntax for the function
PRESENTNNV is
PRESENTNNV 函数相似于PRESENTV,但是提供而外的能力区别非存在的单元格与存在的单元格中的null值。
函数PRESENTNNV 的句法如下:
PRESENTNNV (cell_reference, expr1, expr2).
If the first argument cell_reference references an existing cell and if that cell contains non-null
value, then the first argument expr1 is returned, or else the second argument expr2 is returned. In
contrast, the PRESENTV function checks for just the existence of a cell, whereas the PRESENTNNV function checks for both the existence of a cell and Null values in that cell.
Table 9-1 lists shows the values returned from these two functions in four different cases.
如果第一个参数cell_reference引用一个存在的单元格且如果单元格包含非null值,则第一个参数expr1返回,否则第二个参数expr2
返回。相比较而言,PRESENTV函数只检查某个单元格的存在性,而PRESENTNNV函数对单元格的存在性和单元格的Null值都做检查。
表
9-1列出这两个函数在四种情况下的返回值。
Table 9-1. Presentv and presentnnv Comparison
Cell exists? |
Null? |
Presentv |
Presentnnv |
Y |
Not null |
expr1 |
expr1 |
Y |
Null |
expr1 |
expr2 |
N |
Not null |
expr2 |
expr2 |
N |
Null |
expr2 |
expr2 |
分享到:
相关推荐
基于STM8单片机的编程实例,可供参考学习使用,希望对你有所帮助
Matlab遗传优化算法等算法 求解 生鲜配送问题 路径优化 时间窗 新鲜度 损成本 等约束 程序+算法+参考文献
计算机组成原理课程设计任务书 2021-3-1修订版1
单向辐射ugr模型 包含单向辐射电场模,上下表面辐射损耗,能带,q因字。
光伏锂电池储能功率协调控制系统仿真 [1]左侧光伏Boost控制部分:采用扰动观察法来进行MPPT最大功率跟踪,其中可以改变光照和温度模拟环境工况阶跃: [2]锂电池双向Buck_Boost:采用双闭环控制策略,给定负载电压外环,电流内环,通过稳定负载电压从而控制电流进行充放电 [3]负载电压能够稳定在设定值48V,锂离子电池对功率进行功率协调补偿 仿真运行工况模式: (1)当外界光照变弱,光伏输出功率不能满足负载所需功率,储能会放电进行补偿功率 (2)当外界光照变强,光伏输出功率超过负载所需功率,多余的功率储能会充电进行储存
激光熔覆数值模拟 COMSOL仿真 双椭球热源 采用双椭球热源模型,考虑材料热物性参数、相变、马兰戈尼效应、布辛涅斯克近似等,动网格模拟熔覆层,计算瞬态温度场和流场。
multisim学习Multisim2001电路设计及仿真入门与应用附带光盘含大量实例提取方式是百度网盘分享地址
HFI高频注入仿真 直接转矩控制,滑模观测器MATLAB仿真模型
拿来就用的张定友标定法实验报告,特别详细和完整 一、实验目的 3 二、实验器材 3 三、 张正友标定法原理 3 四、实验步骤 4 4.1 整体流程 4 4.2图像采集 4 4.3特征点提取 5 4.4相机标定 5 4.5畸变校正 6 五、 实验结果 6 5.1 内参矩阵K 6 5.2 畸变系数D 7 5.3 外参矩阵 和 7 5.4 标定误差的计算 8 六、实验结论 9 6.1标定结果的准确性与图像数量密切相关 9 6.2标定图像的分布与角度多样性对标定结果的影响 9 6.3重投影误差的评估 9 6.4畸变系数的准确性 9 6.5OpenCV 工具的使用简便性: 9 七、参考文献 10 八、附件 11
内容概要:本篇文章基于 Flask 框架讲解了一个具体的 API 接口实现方法,该接口用于触发特定ID关联的应用程序运行流程(利用Docker容器执行指定的应用Python脚本)。具体地,在接收 POST 请求之后,根据提供的应用ID来检索对应应用程序的相关路径、镜像名称与主脚本的位置等信息,并且尝试将应用程序目录及其相关联的数据目录挂载进一个临时创建出来的docker环境内以运行主要入口脚本,整个执行过程限定在一小时内完成。一旦成功则把结果以 JSON 包的形式发送回客户端,若是出现错误情况,如找不到对应的 App 或者在执行时发生异常或是超出了时限都将给予相应的JSON报错回复。 适用人群:有一定网络编程以及 Flask 框架使用基础的人群,特别是有志于深入研究 Python 网络服务器构建,掌握如何集成外部组件或容器化应用程序来提升业务处理能力的学生或者是工程师。 使用场景及目标:为用户提供一种简易但实用的方式让 Flask Web 应用可以异步地调用位于远端或本地机器上的 Docker 容器内的脚本来开展某些任务,如进行长时间的数据处理作业或是调用第三方工具等。
HFI高频方波注入方案stm32f405 无感FOC控制 直接闭环启动 永磁同步电机无感控制,0速带载启动,堵转保持扭矩 低速HFI, 高速SMO,全速域运行。 基于stm32f405。 高频注入零速启动三步走: 1 .先是高频注入,角度估算收敛。 2.脉冲NS磁极辨识。 3 .角度,速度双闭坏零速启动运行。 包括完整的cubemx配置文件,mdk工程,原理图和开发笔记,初始角度检测仿真,代码全C语言,宏定义选项均有中文注释,方便我植到自己的项目中。 内涵升级版hfi程序和新的foc程序框架,新版hfi程序速度波动更小。
数据来源:基于上市公司公告、年报等相关数据整理计算 数据范围:沪深京上市公司A股,包括主板、中小企业板、创业板、科创板、北京证交所服务板块等 数据详情: https://blog.csdn.net/yushibing717/article/details/144893810 包含六大类数据: 1、上市公司研究报告发布机构关联表20010101-20240929: ReportID [研究报告编码] - 自动生成的一组序列 Title [标题] - 研究报告的标题 DeclareDate [发布日期] - 研报对外发布日期 InstitutionName [发布机构名称] - 如果一个研报对应多个发布机构,分多条录入 2、上市公司研究报告分类关联表20010101-20240929: 3、上市公司研究报告基本信息20010101-20240929 4、上市公司研究报告人员关联表20010101-20240929 5、上市公司研究报告行业关联表20060703-20240929 上市公司研究报告证券关联表20010101-20240929.......
基于STM8单片机的编程实例,可供参考学习使用,希望对你有所帮助
基于STM8单片机的编程实例,可供参考学习使用,希望对你有所帮助
GEC6818 人脸检测
基于STM8单片机的编程实例,可供参考学习使用,希望对你有所帮助
内容概要:本文档是一份详尽的轨道交通信号与控制专业的综合实验指导手册,涵盖了五个主要实验项目,旨在帮助学生深入理解和实践轨道交通领域的关键技术。具体内容包括ZPW-Z000轨道电路信号的FSK调制与解调、机车信号噪声干扰、应答器报文编制与CRC校验。每个实验详细介绍了目的、原理、任务及实验步骤,同时提供了实验报告要求。通过这些实验,学生们能够全面了解和掌握轨道交通信号系统的工作机制和核心技术。 适用人群:高等院校电气与控制工程学院的本科生、研究生,以及从事轨道交通信号与控制系统研究的技术人员。 使用场景及目标:适用于课堂教学、实验课程和研究项目,帮助学生和研究人员掌握轨道电路信号的FSK调制与解调技术,理解噪声对机车信号的影响及应对措施,熟悉应答器报文的设计与CRC校验机制。目标是提高学生的动手能力、实验技能和理论素养,培养他们解决实际问题的能力。 其他说明:该实验手册不仅为学生提供了详细的实验指南,还为教师和实验技术人员提供了一套科学的教学和实验工具,有助于提升教学质量。同时,这些实验也为未来的研究和发展打下了坚实的基础。
基于 OpenCV 和 Angular Velocity 读数的高精度算法,该算法可以从五个不同的视频中重现汽车的方向盘角度。
简易高考志愿填报辅助工具(含源码与说明).zip [资源说明] 1、该项目是团队成员近期最新开发,代码完整,资料齐全,含设计文档等 2、上传的项目源码经过严格测试,功能完善且能正常运行,请放心下载使用! 3、本项目适合计算机相关专业(人工智能、通信工程、自动化、电子信息、物联网等)的高校学生、教师、科研工作者、行业从业者下载使用,可借鉴学习,也可直接作为毕业设计、课程设计、作业、项目初期立项演示等,也适合小白学习进阶,遇到问题不懂就问,欢迎交流。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 5、不懂配置和运行,可远程教学 6、欢迎下载,沟通交流,互相学习,共同进步!