For each..next

for each..next kontrol ifadesi, virgülle ayrılmış listedeki her bir değer için bir veya daha fazla deyimi yürüten bir kod yineleme yapısıdır. for ve next öğeleri arasına alınan döngüdeki deyimler, listedeki her bir değer için yürütülür.

Syntax:  

Özel söz dizimi geçerli dizinde dosya ve dizin adlarıyla listeler oluşturmayı mümkün kılar.

for each var in list

[statements]

[exit for [ ( when | unless ) condition ]

[statements]

next [var]

Arguments:  

Bağımsız Değişken Açıklama
var Her bir döngü yürütmesi için listeden yeni bir değer edinecek kod değişkeni adı. var öğesi next öğesinden sonra belirtilirse, karşılık gelen for each öğesinden sonra bulunan öğeyle aynı değişken adı olmalıdır.

var değişkeninin değeri döngü içinde deyimlerle değiştirilebilir, ancak bu iyi bir programlama uygulaması değildir.

Döngü içinde bir exit for cümlesiyle karşılaşılırsa, kodun yürütülmesi döngünün sonunu belirten next cümlesinden sonra gelen ilk deyime aktarılır. Bir exit for cümlesi, when veya unless sonekinin isteğe bağlı kullanımıyla koşullu hale getirilebilir.

Note: for each..next deyimi bir kontrol ifadesi olduğundan ve bu nedenle noktalı virgülle veya satır sonuyla bittiğinden, üç olası cümlesinin her biri (for each, exit for ve next) satır sınırını geçmemelidir.

Syntax:  

list := item { , item }

item := constant | (expression) | filelist mask | dirlist mask | fieldvaluelist mask

 

Bağımsız Değişken Açıklama
constant Herhangi bir sayı veya dize. Doğrudan koda yazılan bir dizenin tek tırnak içine alınması gerektiğini unutmayın. Tek tırnak içinde olmayan dize bir değişken olarak yorumlanır ve değişkenin değeri kullanılır. Sayıların tek tırnak içine alınması gerekmez.
expression Rastgele seçilen bir ifade.
mask

Geçerli dosya adı karakterlerini ve aynı zamanda standart joker karakterlerini (* ve ?) de içerebilen bir dosya adı veya klasör adı maskesi.

Mutlak dosya yollarını veya lib:// yollarını kullanabilirsiniz.

condition True veya False olarak değerlendirilen bir mantıksal ifade.
statements Bir veya daha fazla Qlik Sense kod deyiminden oluşan herhangi bir grup.
filelist mask

Bu söz dizimi, geçerli dizinde olup dosya adı maskesiyle eşleşen tüm dosyaların virgülle ayrılmış bir listesini oluşturur.

Note: Bu bağımsız değişken, yalnızca standart modda kütüphane bağlantılarını destekler. Bkz. Dosya sistemi erişim kısıtlaması
dirlist mask

Bu söz dizimi, geçerli klasörde olup klasör adı maskesiyle eşleşen tüm klasörlerin virgülle ayrılmış bir listesini oluşturur.

Note: Bu bağımsız değişken, yalnızca standart modda kütüphane bağlantılarını destekler. Bkz. Dosya sistemi erişim kısıtlaması
fieldvaluelist mask Bu söz dizimi, Qlik Sense içine önceden yüklenmiş bir alanın değerleri aracılığıyla yinelenir.

Example 1: Bir dosya listesini yükleme

// LOAD the files 1.csv, 3.csv, 7.csv and xyz.csv for each a in 1,3,7,'xyz' LOAD * from file$(a).csv; next

Example 2: Diskte dosyaların listesini oluşturma

Bu örnek, Qlik Sense ile ilgili dosyaların tümünü bir klasöre yükler.

sub DoDir (Root) for each Ext in 'qvw', 'qva', 'qvo', 'qvs', 'qvc', 'qvf', 'qvd' for each File in filelist (Root&'\*.' &Ext) LOAD '$(File)' as Name, FileSize( '$(File)' ) as Size, FileTime( '$(File)' ) as FileTime autogenerate 1; next File next Ext for each Dir in dirlist (Root&'\*' ) call DoDir (Dir) next Dir end sub call DoDir ('lib://MyData')

Example 3: Bir alanın değerleri aracılığıyla yineleme

Bu örnek, yüklenen FIELD değerlerinin listesi aracılığıyla yineleme yapar ve yeni bir alan (NEWFIELD) oluşturur. Her bir FIELD değeri için iki NEWFIELD kaydı oluşturulur.

load * inline [ FIELD one two three ]; FOR Each a in FieldValueList('FIELD') LOAD '$(a)' &'-'&RecNo() as NEWFIELD AutoGenerate 2; NEXT a

Elde edilen tablo şöyle görünür:

NEWFIELD
one-1
one-2
two-1
two-2
three-1
three-2