# Aggr - チャート関数

Aggr() は、指定された軸上で計算された数式の値の配列を返します。たとえば、顧客別、地域別 sales の最大値です。

Aggr 関数はネストされた集計に使用され、最初のパラメーター (内部集計) は軸の値ごとに 1 回計算されます。軸は、2 番目のパラメーター (および後続のパラメーター) で指定されます。

さらに、Aggr 関数は外部の集計関数で囲む必要があり、Aggr の結果の配列をネストされる集計への入力として使用します。

構文:

Aggr({SetExpression}[DISTINCT] [NODISTINCT ] expr, StructuredParameter{, StructuredParameter})

戻り値データ型： デュアル

引数：

引数

| 引数 | 説明 |
| --- | --- |
| expr | 集計関数で構成される数式。デフォルトで、集計関数は選択されたレコード セットに対して集計を行います。 |
| StructuredParameter | StructuredParameter は、軸と `(Dimension(Sort-type, Ordering))` 形式のソート基準 (オプション) で構成されています。<br><br>軸は単一項目であり、数式にはできません。軸を使用して、Aggr 数式で計算される値の配列が決定されます。<br><br>ソート基準が含まれている場合は、軸について計算された Aggr 関数により、作成された値の配列がソートされます。これは、Aggr 関数を囲んでいる数式の結果にソート順序が影響する場合に重要です。<br><br>ソート基準の使用法について詳しくは、「[構造化パラメータの軸へのソート基準の追加](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/aggr.htm#Sorting)」を参照してください。 |
| SetExpression | デフォルトでは、集計関数は選択されたレコード セットに対して集計を行います。Set 分析数式でレコード セットを定義することも可能です。 |
| DISTINCT | expression 引数の前に distinct 修飾子が配置されている場合、あるいは修飾子がまったく使用されていない場合は、軸の値の組み合わせごとに 1 つの戻り値のみ生成されます。これは正常な集計方法で、これらの異なる組み合わせがそれぞれチャートの 1 行に反映されます。 |
| NODISTINCT | expression 引数の前に nodistinct 修飾子が配置されている場合、軸の値の組み合わせは、いずれも基底のデータ構造に基づいて、複数の戻り値を生成する可能性があります。軸が 1 本だけの場合、aggr 関数は、ソース データの行数と同じ数の要素を含む配列を返します。 |

Sum、Min、Avg などの基本的な集計関数では数値が 1 つ返されるのに対し、Aggr()関数は、一時的な段階の結果セット (仮想テーブル) を作成することと比較することができ、その結果セットで別の集計を行うことができます。例えば、Aggr() ステートメントで顧客別の売上を合計して平均売上値を計算し、それから加算された結果の平均値を計算することができます:Avg(TOTAL Aggr(Sum(Sales),Customer))。

ヒント メモ複数のレベルでネストされたチャート集計を作成する場合は、計算軸で Aggr() 関数を使用してください。

制限事項:

Aggr() 関数の各軸は、単一の項目でなければならず、数式 (計算軸) にすることはできません。

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/aggr.htm)構造化パラメータの軸へのソート基準の追加

基本形式において、Aggr 関数構文の引数 StructuredParameter は単一軸です。数式Aggr(Sum(Sales, Month)) により、各月の総売上高の値が返されます。ただし、別の集計関数によって囲まれている場合は、ソート基準が使用される場合を除いて、予期しない結果になる可能性があります。これは、軸によって、数値やアルファベットなどの異なる基準でソートされるからです。

Aggr 関数の StructuredParameter 引数には、数式での軸のソート基準を指定できます。この方法により、Aggr 関数によって作成される仮想テーブルにソート順序を適用します。

引数 StructuredParameter の構文は次のとおりです。

(FieldName, (Sort-type, Ordering))

構造化パラメータはネストすることができます。

(FieldName, (FieldName2, (Sort-type, Ordering)))

ソート タイプは、NUMERIC、TEXT、FREQUENCY、または LOAD\_ORDER です。

各ソート タイプに関連付けられる順序タイプは次のとおりです。

許可される順序タイプ

| ソート タイプ | 許可される順序タイプ |
| --- | --- |
| NUMERIC | ASCENDING、DESCENDING、または REVERSE |
| TEXT | ASCENDING、A2Z、DESCENDING、REVERSE、または Z2A |
| FREQUENCY | DESCENDING、REVERSE 、または ASCENDING |
| LOAD\_ORDER | ASCENDING、ORIGINAL、DESCENDING、または REVERSE |

順序タイプ REVERSE と DESCENDING は同じです。

ソート タイプ TEXT の場合、順序タイプ ASCENDING と A2Z は同じであり、DESCENDING、REVERSE、Z2A は同じです。

ソート タイプ LOAD\_ORDER の場合、順序タイプ ASCENDING と ORIGINAL は同じです。

## 例: Aggr を使用したチャートの数式

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

#### 例 - チャートの数式

### チャートの数式例 1

#### ロード スクリプト

以下のデータをインライン データとしてデータロードエディタにロードして、以下のチャートの数式の例を作成します。

```
ProductData:

LOAD * inline [
Customer|Product|UnitSales|UnitPrice
Astrida|AA|4|16
Astrida|AA|10|15
Astrida|BB|9|9
Betacab|BB|5|10
Betacab|CC|2|20
Betacab|DD|25|25
Canutility|AA|8|15
Canutility|CC|0|19
] (delimiter is '|');
```

インライン ロードの使用の詳細については、「[インライン ロードを使用したデータのロード](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/inline-loads-qs.htm)」を参照してください。

#### チャートの数式

Qlik Sense シートで KPI のビジュアライゼーションを作成します。次の数式をメジャーとして KPI に追加します。

`Avg(Aggr(Sum(UnitSales*UnitPrice), Customer))`

#### 結果

376.7

#### 説明

数式 `Aggr(Sum(UnitSales*UnitPrice), Customer)` は、Customer 別の売り上げの合計値で、3 つの Customer の値として、295、715、120 の値の配列を返します。

実質的には、それらの値を含む明示的なテーブルまたは列を作成することなく、値の一時的なリストを作成したことになります。

これらの値は Avg() 関数に使われ、売り上げの平均値として 376.7 という値が算出されます

数式の詳細については、「[ビジュアライゼーションにおける数式の使用](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/use-expressions-in-visualizations.htm)」を参照してください。

### チャートの数式例 2

#### ロード スクリプト

以下のデータをインライン データとしてデータロードエディタにロードして、以下のチャートの数式の例を作成します。

```
ProductData:

LOAD * inline [
Customer|Product|UnitSales|UnitPrice
Astrida|AA|4|16
Astrida|AA|10|15
Astrida|BB|10|15
Astrida|BB|9|9
Betacab|BB|5|10
Betacab|BB|7|12
Betacab|CC|2|22
Betacab|CC|4|20
Betacab|DD|25|25
Canutility|AA|8|15
Canutility|AA|5|11
Canutility|CC|0|19
] (delimiter is '|');
```

インライン ロードの使用の詳細については、「[インライン ロードを使用したデータのロード](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/inline-loads-qs.htm)」を参照してください。

#### チャートの数式

Customer、Product、UnitPrice、UnitSales を軸としたテーブルの可視化を Qlik Sense シートを作成します。次の数式をメジャーとしてテーブルに追加します。

`Aggr(NODISTINCT Max(UnitPrice), Customer, Product)`

#### 結果

| Customer | Product | UnitPrice | UnitSales | Aggr(NODISTINCT Max(UnitPrice), Customer, Product) |
| --- | --- | --- | --- | --- |
| Astrida | AA | 15 | 10 | 16 |
| Astrida | AA | 16 | 4 | 16 |
| Astrida | BB | 9 | 9 | 15 |
| Astrida | BB | 15 | 10 | 15 |
| Betacab | BB | 10 | 5 | 12 |
| Betacab | BB | 12 | 7 | 12 |
| Betacab | CC | 20 | 4 | 22 |
| Betacab | CC | 22 | 2 | 22 |
| Betacab | DD | 25 | 25 | 25 |
| Canutility | AA | 11 | 5 | 15 |
| Canutility | AA | 15 | 8 | 15 |
| Canutility | CC | 19 | 0 | 19 |

#### 説明

値の配列: 16、16、15、15、12、12、22、22、25、15、15、19。nodistinct 修飾子は、配列にはソース データの各行の要素が 1 つ含まれており、各要素が Customer と Product それぞれの最大 UnitPrice になっていることを意味します。

### チャートの数式例 3

#### ロード スクリプト

以下のデータをインライン データとしてデータロードエディタにロードして、以下のチャートの数式の例を作成します。

```
Set vNumberOfOrders = 1000;

OrderLines:
Load
	RowNo() as OrderLineID,
	OrderID,
	OrderDate,
	Round((Year(OrderDate)-2005)*1000*Rand()*Rand()*Rand1) as Sales
	While Rand()<=0.5 or IterNo()=1;
Load * Where OrderDate<=Today();
Load 
	Rand() as Rand1,
	Date(MakeDate(2013)+Floor((365*4+1)*Rand())) as OrderDate,
	RecNo() as OrderID
	Autogenerate vNumberOfOrders;
    
Calendar:
Load distinct
	Year(OrderDate) as Year,
	Month(OrderDate) as Month,
	OrderDate 
	Resident OrderLines;
```

#### チャートの数式

Qlik Sense シートに [Year] と [Month] を軸としたテーブルのビジュアライゼーションを作成します。次の数式をメジャーとしてテーブルに追加します。

* `Sum(Sales)`
* `Sum(Aggr( Rangesum(Above(Sum(Sales),0,12)), (Year, (Numeric, Ascending)), (Month, (Numeric, Ascending)) ))` は表の中で Structured Aggr() とラベル表示されています。

#### 結果

| Year | Month | Sum(Sales) | Structured Aggr() |
| --- | --- | --- | --- |
| 2013 | Jan | 53495 | 53495 |
| 2013 | Feb | 48580 | 102075 |
| 2013 | Mar | 25651 | 127726 |
| 2013 | Apr | 36585 | 164311 |
| 2013 | May | 61211 | 225522 |
| 2013 | Jun | 23689 | 249211 |
| 2013 | Jul | 42311 | 291522 |
| 2013 | Aug | 41913 | 333435 |
| 2013 | Sep | 28886 | 362361 |
| 2013 | Oct | 25977 | 388298 |
| 2013 | Nov | 44455 | 432753 |
| 2013 | Dec | 64144 | 496897 |
| 2014 | Jan | 67775 | 67775 |

#### 説明

この例では、各年の 12 か月間の集計値を年代順に昇順で表示しているため、Aggr() 式の構造化パラメータ (数値、昇順) の部分を使用しています。構造化パラメータとして、(1) 年 (数値) と (2) 月 (数値) でソートされている、年 と 月 の 2 つの特定の軸が必要です。この 2 つの軸は、テーブルやチャートのビジュアライゼーションに使用する必要があります。これは、Aggr() 関数の軸リストが、ビジュアライゼーションに使用されるオブジェクトの軸に対応するために必要です。

これらのメジャー間の違いは、テーブルまたは独立した折れ線グラフで比較できます。

* `Sum(Aggr(
  	Rangesum(Above(Sum(Sales),0,12)), 
  	(Year), 
  	(Month)
  	))`
* `Sum(Aggr(
  	Rangesum(Above(Sum(Sales),0,12)), 
  	(Year, (Numeric, Ascending)), 
  	(Month, (Numeric, Ascending))
  	))`

後者の式のみが、目的とする集計値の蓄積を行うことは、明らかです。

## 詳細を見る

* [基本的な集計関数](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/AggregationFunctions/basic-aggregation-functions.htm)
* [set 分析](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/SetAnalysis/set-analysis-expressions.htm)