AGGREGATIONONLY
AGGREGATIONONLYは、集計データのみを格納するように設計されたデータセット定義の表タイプです。
これにより、データセットに、RAWトランザクション・レコードではなく、集計された値の単一行が含まれるようになります。 各列では、SUMやAVGなどの集計関数を使用してその値を導出する必要があります。
主な機能
- 主キー不要: 集計のみのデータセットには、集計されたデータの1行が含まれているため、主キーが不要になります。
- 必須集計: これらのデータセットの列は、集計関数を使用する必要があります(例:
SUM()、AVG())。 - グループ化禁止:
GROUPBYが指定されている場合、データセットは集計のみではなく通常のデータセットとして扱われます。
例
DEFINE AGGREGATIONONLY DATASET SALES_AGG
ROWSOURCE SALES WHERE SALES.QUANTITY_SOLD > 10 ;
THIS[AVG_SALES_AMT] = AVG(SALES[AMOUNT_SOLD]);
END複数の計測総計
集計専用データセットには、平均、合計、最小などの複数のメトリックを格納できます。
例:
DEFINE AGGREGATIONONLY DATASET SALES_AGG1
ROWSOURCE SALES WHERE SALES.QUANTITY_SOLD > 10;
THIS[AVG_SALES_AMT] = AVG(SALES[AMOUNT_SOLD]);
THIS[SUM_SALES_AMT] = SUM(SALES[AMOUNT_SOLD]);
THIS[MIN_SALES_AMT] = MIN(SALES[AMOUNT_SOLD]);
THIS[MAX_SALES_AMT] = MAX(SALES[AMOUNT_SOLD]);
END
集計専用データセットでの完全および増分ロード
集計専用データセットでは、コード・ブロック・ロード(フル・ロードと増分ロードの両方)がサポートされています。 コード・ブロック・ロード- 完全および増分ロードの手順を参照してください。
例:
DEFINE AGGREGATIONONLY DATASET SALES_AGG2
ON FULL LOAD
ROWSOURCE SALES WHERE SALES.QUANTITY_SOLD > 20;
THIS[AVG_SALES_AMT] = AVG(SALES[AMOUNT_SOLD]);
THIS[SUM_SALES_AMT] = SUM(SALES[AMOUNT_SOLD]);
THIS[MIN_SALES_AMT] = MIN(SALES[AMOUNT_SOLD]);
THIS[MAX_SALES_AMT] = MAX(SALES[AMOUNT_SOLD]);
INCREMENTAL LOAD
ROWSOURCE SALES WHERE SALES.QUANTITY_SOLD > 10;
THIS[AVG_SALES_AMT] = AVG(SALES[AMOUNT_SOLD]);
THIS[SUM_SALES_AMT] = SUM(SALES[AMOUNT_SOLD]);
THIS[MIN_SALES_AMT] = MIN(SALES[AMOUNT_SOLD]);
THIS[MAX_SALES_AMT] = MAX(SALES[AMOUNT_SOLD]);
ENDLOAD
END
この例では、次のようになります。
- 「フル・ロード」では、QUANTITY_SOLD > 20のSALESが使用され、すべてのレコードが切り捨てられ、再ロードされます。
- 増分ロードでは、SALES (QUANTITY_SOLD > 10)が使用されます。
導出集計専用データセット
計算を簡略化するために、他の集計専用データセットから集計専用データセットを導出できます。
例:
DEFINE AGGREGATIONONLY DATASET SALES_AGG3
ROWSOURCE SALES_AGG2;
THIS = SALES_AGG2.AVG_SALES_AMT;
END
ノート:
- 集計専用ソースから排他的に作成されたデータセットを
AGGREGATIONONLYとしてマークする必要があります。 - CROSS JOINは、集計のみの入力で許可される唯一の結合タイプです。
Refresh On Changesディレクティブは、集計専用データセットでは使用できません。
集計専用データセットとトランザクション・データの結合
CROSS JOINを使用して、集計のみのデータセットをトランザクション・データと組み合せることができます。
例:
DEFINE DATASET SALES_AGG4
ROWSOURCE SALES CROSS JOIN SALES_AGG_DERIVED WHERE SALES.QUANTITY_SOLD > 10;
THIS = SALES_AGG_DERIVED;
THIS = SALES;
PRIMARYKEY[PROD_ID,CHANNEL_ID,CUST_ID,TIME_ID,PROMO_ID];
REFRESH ON CHANGES IN[SALES];
END
ノート:
- CROSS JOINは、集計のみの入力で許可される唯一の結合タイプです。
Refresh On Changesディレクティブは、集計専用データセットでは使用できません。