# set 分析

アプリで選択するときは、データ内のレコードのサブセットを定義します。`Sum()`、`Max()`、`Min()`、`Avg()`、`Count()` などの集計関数は、このサブセットに基づいて計算されます。

つまり、選択内容によって集計の範囲が定義されます。 計算が行われるレコードのセットを定義します。

set 分析は、現在の選択条件によって定義されたレコードのセットとは異なるスコープを定義する方法を提供します。この新しいスコープは、代替値選択と見なすこともできます。

これは、現在の選択を特定の値 (例えば、昨年の値や世界の市場シェア) と比較する場合に役立ちます。

[Set Analysis examples](https://play.vidyard.com/xFzHJPodxxWJNV5MVizDnv)

## set 数式

set 数式は中括弧で囲まれた集計関数内外で使用できます。

内部の set 数式

```
Sum( {$<Year={2021}>} Sales )
```

外部の set 数式

```
{<Year={2021}>} Sum(Sales) / Count(distinct Customer)
```

内部と外部の set 数式の詳細については、「[内部と外部の set 数式](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/SetAnalysis/set-expressions-inner-and-outer.htm)」を参照してください。

set 数式には、次の要素の組み合わせが含まれます。

* 識別子set 識別子は他の場所で定義された選択を表します。また、データ内の特定のレコード セットを表します。これは、現在の選択、ブックマークからの選択、または並列ステートからの選択である可能性があります。単純な set 数式は、ドル記号 {$} など、現在の選択のすべてのレコードを意味する 1 つの識別子で構成されます。

  例: `$`、`1`、`BookMark1`、`State2`

  参照: [set 識別子](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/SetAnalysis/set-identifiers.htm)

* 演算子set 演算子を使用して、異なる set 識別子間の和集合、差分、または共通部分を作成できます。このようにして、set 識別子によって定義された選択のサブセットまたはスーパーセットを作成できます。

  例: `+`、`-`、`*`、`/`

  参照: [set 演算子](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/SetAnalysis/set-operators.htm)

* 修飾子set 修飾子を set 識別子に追加して、その選択を変更できます。修飾子は単独で使用することもでき、既定の識別子を変更します。修飾子は山括弧 `<…>` でくくる必要があります。

  例: `<Year={2020}>`、`<Supplier={ACME}>`

  参照: [set 修飾子](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/SetAnalysis/set-modifiers.htm)

* 空セット保持フラグ 。外部 set 数式のチェーン内の最後の式を除く、すべての外部 set 数式で使用できる高度な要素。 このフラグは、これらの外部 set 数式で定義されたセットの暗黙的なセットのクリアをオーバーライドし、高度な数式の構成を簡素化します。

  構文: `&`

  参照: [空セット保持フラグ](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/SetAnalysis/empty-set-preserve-flag.htm)

要素が組み合わされて、set 数式が形成されます。

set 数式の要素

set 数式の要素

set 数式の要素 ![set 数式の要素。](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Resources/Images/ui_gen_setanalysis_callout.png)

例えば、上記の set 数式は、集計 `Sum(Sales)` から構築されます。

最初のオペランドは、現在の選択の `2021` 年の売上を返します。これは、`$` set 識別子と `2021` 年の選択を含む修飾子によって示されます。2 番目のオペランドは `Sweden` に対して `Sales` を返し、`1` set 識別子で示される現在の選択条件を無視します。

最後に、数式は、`+` set 演算子で示されるように、2 つのセット オペランドのいずれかに属するレコードで構成されるセットを返します。

完全な構文の説明については、[set 数式の構文](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/SetAnalysis/syntax-for-sets.htm) を参照してください。

## 例

上記の set 数式要素を組み合わせた例は、次のトピックで利用できます。

* [検索を使った set 修飾子](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/SetAnalysis/set-modifiers-advanced-searches.htm)

* [ドル記号展開を使った set 修飾子](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/SetAnalysis/set-modifiers-dollar-sign-expansions.htm)

* [set 演算子を使った set 修飾子](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/SetAnalysis/set-modifiers-set-operators.htm)

* [暗黙の set 演算子を使った set 修飾子](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/SetAnalysis/set-modifiers-using-assignments-implicit-set-operators.htm)

* [set 関数を使用した set 修飾子](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/SetAnalysis/set-modifiers-implicit-field-value-definitions.htm)

他の数式を試すには、[チュートリアル - set 数式の作成](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/SetAnalysis/set-analysis-tutorial.htm) を参照してください。

## Natural set

通常、set 数式は、データ モデル内のレコードのセットと、このデータのサブセットを定義する選択の両方を表します。この場合、セットは natural set と呼ばれます。

set 識別子は、set 修飾子の有無にかかわらず、常に natural set を表します。

ただし、set 演算子を使用した set 数式もレコードのサブセットを表しますが、通常、項目値の選択を使用して記述することはできません。そのような数式は non-natural set です。

例えば、`{1-$}` によって与えられたセットは、常に選択によって定義されるとは限りません。したがって、それは natural set ではありません。これは、次のデータをロードしてテーブルに追加し、フィルター パネルを使用して選択することで表示できます。

```
Load * Inline
[Dim1, Dim2, Number
A, X, 1
A, Y, 1
B, X, 1
B, Y, 1];		
```

Dim1 と Dim2 を選択すると、次のテーブルに示すビューが表示されます。

natural と non-natural set を持つテーブル

natural と non-natural set を持つテーブル

natural と non-natural set を持つテーブル ![natural と non-natural set を持つテーブル。](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Resources/Images/ui_gen_setanalysis_natural.png)

最初のメジャーの set 数式は natural set を使用します。これは、{$} で行われた選択に対応します。

2 番目のメジャーは異なります。{1-$} を使用します。このセットに対応する選択はできないため、non-natural set です。

この区別は、いくつかの結果をもたらします。

* set 修飾子は set 識別子にのみ適用できます。任意の set 数式に適用することはできません。たとえば、次のような set 数式を使用することはできません。

  ```
  { (BM01 * BM02) <Field={x,y}> }
  ```

  ここで、通常の (丸) 括弧は、set 修飾子を適用する前に BM01 と BM02 の共通部分を評価する必要があることを意味します。その理由は、変更できる要素セットがないためです。

* P() および E() 要素関数内で non-natural set を使用することはできません。これらの関数は要素セットを返しますが、non-natural set から要素セットを推測することはできません。

* データ モデルに多くのテーブルがある場合、non-natural set を使用するメジャーは、常に正しい軸の値に起因するとは限りません。例えば、次のチャートでは、除外された販売数の一部は正しい Country に起因しますが、他の数は NULL を Country として持っています。

  non-natural set のチャート

  non-natural set のチャート

  non-natural set のチャート ![non-natural set を持つテーブル。](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Resources/Images/ui_gen_setanalysis_non_natural.png)

  割り当てが正しく行われるかどうかは、データ モデルによって異なります。この場合、選択によって除外された国に関連する番号を割り当てることはできません。

| 識別子 | 説明 |
| --- | --- |
| 1 | 行われた選択に関係なく、アプリケーションに含まれるすべてのレコード セットを表しています。 |
| $ | 現在選択されているレコードを表しています。set 数式 {$} は、set 数式を提示していない状態と同様です。 |
| $1 | 以前の選択を表しています。$2 は以前の 1 つを除く選択を表し、以下同様に表します。 |
| $\_1 | 次 (将来) の選択を表しています。$\_2 は次の 1 つを除く選択を表し、以下同様に表します。 |
| BM01 | 任意のブックマーク ID またはブックマーク名を使用できます。 |
| MyAltState | ステート名ごとに並列ステートで行った選択を参照できます。 |

| 例 | 結果 |
| --- | --- |
| sum ({1} Sales) | アプリの sales の合計が返されます。選択は無視されますが、軸は無視されません。 |
| sum ({$} Sales) | 現在の選択の sales が返されます (sum(Sales) と同様)。 |
| sum ({$1} Sales) | 前の選択の sales が返されます。 |
| sum ({BM01} Sales) | BM01 という名前のブックマークの sales が返されます。 |

| 例 | 結果 |
| --- | --- |
| sum({$&lt;OrderDate = DeliveryDate&gt;} Sales) | OrderDate = DeliveryDate の現在の選択の sales が返されます。 |
| sum({1&lt;Region = {US}&gt;} Sales) | 現在の選択を無視して、US 地域の sales が返されます。 |
| sum({$&lt;Region = &gt;} Sales) | 選択における Region での選択を除いた sales が返されます。 |
| sum({&lt;Region = &gt;} Sales) | 上記の例と同じ値が返されます。set 修飾子が省略されている場合は $ と見なされます。 |
| sum({$&lt;Year={2000}, Region={“U\*”}&gt;} Sales) | 現在の選択条件での sales が返されますが、Year と Region で新たな選択が行われます。 |

関連する学習コンテンツ：

* [現在の選択条件の状態を使用して set 数式を構成するにはどうすればよいですか?](https://help.qlik.com/lnk/How_configure_set_expression_using_selection_state)

## 詳細を見る

* [現在の選択条件の状態を使用して set 数式を構成するにはどうすればよいですか?](https://help.qlik.com/lnk/How_configure_set_expression_using_selection_state)