列操作
列操作には、名前変更や変換などの操作を1つ以上の列の値に適用して、処理中にデータを準備または変更します。
列名の変更
IMPORT SOURCE CUSTOMERS
DEFINE DATASET CUSTOMERS_D
ROWSOURCE CUSTOMERS;
//column renaming
THIS[ID,FIRST_NAME,LAST_NAME] = CUSTOMERS[CUST_ID,CUST_FIRST_NAME,CUST_LAST_NAME];
END
この例では、ソース表CUSTOMERSからCUST_ID、 CUST_FIRST_NAME、CUST_LAST_NAMEと同じ値および列プロパティを使用して、ターゲット表CUSTOMERS_D に列ID、FIRST_NAME、LAST_NAMEを作成します。
列データの変換
静的列値の割当
固定リテラル値を1つ以上の列に直接割り当てることができます。 値は、NUMBER、VARCHAR2、DATE、Timestampの型である必要があります。
図dasrg-column-staticvalues.pngの説明
DEFINE DATASET CUSTOMERS_D
ROWSOURCE CUSTOMERS WHERE CUSTOMERS.CUST_JOINING_DATE = â2025/02/24â;
THIS[ID,FIRST_NAME,LAST_NAME]= CUSTOMERS[CUST_ID,CUST_FIRST_NAME,CUST_LAST_NAME];
THIS[CUST_CLASS_ID] = 999; //NUMBER
THIS[CUST_DESC,CUST_CLASS] = 'NEW CUSTOMER'; //VARCHAR2(38)
ENDこの例では、静的数値999を保持する列CUST_CLASS_IDと、varchar2値NEW CUSTOMERを保持する列CUST_DESC、CUST_CLASSを割り当てています。
関数の適用
DEFINE DATASET CUSTOMERS_D
ROWSOURCE CUSTOMERS;
THIS[ID,FIRST_NAME,LAST_NAME] = CUSTOMERS[CUST_ID,CUST_FIRST_NAME,CUST_LAST_NAME];
THIS[FULL_NAME] = CONCAT_WS(' ', CUSTOMERS.CUST_FIRST_NAME,CUSTOMERS.CUST_LAST_NAME);
END
この例では、CONCAT_WS関数を列CUST_FIRST_NAMEおよびCUST_LAST_NAMEに適用して、列FULL_NAMEを作成します。
ユーザー定義関数の作成
- メインのデータ拡張スクリプト・プログラム内で関数を定義します。
例:
DEFINE FUNCTION CUSTOMERTYPE(col) CASE WHEN col > â2025/02/24â THEN âNEW CUSTOMERâ ELSE âOLD CUSTOMERâ END; END DEFINE DATASET CUSTOMERS_D ROWSOURCE CUSTOMERS; THIS[ID,FIRST_NAME,LAST_NAME] = CUSTOMERS[CUST_ID,CUST_FIRST_NAME,CUST_LAST_NAME]; THIS[CUST_DESC,CUST_CLASS] = CUSTOMERTYPE(x) FOR x IN CUSTOMERS[CUST_JOINING_DATE,CUST_EFF_FROM] -DATATYPE VARCHAR2; END - プロジェクト・ディレクトリ内の
.funcファイルで関数を定義します。この関数は、メインのデータ拡張スクリプト・プログラム内でINCLUDEキーワードとともに使用できます。例:
データ型の指定
データ拡張スクリプトは、データ型を推測できます。 データ型を推測できない場合、または意図的にオーバーライドする必要がある場合は、新しい列のデータ型指定(-DATATYPE)を含める必要があります。
- 新しい列を作成し、データ型値を割り当てます。
DEFINE DATASET MY_SALES ROWSOURCE SALES; THIS[PROD_VERSION] = 101 -DATATYPE NUMBER; ENDこの例では、データ型
NUMBERの列PROD_VERSIONを作成します。 - データ型を推測できない場合、新しい列を作成します。
DEFINE DATASET MY_SALES ROWSOURCE SALES; THIS[INFO] =CONCAT(SALES.PROD_NAME, ' - ', CAST(SALES.SALES_AMT AS VARCHAR2(28))) -DATATYPE VARCHAR2(50); ENDこの例では、
PROD_NAME(VARCHAR2(38))およびSALES_AMT(NUMBER)という2つの異なるデータ型を持つ列に対してCONCATファンクションを実行します。 結果の列INFOをデータ型VARCHAR2(50)として明示的に定義します。 - 新しい列を作成し、データ型をオーバーライドします。
DEFINE DATASET MY_SALES ROWSOURCE SALES; THIS[TOTAL_SALES] = SUM(SALES.SALE_AMOUNT) -DATATYPE NUMBER(10,2); ENDこの例では、
SALE_AMOUNT列のデータ型はNUMBER(10)ですが、TOTAL_SALES値がNUMBER(10,2)として特定の精度で格納されるように指定します。



