機械翻訳について

ピボット

ピボットは、行を列に変換することでデータを変換します。これにより、値を並べて比較し、傾向を効率的に特定し、月やチャネルなどのカテゴリ間で明確なインサイトを得ることができます。

例: 次のコマンドを使用して、バージョン管理されたデータセットSALES_Fを作成できます。
IMPORT SOURCE SALES
DEFINE VERSIONED DATASET SALES_F
 ROWSOURCE SALES;
 THIS = SALES[PROD_ID, CHANNEL_ID];
 THIS[TIME_ID] = DATE_FORMAT(SALES.TIME_ID,'MMM');
 THIS[AMOUNT_SOLD] = SUM(SALES.AMOUNT_SOLD);
 GROUPBY [PROD_ID, CHANNEL_ID,TIME_ID];
 PRIMARYKEY[PROD_ID, CHANNEL_ID,TIME_ID];
END
SALES_Fの出力は次のとおりです。
PROD_ID CHANNEL_ID TIME_ID AMOUNT_SOLD
1 オンライン Jan 500
1 InStore Jan 150
1 InStore Mar 700
2 オンライン Jan 200
2 InStore Feb 120
2 InStore Mar 300

単一列パーティション・ピボット

ピボット操作でパーティション化を使用して、特定の属性別にデータをグループ化し、変換されたデータセット内で各カテゴリ(製品やチャネルなど)を区別できます。

パーティションを指定しない場合、移行で使用する列を除き、ROWSOURCEのすべての列がパーティション化に含まれます。

例:
DEFINE VERSIONED DATASET PRODUCT_MONTHLY_REVENUE
 ROWSOURCE SALES_F;

 PIVOT
 (
 /* ------------------- SPECIFY PARTITION -------------------------- */

 WITHIN SALES_F[PROD_ID];

 /* --------------------SPECIFY TRANSPOSITIONS ---------------------- */
 // Either provide target column names on LHS for each of the month values 
or if unspecified, it will auto-generate and map columns Jan,Feb,Mar 

 THIS[Jan_Sales,Feb_Sales,Mar_Sales]= SUM(SALES_F.AMOUNT_SOLD) FOR 
 SALES_F.TIME_ID IN('Jan','Feb','Mar');
 );

 // Optional. If not specified, PK will be assigned.
 PRIMARYKEY [PROD_ID];
END

この例では、セグメントWITHIN SALES_F[PROD_ID,CHANNEL_ID]は、データをProduct IDおよびChannel IDでパーティション化しています。 列マッピングTHIS[Jan_Sales, Feb_Sales, Mar_Sales]は、1月、2月および3月のターゲット列を作成します。 出力では、1月、2月および3月の売上に対して個別の列が作成されます。

PRODUCT_MONTHLY_REVENUEデータセットのピボットによる出力を次に示します。
dasrg-pivot-partition-single.pngの説明が続きます
図dasrg-pivot-partition-single.pngの説明

複数列パーティション・ピボット

ピボット操作で複数列のパーティション化を使用して、複数の属性でデータをグループ化し、ユーザーがデータセットの詳細ビューを表示できます。 この方法により、アナリスト・ユーザーは製品やチャネルなどの次元間で比較できるため、より深いインサイトやパターンを発見できます。

ProductChannelの両方でパーティション化することで、アナリストが各組合せに対して一意の収益貢献を追跡できるようにします。

例:
DEFINE VERSIONED DATASET PRODUCT_BY_CHANNEL_MONTHLY_REVENUE
ROWSOURCE SALES_F;
 PIVOT
 (
/* ------------------------- SPECIFY PARTITION -------------------------- */
 WITHIN SALES_F[PROD_ID, CHANNEL_ID];

/* ------------------------SPECIFY TRANSPOSITIONS ----------------------- */
 THIS[Jan_Sales, Feb_Sales, Mar_Sales] = SUM(SALES_F.AMOUNT_SOLD) FOR 
 SALES_F.TIME_ID IN ('Jan', 'Feb', 'Mar');
 );
 PRIMARYKEY [PROD_ID,CHANNEL_ID];
END

この例では、セグメントWITHIN SALES_F[PROD_ID,CHANNEL_ID] によって、データが複数の列(製品IDおよびチャネルID)でコンポジット・キーとしてパーティション化されます。 列マッピングTHIS[Jan_Sales,Feb_Sales,Mar_Sales]は、リストされた変換された値ごとにターゲット列を作成します。 出力では、PROD_IDおよびCHANNEL_IDによって、1月、2月および3月の売上に対して個別の列が生成されます。


dasrg-pivot-partition-multi.pngの説明が続きます
図dasrg-pivot-partition-multi.pngの説明

マルチディメンション・パーティション・ピボット

ピボット操作でマルチディメンション・パーティション化を使用すると、特定の値を集計しながら、複数の属性に基づいて列を生成できます。 このピボット操作では、TimeChannelなど、各カテゴリの組合せの集計売上額が表示されるようにデータが再編成されます。

例:
DEFINE VERSIONED DATASET PRODUCT_BY_CHANNEL_MONTHLY_REVENUE_2
 ROWSOURCE SALES_F;
 PIVOT
 (
 /* ------------------ SPECIFY PARTITION -------------------------- */
 WITHIN SALES_F[PROD_ID];

 /* --------------------SPECIFY TRANSPOSITIONS ------------------- */
 //Sales per month
 THIS[Jan_Sales, Feb_Sales, Mar_Sales] = SUM(SALES_F.AMOUNT_SOLD) FOR 
 SALES_F.TIME_ID IN ('Jan', 'Feb', 'Mar');
 // Sales per month + channel (multi dimensions)
 THIS = [SUM(SALES_F.AMOUNT_SOLD) -COLPREFIX 'Amt'] FOR (SALES_F.CHANNEL_ID, 
 SALES_F.TIME_ID )IN (('Online','Jan'), 
 ('Online','Feb'),('Online','Mar'),('InStore','Jan'),('InStore','Feb'),
 ('InStore','Mar));
 );

// Other transformations allowed after PIVOT section and only using the 
 columns generated in PIVOT section
THIS[Jan_Inst_Online_Diff] = THIS.Amt_InStore_Jan - THIS.Amt_Online_Jan;
THIS[Feb_Inst_Online_Diff] = THIS.Amt_InStore_Feb - THIS.Amt_Online_Feb;
THIS[Feb_Inst_Online_Diff] = THIS.Amt_InStore_Mar - THIS.Amt_Online_Mar;

 PRIMARYKEY [PROD_ID];
END

この例では、データセットPRODUCT_BY_CHANNEL_MONTHLY_REVENUE_2の出力は次のようになります。
dasrg-pivot-multidimension.pngの説明が続きます
図dasrg-pivot-multidimension.pngの説明