QlikWorld 2020 Global Conference. Join us to discover how to get the most from your data. Act fast. Register now and save.

Aggr

Aggr() は、指定された軸上で計算された数式の値の配列を返します。たとえば、顧客別、地域別 sales の最大値です。Aggr 関数は高度な集計に使用されます。高度な集計では、Aggr 関数の結果の配列を、ネストされる集計への入力として使用し、別の集計関数で Aggr 関数を囲みます。

Syntax:  

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

Return data type: デュアル

Arguments:  

引数 説明
expr

集計関数で構成される数式。デフォルトでは、集計関数は選択されたレコード セットに対して集計を行います。

StructuredParameter

StructuredParameter は、軸と、オプションのソート基準から構成され、次の形式を持ちます:(Dimension(Sort-type, Ordering))

軸は単一項目で、数式ではありません。軸は、Aggr 式の計算対象となる値の配列を決定するために使用されます。

ソート基準が含まれる場合、Aggr 関数によって作成された値の配列がその軸に対して計算され、ソートされます。これは、Aggr 関数を囲む数式の結果にソート順が影響を及ぼす場合に重要です。

ソート基準の使用方法の詳細は、「構造化されたパラメータにおける軸へのソート基準の追加」を参照してください。

SetExpression デフォルトでは、集計関数は選択されたレコード セットに対して集計を行います。Set 分析数式でレコード セットを定義することも可能です。
DISTINCT expression 引数の前に distinct 修飾子が配置されている場合、あるいは修飾子がまったく使用されていない場合は、軸の値の組み合わせごとに 1 つの戻り値のみが生成されます。これは正常な集計方法で、これらの異なる組み合わせがそれぞれチャートの 1 行に反映されます。
NODISTINCT

expression 引数の前に nodistinct 修飾子が配置されている場合、軸の値の組み合わせは、いずれも基底のデータ構造に基づいて、複数の戻り値を生成する可能性があります。軸が 1 本だけの場合、ソース データに行が存在するので、aggr 関数は要素と同じ数の配列を返します。

SumMinAvg などの基本的な集計関数では単一の数値が返されますが、Aggr() 関数は一時的に複数の段階的結果 (仮想テーブル) を作成して他の集計結果と比較できます。たとえば、Aggr() ステートメントで、顧客による売上の集計から平均の売上を計算し、合計された結果の平均を計算します。Avg(TOTAL Aggr(Sum(Sales), Customer))

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

Limitations:  

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

構造化されたパラメータにおける軸へのソート基準の追加

基本的な形式では、Aggr 関数の構文における引数 StructuredParameter は 1 軸です。数式: Aggr(Sum(Sales, Month)) を使用すると、各月の売上の合計値が求まります。ただし、別の集計関数に囲まれている場合、ソート基準を使用しないと予期に反する結果になることがあります。これは、軸によっては数値としてもアルファベット順でもソートできるためです。

Aggr 関数の StructuredParameter 引数では、数式において軸のソート基準を指定できます。こうすると、Aggr 関数によって作成された仮想テーブルに対してソート順を強制適用できます。

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

(FieldName, (Sort-type, Ordering))

構造化されたパラメータは、次のようにネストできます。

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

可能なソート タイプは、NUMERICTEXTFREQUENCY、または LOAD_ORDER です。

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

ソート タイプ 可能な順序タイプ
NUMERIC ASCENDINGDESCENDING、または REVERSE
TEXT ASCENDINGA2ZDESCENDINGREVERSE、または Z2A
FREQUENCY DESCENDINGREVERSE、または ASCENDING
LOAD_ORDER ASCENDINGORIGINALDESCENDING、または REVERSE

順序タイプの REVERSEDESCENDING は同じです。

ソート タイプ TEXT では、順序タイプ ASCENDINGA2Z が同じ、 DESCENDINGREVERSEZ2A が同じです。

ソート タイプ LOAD_ORDER では、順序タイプ ASCENDINGORIGINAL が同じです。

Examples and results:  

結果
Avg(Aggr(Sum(UnitSales*UnitPrice), Customer))

数式 Aggr(Sum(UnitSales*UnitPrice), Customer) は、Customer による売上の合計値を求め、3 つの Customer 値の配列: 295、715、120 を返します。

事実上、値を含む明示的なテーブルや列を作成する必要なく、値の一時リストを作成できました。

これらの値は Avg() 関数への入力として使用され、売上の平均値「376.6667」を算出します(プロパティ パネルで、[プレゼンテーション] の下の [合計] を選択しておく必要があります)。

Aggr(NODISTINCT Max(UnitPrice), Customer)

値の配列: 16、16、16、25、25、25、19 および 19。nodistinct 修飾子は、配列がソースデータ 1 行に 1 つの要素が含まれることを意味します: それぞれが、各 Customer および Product に対する最大 UnitPrice です。

max(aggr(sum(Customers)-above(Sum(Customers)), (MonthYear,(NUMERIC, ASCENDING))))

数式の StructuredParameter 引数におけるソート基準の使用。 max(aggr(sum(Customers)-above(Sum(Customers)), (MonthYear,(NUMERIC, ASCENDING))))

ソート基準がない場合、数式 max(aggr(sum(Customers)-above(Sum(Customers)), (MonthYear))) の結果は、軸 MonthYear のソート方式によって異なります。必要な結果を得られないことがあります。

ソート タイプおよび順序タイプに値を追加すると、構造化パラメータ (MonthYear, (NUMERIC, ASCENDING)) にソート基準が与えられます。ここで、MonthYear は、ソート タイプ NUMERIC および順序 ASCENDING により、数値の昇順でソートするように指定されています。

ここでは、顧客数が最も増えた月を求めようとしています。これは、たとえば KPI のビジュアライゼーションで使用できます。

数式の Aggr の部分は、ある月の顧客総数 (MonthYear で与えられる) を、前月の総数と比較します。

(MonthYear,(NUMERIC, ASCENDING)) のソート基準を使用するので、月をアルファベットの昇順でなく、数値の昇順でソートすることにより、Aggr が、仮想テーブルで連続する月の顧客数を比較することが保証されます。

例で使用されているデータ:

CustomerProductUnitPriceUnitSales を軸としたテーブルを作成します。数式をメジャーとしてテーブルに追加します。

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||19

] (delimiter is '|');