メイン コンテンツをスキップする 補完的コンテンツへスキップ

For each..next

for each..next 制御ステートメントは、コンマ区切りリストの各値に対して、1 つまたは複数のステートメントを実行するスクリプト反復構文です。fornext で囲まれたループ内のステートメントは、リストの各値で指定された回数分実行されます。

構文:  

現在のディレクトリ内のファイルとディレクトリ名のリストの生成を可能にする特殊構文です。

for each var in list

[statements]

[exit for [ ( when | unless ) condition ]

[statements]

next [var]

引数:  

引数
引数説明
varループ実行のたびに、リストから新しい値を取得するスクリプト変数名。varnext の後に指定されている場合は、対応する for each の後に検出されるものと同じ変数名である必要があります。

var 変数の値は、ループ内のステートメントで変更できますが、これは良いプログラミングとは言えません。

exit for 節がループ内で出現した場合、スクリプトの実行はループの終了を示す next 節の後の最初のステートメントに移ります。exit for 節は、whenunless サフィックスを使用して条件を付けることができます。

情報メモfor each..next ステートメントは制御ステートメントであり、セミコロンまたは改行コードで終わっているため、使用可能な 3 つの節 (for eachexit fornext) が行をまたぐことはできません。

構文:  

list := item { , item }

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

 

引数
引数説明
constant任意の数値または文字列。スクリプトに直接書き込まれた文字列は単一引用符で囲む必要があります。単一引用符で囲まれていない文字列は、変数として解釈され、変数の値が使用されます。数字は単一引用符で囲む必要はありません。
expression任意の式。
mask

有効なファイル名の文字や、標準的なワイルドカード文字 *? を含むファイル名またはディレクトリ名のマスク。

絶対ファイル パスや lib:// パスを使用できます。

conditionTrue または False の評価を実施する論理式。
statements1 つ以上の Qlik Sense スクリプト ステートメントのグループ。
filelist mask

この構文は、ファイル名のマスクに一致する現在のディレクトリ内にある、すべてのファイルのコンマ区切りリストを生成します。

dirlist mask

この構文は、ディレクトリ名のマスクに一致する現在のフォルダ内にある、すべてのディレクトリのコンマ区切りリストを生成します。

fieldvaluelist maskこの構文は、Qlik Sense にすでにロードされた項目の値を使って繰り返されます。
警告メモQlik Web ストレージ プロバイダ コネクタ とその他の DataFile 接続は、ワイルドカード (* および ?) の使用に対応していません。

例1: ファイルのリストのロード

// 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

例2: ファイル リストをディスクに作成

この例では、フォルダにあるすべての Qlik Sense 関連ファイルのリストをロードしています。

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://DataFiles')

例3: 項目の値を使って繰り返し

この例は、ロードされた値のリストである FIELD を使って繰り返され、新しい項目 NEWFIELD を生成します。FIELD の 1 つの値につき、2 つの NEWFIELD レコードが作成されます。

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

この結果、テーブルは次のようになります。

Example table
NEWFIELD
one-1
one-2
two-1
two-2
three-1
three-2

詳細を見る

 

このページは役に立ちましたか?

このページまたはコンテンツに、タイポ、ステップの省略、技術的エラーなどの問題が見つかった場合は、お知らせください。改善に役立たせていただきます。