機械翻訳について

列操作

列操作には、名前変更や変換などの操作を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_NAMECUST_LAST_NAMEと同じ値および列プロパティを使用して、ターゲット表CUSTOMERS_D に列IDFIRST_NAMELAST_NAMEを作成します。

列データの変換

静的列値の割当

固定リテラル値を1つ以上の列に直接割り当てることができます。 値は、NUMBERVARCHAR2DATETimestampの型である必要があります。
dasrg-column-staticvalues.pngの説明が続きます
図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と、varchar2NEW CUSTOMERを保持する列CUST_DESCCUST_CLASSを割り当てています。

関数の適用

データ拡張スクリプトは、データ操作のための幅広い汎用関数をサポートしています。 列マッピングの右側(RHS)に1つ以上の関数を適用すると、結果のデータがターゲット列に移入されます。 データ拡張スクリプトでは、関数によって返されるデータが、スカラー、リスト、特定のデータ型などの予期される形式と一致する場合に、これを使用できます。
例:
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を作成します。

ユーザー定義関数の作成

特定のロジックをカプセル化する再利用可能なユーザー定義関数(UDF)を作成し、データセット内の単一の列または複数の列に適用できます。
ユーザー定義関数を使用するには、次の2つの方法があります。
  • メインのデータ拡張スクリプト・プログラム内で関数を定義します。
    例:
    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)として特定の精度で格納されるように指定します。