# SimpleLoop

入力マップエレメントに基づいてループを作成します。

SimpleLoopファンクションによって、[Loop expression] (ループ式)タブに関連付けられている出力マップエレメントが、入力マップエレメントの引数式の値に応じてループするよう指定されます。

入力マップエレメントが、ループする出力マップエレメントにマッピングされる場合、SimpleLoopファンクションが、直近の祖先ルーピング出力エレメントの位置に自動的に作成され、ループが定義されます。ソートキーを指定しない場合、出力の順序は入力エレメントと同じ順序になります。

このファンクションは[Loop] (ループ)タブでのみ、または集計式の部分としてのみ使用できます。

## 関連する例

* [ループ反復をグルーピング](https://help.qlik.com/talend/ja-JP/data-mapper-functions-reference-guide/8.0-R2024-04-and-earlier/grouping-loop-iterations "SimpleLoopファンクションをDistinct Child Elementプロパティと共に使えば、子レベルの値に基づいてループ反復をグルーピングできます。")
* [ネスト化されたループをマッピング](https://help.qlik.com/talend/ja-JP/data-mapper-functions-reference-guide/8.0-R2024-04-and-earlier/mapping-nested-loops "ネスト化された入力ループを、ネスト化されたさまざまな出力ループにマッピングします。")
* [ループエレメントを値でフィルタリング](https://help.qlik.com/talend/ja-JP/data-mapper-functions-reference-guide/8.0-R2024-04-and-earlier/filtering-loop-elements-on-their-value "Greaterファンクションと共にSimpleLoopファンクションを使えば、値に基づいたループでエレメントをフィルタリングできます。")
* [ループエレメントをソート](https://help.qlik.com/talend/ja-JP/data-mapper-functions-reference-guide/8.0-R2024-04-and-earlier/sorting-loop-elements "AscendingSortファンクションと共にSimpleLoopファンクションを使えば、値に基づいたループでエレメントをソートできます。")
* [ループインデックスを返す](https://help.qlik.com/talend/ja-JP/data-mapper-functions-reference-guide/8.0-R2024-04-and-earlier/returning-loop-index "LoopIndexファンクションを使えば、ループとその親のインデックスが返されます。")
* [エレメントのコレクションにファンクションを適用](https://help.qlik.com/talend/ja-JP/data-mapper-functions-reference-guide/8.0-R2024-04-and-earlier/applying-functions-to-collections-of-elements "SimpleLoop式でAgMaximum、AgMinimum、AgAverageという各ファンクションを使い、複数の入力エレメントを収集してそのエレメントの最大値、最小値、平均値を計算します。")

## 引数

| Input Map Element | 入力ストラクチャーからルーピングエレメントを追加します。 |
| --- | --- |
| Filter | ブール値を返す式を指定します。この式は、ループのインスタンスごとに評価されます。このフィルター式がtrueを返す場合、インスタンスはループに含まれます。falseを返す場合、インスタンスはループから除外されます。 |
| Sort Keys | AscendingSortファンクションかDescendingSortファンクションを使ってループ反復をソートします。必要な回数だけ使用できます。 |
| Contexts | EnclosingContextファンクションかNestedContextファンクションを使ってコンテキストを指定します。EnclosingContextは、このループを内包する出力マップエレメントを指定します。指定しない場合は、最も近い上位(ancestor)のループマップエレメントが使用されます。 |

## プロパティ

| Distinct Option | ループしている入力エレメントの直接子エレメントのリストでDistinct Child Elementを選択したい場合はDirect Childを、別の入力エレメントを参照するようXPathを入力する場合はElement XPathを選択します。 |
| --- | --- |
| Distinct Child Element | [Direct child] (直接の子)オプションを選択する場合は、個別値の選択で使われる入力マップエレメントを選択します。これを選択すると、選択したエレメントに対して個別の値を含むループの繰り返しのみが考慮されます。選択しない場合は、入力マップエレメントのすべてのインスタンスが考慮されます。<br><br>ループに重複するサブエレメントが含まれている場合、 [Distinct Child Element]フィールドには、個別のサブエレメントのインスタンスを1つのみ取得するためのフィルターが用意されています。 |
| Distinct XPath | Element XPathオプションを選択した場合は、個別のエレメントを評価するXPath式を入力します。使用される入力表記がXMLでない場合は、式で表記を指定します。<br><br>たとえばCSV表記でaとbという名前のエレメントに対してfn:concatファンクションを使用したい場合、式はfn:concat(CSV:a,CSV:b)となります。 |
| Disable sort by distinct child | Distinct Child Elementを指定した場合にこのチェックボックスをオンにすると、個別の子によるソートではなくデフォルトのソートが保持されます。このチェックボックスが選択されていない場合、出力はDistinct Child Elementの値に基づいて昇順にソートされます。 |
| Emit Loop Instance If Empty | 入力ループのインスタンスがなく、出力でこのループの単独インスタンスを生成したい場合はこのプロパティを選択します。これはデフォルトの値を使ってループインスタンスを生成する時に便利です。 |
| Stream Input | このチェックボックスをオンにすると、ループの入力データをチャンクに分けて個別に処理できるようになります。このオプションを使わない場合、変換が実行される前に入力データ全体がメモリに読み取られます。Stream Inputが選択されるとセグメントで変換処理が行われるため、サイズの上限なく入力データが処理されます。<br><br>Stream Inputが選択されると、変換式に大幅な制限が課されます。詳細は、[ストリーミングの実行](https://help.qlik.com/talend/ja-JP/data-mapper-functions-reference-guide/8.0-R2024-04-and-earlier/streaming-execution_c.html)を参照してください。 |