# set 修飾子

セットは選択を追加・変更することで修飾できます。そのような修飾子は、set 数式で使用できます。

この修飾子は、項目の選択を定義する値を含む 1 つあるいは複数の項目名で構成されており、すべてが「&lt;」と「&gt;」で囲まれます。例: `<Year={2007,+2008},Region={US}>`。項目名と項目値は通常どおり引用符で囲みます （例：`<[Sales Region]={’West coast’, ’South America’}>`）。

set 修飾子は set 識別子に先行する選択内容を変更します。set 識別子を参照していない場合、現在の選択のステートは黙示的となります。

選択は、以下のような方法で定義します。

## 他の項目に基づくもの

簡単な例としては、`<OrderDate = DeliveryDate>` などの他の項目の選択値に基づいた選択が挙げられます。この修飾子は、DeliveryDate から選択値を取得し、OrderDate に適用します。distinct 値が多数 (200 以上) ある場合は、CPU に多大な負荷がかかるため避けてください。

## 要素セットに基づいたもの

set 数式の最も一般的な例としては、中括弧で囲まれた一連の項目値に基づくものが挙げられます。各値は `<Year = {2007, 2008}>` のようにコンマで区切られています。中括弧は要素セット (明示的な項目値または検索フィールド値) を定義します。

括弧内の一連の値に空白や特殊文字が含まれていない限り、引用符を用いる必要はありません。該当の一連の値は、単に項目値に関して比較されます。この比較では大文字と小文字は区別されません。

括弧内の一連の値に空白や特殊文字が含まれている場合、またはワイルドカードを使用したい場合には、値を引用符で囲む必要があります。括弧内の値が明示的な項目値である場合は、一重引用符を使用します。こうすることで、一連の値と個々の項目値の間で大文字と小文字を区別して検索することが可能になります。

ワイルドカードを含む文字列、または関係演算子や等号で始まる文字列を検索する場合には、二重引用符を使用します。例えば、`<Ingredient = {"*Garlic*"}>` は、文字列 ’Garlic’ を含むすべての ingredient を選択します。二重引用符は、例えば `<Ingredient = {[*Garlic*]}>` のように角括弧に置き換えることもできます。二重引用符はまた、``<Ingredient = {`*Garlic*`}>`` のようにアクサン グラーブにも置き換えられます。検索では大文字と小文字は区別せず。

情報メモ

以前のバージョンの QlikView では一重と二重の引用符が区別されず、引用符で囲んだ文字列はすべて検索の対象として処理されていました。下位互換性を維持するため、旧バージョンの QlikView で作成したドキュメントは、引き続き前のバージョンの場合と同様に操作できます。QlikView November 2017 以降のバージョンで作成したドキュメントでは、一重引用符と二重引用符が区別されます。

## 強制除外

and モードの項目では、強制除外も可能です。特定の項目値を強制的に除外したい場合は、項目名の前に「~」を使用します。

例と結果:

結果の例

| 例 | 結果 |
| --- | --- |
| `sum( {1<Region= {USA} >} Sales )` | 現在の選択条件を無視して、USA 地域の sales を返します |
| `sum( {$<Region = >} Sales )` | 現在の選択条件における「Region」での選択を除いた sales を返します |
| sum( {&lt;Region = &gt;} Sales ) | 上記の例と同じ値が返されます。set 修飾子が省略されている場合は $ と見なされます。<br><br>情報メモ前の 2 つの例にある構文は、「Region」での選択がないと解釈されるので、他の選択によって絞り込まれたすべての region が可能な値となります。これは、region がないと解釈される、構文 &lt;Region = {}&gt; あるいは等号の右側の他のテキスト (空の要素セットを暗示する結果となる）とは異なります。 |
| sum( {$&lt;Year = {2000}, Region = {US, SE, DE, UK, FR}&gt;} Sales ) | 現在の選択条件における sales が返されますが、「Year」と「Region」で新たな選択が行われます。 |
| sum( {$&lt;~Ingredient = {“\*garlic\*”}&gt;} Sales ) | 項目 Ingredient は AND モードです。<br><br>現在の選択条件から、文字列 garlic を含むすべての ingredient を強制的に除外した sales が返されます。 |
| sum( {$&lt;Year = {“2\*”}&gt;} Sales ) | 現在の選択条件で year が 2 で始まる slales が返されます。つまり恐らくは、Year 項目で選択されている 2000 年以降が返されます。 |
| sum( {$&lt;Year = {“2\*”,”198\*”}&gt;} Sales ) | 上記に加え、ここでは 1980 年代も選択対象となります。 |
| sum( {$&lt;Year = {“&gt;1978&lt;2004”}&gt;} Sales ) | 現在の選択条件の販売を返しますが、この場合、全体の販売を合計するため、年の範囲を指定する数値検索が使用されます。 |

情報メモ

テキスト オブジェクトなどのオブジェクトの特定の項目値を強制的に除外する場合は、スクリプトの構文を変更する必要があります。例えば、スクリプト ステートメントが次の場合:

`=count({<ANDActor=>}DISTINCT Title)`

次のように変更します:

`=count({<~ANDActor=, ANDActor=>} DISTINCT Title)`