Aggr - チャート関数 このページ上
Aggr() は、指定された軸上で計算された数式の値の配列を返します。たとえば、顧客別、地域別 sales の最大値です。
Aggr 関数はネストされた集計に使用され、最初のパラメーター (内部集計) は軸の値ごとに 1 回計算されます。軸は、2 番目のパラメーター (および後続のパラメーター) で指定されます。
さらに、Aggr 関数は外部の集計関数で囲む必要があり、Aggr の結果の配列をネストされる集計への入力として使用します。
構文:
Aggr( {SetExpression}[DISTINCT ] [NODISTINCT
] expr, StructuredParameter{, StructuredParameter} )
戻り値データ型: デュアル
引数:
引数
expr
集計 関数で構成される数式。デフォルトでは、集計関数は選択されたレコード セットに対して集計を行います。
StructuredParameter
StructuredParameter は、軸 と (Dimension(Sort-type, Ordering)) 形式のソート基準 (オプション) で構成されています。
軸は単一項目 であり、数式にはできません。軸を使用して、Aggr 数式で計算される値の配列が決定されます。
ソート基準が含まれている場合は、軸について計算された Aggr 関数により、作成された値の配列がソートされます。これは、Aggr 関数を囲んでいる数式の結果にソート順序が影響する場合に重要です。
ソート基準の使用法について詳しくは、「構造化パラメータの軸へのソート基準の追加 」を参照してください。
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() 関数の各軸は、単一の項目でなければならず、数式 (計算軸) にすることはできません。
構造化パラメータの軸へのソート基準の追加
基本形式において、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 を使用したチャートの数式
例 - チャートの数式
チャートの数式例 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 '|');
インライン ロードの使用の詳細については、インライン ロードを使用したデータのロード を参照してください。
チャートの数式
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 という値が算出されます
数式の詳細については、「ビジュアライゼーションにおける数式の使用 」を参照してください。
チャートの数式例 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 '|');
インライン ロードの使用の詳細については、インライン ロードを使用したデータのロード を参照してください。
チャートの数式
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))
))
後者の式のみが、目的とする集計値の蓄積を行うことは、明らかです。