# Before - チャート関数

Before() は、ピボット テーブルの行セグメント内の現在列の前の列に、ピボット テーブルの軸値で評価された expression の値を返します。

構文:

Before([TOTAL] expr [, offset [, count]])

情報メモピボット テーブル以外のすべてのチャート タイプの場合、この関数は NULL を返します。

情報メモチャートの式いずれかにこのチャート関数が使用されている場合、チャートの y 値のソート、またはテーブルの式列ごとのソートは許可されません。よって、これらのソート機能は自動的に無効になります。ビジュアライゼーションまたはテーブルでこのチャート関数を使用すると、ビジュアライゼーションのソートは、レコード間の関数に対するソートされた入力の状態に戻ります。

引数

| 引数 | 説明 |
| --- | --- |
| expr | メジャーの対象となるデータが含まれている数式または項目。 |
| offset | offset n を 1 より大きい値にすると、数式の評価が現在の列からさらに左の n 列に移動します。<br><br>offset に 0 を指定すると、現在の列で数式が評価されます。<br><br>offset が負の値である場合、Before 関数は、相応する正の offset 値が付いた After 関数と同様に機能します。 |
| count | 3 番目のパラメーター count を 1 より大きい値に指定すると、関数は元のセルから左に数えて、テーブルの各列に対して count の値までの範囲の値を返します。 |
| TOTAL | テーブルが 1 軸の場合、または TOTAL 修飾子が引数として使用される場合は、現在の列セグメントは常に列全体と等しくなります。<br><br>[集計範囲の定義](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/define-aggregation-scope.htm) |

行セグメントの最初の列では、これより前に列が存在しないため NULL 値が返されます。

ピボット テーブルに複数の水平軸が存在する場合、現在の行セグメントには、項目ソート順の最後の水平軸を示す行を除くすべての軸行の現在列と同じ値を持つ列だけが含まれます。ピボット テーブルの水平軸の項目間ソート順は、上から下への軸の順序で定義されます。。

例: チャートの数式

| 例 | 結果 |
| --- | --- |
| `Before( Sum(Sales ))` | 現在の列のすぐ左にある前の列の `Sales` の合計を返します。 |
| `Before( Sum(Sales ), 2)` | 現在の列の 2 列左にある列の `Sales` の合計を返します。 |
| `Before( Total Sum( Sales ))` | 現在の列のすぐ左にある前の列の `Sales` の総合計を返します。 |
| `RangeAvg ( Before(Sum(x),1,3))` | 現在の列のすぐ左にある 3 つの列で評価された `sum(x)` 関数の 3 つの結果の平均を返します。 |

## 例 - Before の基本

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/InterRecordFunctions/before.htm)

#### チャートの数式

概要

データ ロード エディターを開き、以下のロード スクリプトを新しいセクションに追加します。

ロード スクリプトには次が含まれています:

* 「`Example`」というデータ テーブルにロードされるデータセット。

* データ テーブル内の次の項目:

  * `Year`

  * `Quarter`

  * `Sales`

ロード スクリプト

```
Example:
Load * inline [
Year, Quarter, Sales
2023, Q1, 5000
2023, Q2, 4000
2023, Q3, 6000
2023, Q4, 7000
];
```

結果

データをロードしてシートを開きます。新しいピボット テーブルを作成し、次の項目を行軸として追加します。

* `Year`

この項目を列軸として追加します。

* `Quarter`

次のメジャーを作成します:

* `=Sum(Sales)`、売上の合計を計算します。

* `=Before(Sum(Sales))`、前の四半期の売上合計を表示します。

結果テーブル

| 年 | Q1 | Q2 | Q3 | Q4 |  |  |  |  |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| Sum(Sales) | Before(Sum(Sales)) | Sum(Sales) | Before(Sum(Sales)) | Sum(Sales) | Before(Sum(Sales)) | Sum(Sales) | Before(Sum(Sales)) |  |
| 2023 | 5000 | - | 4000 | 5000 | 6000 | 4000 | 7000 | 6000 |

結果を見ると、`Before` 関数が各 `Quarter` の `Sum(Sales)` 列のすぐ左にある前の列の値を返していることがわかります。たとえば、Q4 では、その期間の `Sum(Sales)` 値は `7000` です。`Q4` の `Before` 関数の出力は `6000` で、これは `Q4` の `Sum(Sales)` のすぐ左の列、つまり `Q3` の `Sum(Sales)` の値です。

## 例 - Before 関数を使用して前年比の売上成長を計算する

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/InterRecordFunctions/before.htm)

#### チャートの数式

概要

データセットには、数年分の売上高が含まれています。企業は、各年の総売上高と、前年の値に基づく売上高の伸びを提示したいと考えています。

データ ロード エディターを開き、以下のロード スクリプトを新しいセクションに追加します。

ロード スクリプトには次が含まれています:

* 「`Example`」というデータ テーブルにロードされるデータセット。

* データ テーブル内の次の項目:

  * `Year`

  * `Sales`

ロード スクリプト

```
Example:
Load * inline [
Year, Sales
2021, 1300
2022, 1800
2023, 2000
2024, 2100
];
```

結果

データをロードしてシートを開きます。新しいピボット テーブルを作成し、次の項目を列軸として追加します。

* ` Year
                                       `

次のメジャーを作成します:

* `=Sum(Sales)`、売上の合計を計算します。

* `=(Sum(Sales) - Before(Sum(Sales))) / Before(Sum(Sales))`、年間売上高の伸びを計算します。 この値をパーセンテージで表示するには、 [数値書式] で、 [数値] &gt; [書式設定 [シンプル]] &gt; [12.34%] を選択します。

結果テーブル

| 2021 | 2022 | 2023 | 2024 |  |  |  |  |
| --- | --- | --- | --- | --- | --- | --- | --- |
| Sum(Sales) | (Sum(Sales) - Before(Sum(Sales)))/Before(Sum(Sales)) | Sum(Sales) | (Sum(Sales) - Before(Sum(Sales)))/Before(Sum(Sales)) | Sum(Sales) | (Sum(Sales) - Before(Sum(Sales)))/Before(Sum(Sales)) | Sum(Sales) | (Sum(Sales) - Before(Sum(Sales)))/Before(Sum(Sales)) |
| 1300 | - | 1800 | 38.46% | 2000 | 11.11% | 2100 | 5.00% |

`Before` 関数の出力は、前年度の売上高に基づいて前年比成長率を返します。たとえば、`2022` 年の売上高の合計は `2021` 年の `Sum(Sales)`よりも `38.46%` 高くなりました。

ヒント メモこのシナリオでは、`After` 関数を使用して同じ売上成長計算を実行することもできます。関数パラメーターに負のオフセット数を指定すると、`After` 関数は対応する正のオフセット数を持つ `Before` 関数のように動作します。たとえば、`After` 関数 (負のオフセット値 `-1`) を使用した「=(Sum(Sales)-After(Sum(Sales),-1))/(After(Sum(Sales),-1))」の式は、`Before` 関数と同じ年間売上成長の結果を返します。  
`=(Sum(Sales)-After(Sum(Sales),-1))/(After(Sum(Sales),-1))`。