集計関数
集計関数と呼ばれる関数のファミリは、複数の項目値を入力として取得し、グループごとに結果を 1 つ返す関数で構成されます。グループ化はチャート軸やスクリプト ステートメント内の group by 条件によって定義されます。
集計関数には、Sum()、Count()、Min()、Max() などがあります。
ほとんどの集計関数は、データ ロード スクリプトとチャート式の両方で使用できますが、構文が異なります。
データ ロード スクリプトでの集計関数の使用
集計関数は LOAD および SELECT ステートメントの内部でのみ使用できます。
チャート式での集計関数の使用
内部集計に TOTAL 修飾子が含まれない限り、集計関数のパラメーターに他の集計関数を含めることはできません。 ネストされた集計関数が必要な場合、指定された軸と組み合わせて高度な関数 Aggr を使用します。
集計関数は、選択内容によって定義されたレコード セットを集計します。ただし、代替のレコード セットは、Set 分析で Set 数式を用いることで定義できます。
参照先: set 分析
集計の計算方法
集約は、特定のテーブルのレコードをループし、そのテーブル内のレコードを集約します。例えば、Count (<Field>) は、<Field> が存在するテーブル内のレコードの数をカウントします。固有の項目値のみを集計する場合は、Count (distinct <Field>) などの distinct 句を使用する必要があります。
集計関数に異なるテーブルの項目が含まれている場合、集計関数は、構成フィールドのテーブルの外積のレコードをループします。これにはパフォーマンスの低下があります。このため、特に大量のデータがある場合は、このような集計を回避する必要があります。
キー項目の集約
集計の計算方法は、集計に使用するテーブルが明確でないため、キー項目を集計できないことを意味します。例えば、項目 <Key> が 2 つのテーブルをリンクしている場合、Count(<Key>) が最初のテーブルまたは 2 番目のテーブルのレコード数を返す必要があるかどうかは明確ではありません。
ただし、distinct 句を使用する場合、集計は明確に定義されており、計算できます。
したがって、distinct 句を指定せずに集計関数内でキー項目を使用すると、Qlik Sense は意味のない数値を返します。解決策は、distinct 句を使用するか、キーのコピー (1 つのテーブルにのみ存在するコピー) を使用することです。
次のテーブルに対する例では、テーブル間のキーは ProductID です。
Count(ProductID) は Products テーブル (製品ごとに1つのレコードしかない– ProductID が主キー)、または Details テーブル (製品ごとに複数のレコードがあるものが多い) でカウントされます。個別の製品の数をカウントする場合は、Count(distinct ProductID) を使用する必要があります。特定のテーブルの行数をカウントする場合は、キーを使用しないでください。