目次

Search

  1. はじめに
  2. 一括取り込みデータベース

一括取り込みデータベース

一括取り込みデータベース

データ型マッピングのカスタマイズ

データ型マッピングのカスタマイズ

データベース取り込みタスクのターゲットを設定する場合、必要に応じてデータ型マッピングルールを定義して、ソースデータ型からターゲットデータ型へのデフォルトのマッピングをオーバーライドできます。
デフォルトのマッピングについては、「デフォルトデータ型のマッピング」を参照してください。
この機能は、MySQL(初期ロード)ソースまたはOracle(任意のロードタイプ)ソース、およびSQLをサポートするターゲットタイプ(Databricks Delta、Google BigQuery、Microsoft Azure Synapse Analytics、Oracle、SQL Server、Snowflakeなど)を持つタスクでサポートされています。この機能は、他のソースタイプでは認定されていません。
例えば、Snowflake VARCHAR(255)データ型へのデフォルトのマッピングを使用する代わりに、精度のないOracle NUMBERカラムを、同じく精度のないSnowflakeターゲットのNUMBER()カラムにマッピングするデータ型ルールを作成できます。
データ型マッピングルールを作成するには、次の手順を実行します。
  1. [データ型ルール]
    を展開します。
  2. [ルールの作成]
    フィールドに、ソースデータ型とそれをマッピングするターゲットデータ型を入力します。
    [ソース]
    フィールドでのみ、例えば、NUMBER(%,4)、NUMBER(8,%)、またはNUMBER(%)のように、パーセント(%)ワイルドカードを含めて、データ型の精度、スケール、またはサイズを表すことができます。同じデータ型だが精度、スケール、またはサイズ値が異なるソースカラムのそれぞれを個別に指定するのではなく、ワイルドカードを使用して、そのようなすべてのソース列をカバーします。例えば、FLOAT(16)、FLOAT(32)、FLOAT(84)をカバーするには、FLOAT(%)と入力します。ターゲットデータ型に%ワイルドカードを入力することはできません。%ワイルドカードを使用するソースデータ型は、特定の精度、スケール、またはサイズ値を使用するターゲットデータ型にマッピングする必要があります。例えば、ソースデータ型FLOAT(%)をNUMBER(38,10)などのターゲットデータ型の仕様にマッピングできます。
  3. [ルールの追加]
    をクリックします。
    ルールがルールリストに表示されます。
ルールを削除するには、ルール行の右端にある[削除]アイコンをクリックします。
カスタムマッピングルールを使用してタスクをデプロイした後は、タスクがデプロイ解除されるまでルールを編集できません。
使用上の注意:
  • 一般に、バイナリデータ型は文字データ型にマッピングできません。
  • 同じ長さまたは同じ精度とスケール値である同じソースデータ型に対して複数のデータ型ルールを定義すると、データベース取り込みタスクを保存できなくなります。
  • 同じソースデータ型に対して複数のデータ型ルールを定義したが、%ワイルドカードを使用して、1つのルールで長さまたは精度とスケール値を表し、2番目のルールで特定の長さまたは精度とスケール値を表す場合、%ワイルドカードを使用したルールの前に、特定の値を含むルールが最初に処理されます。例えば、ソースデータ型FLOAT(84)とFLOAT(%)をマッピングする場合、FLOAT(84)ルールが最初に処理され、次にFLOAT(%)ルールが処理されて、サイズの異なる他のFLOATソースカラムがカバーされます。
  • ソースデータ型に長さまたは精度とスケール値が必要な場合は、%ワイルドカードまたは特定の値(例えば、VARCHAR(%)またはVARCHAR(10))を使用して必要な属性を設定してください。
  • 無効なマッピングを定義すると、エラーメッセージがログに書き込まれます。その後、必要に応じてDBAのサポートを受けて、マッピングエラーを修正できます。
  • Oracleソースの場合、ソースオブジェクトの次のクエリによって返されるデータ型を使用する必要があります。
    select dbms_metadata.get_ddl('TABLE', 'YOUR_TABLE_NAME','TABLE_OWNER_NAME') from dual;
  • 一括取り込みデータベース
    は、データ型マッピングルールのBYTEおよびCHARセマンティクスをサポートしていません。
  • ソースデータ型にデフォルトの精度がある場合は、ルールで指定する必要があります。例えば、TIMESTAMPの代わりにTIMESTAMP(6)を使用する必要があります。