For..next
for..next 控制语句是一个带有计数器的脚本迭代构造。指定的高低限值之间的计数器变量的每个值均会执行由 for 和 next 限定的循环中的语句。
语法:
For counter = expr1 to expr2 [ step expr3 ]
[statements]
[exit for [ ( when | unless ) condition ]
[statements]
Next [counter]
表达式 expr1、expr2 和 expr3 仅会在首次进入循环时进行求值。计数器变量的值可通过循环内的语句进行更改,但这并非出色的编程做法。
如果在循环内遇到 exit for 子句,则脚本执行会转移至表示循环结束的 next 子句之后的第一个语句。exit for 子句可通过选择性使用 when 或 unless 后缀变为有条件子句。
参数:
参数 | 说明 |
---|---|
counter | 一个变量名。如果 counter 在 next 之后指定,变量名必须与对应的 for 之后查找的变量名相同。 |
expr1 | 一个表达式,可决定与应执行循环有关的 counter 变量的第一个值。 |
expr2 | 一个表达式,可决定与应执行循环有关的 counter 变量的最后一个值。 |
expr3 | 一个表达式,可决定每执行一次循环 counter 变量增加的值。 |
condition | 用于评估 True 或 False 的逻辑表达式。 |
statements | 一个或多个 Qlik Sense 脚本语句的任意组。 |
示例 1: 加载文件序列
// LOAD files file1.csv..file9.csv
for a=1 to 9
LOAD * from file$(a).csv;
next
示例 2: 加载随即文件数量
在本例中,我们假定有数据文件 x1.csv、x3.csv、x5.csv、x7.csv 和 x9.csv。加载在使用 if rand( )<0.5 then 条件的随机点停止。
for counter=1 to 9 step 2
set filename=x$(counter).csv;
if rand( )<0.5 then
exit for unless counter=1
end if
LOAD a,b from $(filename);
next