rollup 修飾子と grouping() 関数を使用した総計と小計の計算
rollup を呼び出すと、null 値のディメンションと、基準の小計結果を含む行がクエリ結果に追加されます。grouping() は、上位レベルの集計のためにディメンション値が null の場合 (通常、該当の行が小計であることを意味します) は 1 を返し、それ以外の場合は 0 を返します。
rollup を grouping() と共に使用すると、小計データを操作できます。一般に、データの小計を計算したら、次に case ステートメントを使用して小計データを論理的に評価します。または、条件ステートメントを使用して、小計されたデータを絞り込みます。
商談データセットがあり、リードソースと種別ごとに商談の値を確認するとします。さらに、すべてのリードソースと種別の合計金額を参照する必要があるとします。種別とリードソース別にグループ化された商談金額の合計を返すクエリを記述します。すべてのリードソースとすべての種別の値を確認するには、rollup を使用して商談を小計し、次に grouping() を使用して、小計行に表示ラベルを付けます。
例: rollup
ダッシュボードで SAQL エディターを開きます。項目別にデータをグループ化する代わりに、rollup 修飾子をグループとして指定し、小計する項目に、パラメーターとして「種別とリードソース」を渡します。q = group q by rollup('Type', 'LeadSource'); と設定します。次に、完全なクエリを示します。
1q = load "opportunityData";
2q = group q by rollup('Type', 'LeadSource');
3q = order q by ('Type', 'LeadSource');
4q = foreach q generate
5 'Type' as 'Type',
6 'LeadSource' as 'LeadSource',
7 sum('Amount') as 'sum_Amount';クエリ結果には、商談種別の総額が表示され、続いてリードソース別の総額が表示されます。小計行と総計行の基準には null 値が含まれます。

例: grouping()
合計の表示ラベルに null 値が使用されていると、クエリ結果について誤解をまねく可能性があります。この誤解を避けるために、case ステートメントで grouping() 関数を使用して、合計に「All Types (全種別)」または「All Lead Sources (全リードソース)」の表示ラベルを付けます。
1q = load "opportunityData";
2q = group q by rollup('Type', 'LeadSource');
3q = order q by ('Type', 'LeadSource');
4q = foreach q generate
5 (case
6 when grouping('Type') == 1 then "All Types"
7 else 'Type'
8 end) as 'Type',
9 (case
10 when grouping('LeadSource') == 1 then "All Lead Sources"
11 else 'LeadSource'
12 end) as 'LeadSource',
13 sum('Amount') as 'sum_Amount';これでクエリ結果に表示ラベル付き合計が含まれます。
