トランスフォーメーションデータ型 以下の表で、トランスフォーメーションのデータ型について説明します。
データタイプ
サイズ(バイト数)
説明
Bigint
8バイト
-9,223,372,036,854,775,808 to 9,223,372,036,854,775,807
精度19、位取り0。
整数値。
Binary
精度
1~104,857,600バイト
フラットファイルソースでバイナリデータは使用できません。
Date/Time
16バイト
西暦0001年1月1日~西暦9999年12月31日
精度29、位取り9
(精度はナノ秒まで)
日付値と時刻値が結合されたデータ型。
Decimal
8バイト(高精度がオフまたは28より大きい場合)
16バイト(精度が18以下で高精度がオンの場合)
20バイト(精度が18より大きく、28以下の場合)
宣言された精度と位取りを持つ10進型の値。位取りは、精度以下にする必要があります。
精度1~28桁、位取り0~28
Double
8バイト
倍精度の浮動小数点数値。
精度と位取りは編集できます。スケールは精度以下にする必要があります。
Integer
4バイト
-2,147,483,648~2,147,483,647
精度10、位取り0
整数値。
Nstring
Unicodeモード: (精度+ 1)* 2
ASCIIモード: 精度+ 1
1~104,857,600文字
固定長または可変長文字列。
Ntext
Unicodeモード: (精度+ 1)* 2
ASCIIモード: 精度+ 1
1~104,857,600文字
固定長または可変長文字列。
Real
8バイト
精度7、位取り0
倍精度の浮動小数点数値。
Small Integer
4バイト
-32,768および32,767
精度5、位取り0
整数値。
String
Unicodeモード: (精度+ 1)* 2
ASCIIモード: 精度+ 1
1~104,857,600文字
固定長または可変長文字列。
Text
Unicodeモード: (精度+ 1)* 2
ASCIIモード: 精度+ 1
1~104,857,600文字
固定長または可変長文字列。
Integerデータ型 ソースからターゲットに整数データを渡して、整数データでトランスフォーメーションを実行できます。データ統合 は、Bigint、Integer、およびSmall Integerデータ型をサポートします。
トランスフォーメーションのIntegerデータ型は、厳密値を表します。
計算における整数値 計算に整数値を使用した場合、データ統合 では、計算実行の前に、整数値が浮動小数点数に変換されることがあります。
例えば、MOD(12.00, 5) を評価するために、データ統合 は、除算を実行する前に整数値「5」を浮動小数点数に変換します。データ統合 は、マッピング タスクの[高精度を有効にする] 詳細セッションプロパティの設定内容に応じて、整数値を倍精度浮動小数点数または10進数の値に変換します。
データ統合 は、次の算術演算で整数値を変換します。
操作
高精度が無効
高精度が有効
小数点を使用できない関数と計算。
例えば、整数の加算、減算、乗算、およびCUME、SUMなどの関数。
変換なし。
ただし、計算結果が範囲外となった場合、データ統合 は行エラーを書き込みます。
Decimal
小数点を使用できる非科学関数と計算。
たとえば、整数の除算、およびAVG、MEDIAN、PERCENTILEなどの関数。
Double
Decimal
すべての科学関数、EXP関数、LN関数、LOG関数、POWER関数、およびSQRT関数。
Double
Double
トランスフォーメーションのDoubleデータ型は最大15桁の精度をサポートし、Bigintデータ型は最大19桁の精度をサポートします。このため、計算結果が、精度が15桁より大きいBigint値となる計算では、精度の損失が発生することがあります。
例えば、Expressionトランスフォーメーションには以下の計算が含まれています。
POWER( BIGINTVAL, EXPVAL )
データ統合 は、計算を開始する前に、POWER関数への入力を倍精度浮動小数点数値に変換します。BIGINTVALフィールドにBigint値9223372036854775807が含まれている場合、データ統合 はこの値を9.22337203685478e+18に変換し、最後の4桁の精度が失われます。EXPVALフィールドに値1.0が含まれており、結果フィールドがBigintの場合、計算結果の9223372036854780000が最大Bigint値を超えているため、行エラーが作成されます。
結果が10進数値となる計算でIntegerデータ型を使用しており、高精度を有効にした場合、データ統合 では、整数値が10進数値に変換されます。
最大28桁精度のDecimalデータ型をサポートするトランスフォーメーションの場合、計算結果が高精度モードで28桁より大きい値にならない限り、精度の損失は発生しません。この場合、データ統合 は、結果を倍精度浮動小数点数として格納します。フィールドの精度が28桁以下で、結果が高精度モードの28桁より大きい場合、データ統合 は行を却下します。
式の整数定数 データ統合 では、計算結果が整数の場合でも、式の定数が浮動小数点数として解釈されます。
例えば、式INTVALUE + 1000 では、データ統合 は高精度が無効な場合に整数値「1000」を倍精度浮動小数点数値に変換します。高精度が有効な場合は、値「1000」を10進数値に変換します。値1000を整数値として処理するには、Integerデータ型を使用して変数フィールドを作成して定数を保持し、式を変更して2つのフィールドを追加します。
NaN値 NaN(非数)とは、通常、特に浮動小数点数の計算で、無効な入力オペランドでの演算の結果として返される値のことです。たとえば、ゼロをゼロで除算する演算の場合、結果としてNaNが返されます。
NaNの表示は、オペレーティングシステムおよびプログラミング言語によって異なります。例えば、以下のリストのようなNaNの表示があります。
• nan• NaN• NaN%• NAN• NaNQ• NaNS• qNaN• sNaN• 1.#QNAN• 1.#SNANデータ統合 はQNAN値を1に変換します。1.#QNANに変換します。1.#QNANは、NaNの有効な表示です。
詳細クラスタ で実行した式の結果がNaNとなる場合、出力内の式の戻り値は空白になります。
文字列値の整数値への変換 データ統合 は、文字列値の整数値への暗黙の変換を実行する場合、最初の数値以外の文字でデータを切り捨てます。
例えば、「9,000,000,000,000,000,000.777」という値を含む文字列フィールドBigintフィールドにリンクするとします。データ統合 は、文字列をBigint値9,000,000,000,000,000,000に変換します。
フラットファイルへの整数値の書き込み 整数値を固定長のフラットファイルに書き込む場合、ファイルライタではデータが範囲内であることが確認されません。
例えば、ターゲットカラムのフィールド長が少なくとも13の場合、ファイルライタによりターゲットのIntegerカラムに結果3,000,000,000が書き込まれます。ファイルライタは、結果が整数値の有効範囲外であるため、行を拒否しません。
Binaryデータ型 マッピングにバイナリデータが含まれている場合は、データ統合 がデータをソースからターゲットに移動するために必要なメモリを割り当てることができるように、トランスフォーメーションのBinaryデータ型の精度を設定します。
フラットファイルソースでBinaryデータ型は使用できません。
バイナリデータが含まれている関数を使用する前に、Administratorでデータ統合サーバーサービスにINFA_ENABLE_BINARY_FUNCTIONSカスタムプロパティを追加します。次の表に、このプロパティの設定方法を示します。
サービス
タイプ
サブタイプ
名前
値
機密
データ統合サーバー
DTM
-
INFA_ENABLE_BINARY_FUNCTIONS
真
-
カスタムプロパティの設定の詳細については、Administratorのヘルプの
Configuring Secure Agent service properties を参照してください。
Date/Timeデータ型 Date/Timeデータ型は、グレゴリオ暦の西暦1年から西暦9999年までの年を処理します。西暦9999年より後の年を使用するとエラーが発生します。マッピングは、Secure Agentマシンのローカルタイムゾーンを使用して、Parquet、Avro、ORCなどの復号ファイル形式のDate/Timeデータ型を処理します。
Date/Timeデータ型は、ナノ秒単位の精度で日付をサポートします。データ型の精度は29で、位取りは9です。ネイティブデータ型の中には、精度が低いものがあります。日時の値を含むソースをインポートするときに、インポートプロセスによってソースカラムから正しい精度がインポートされます。例えば、Microsoft SQL ServerのDatetimeデータ型の精度は23で、位取りは3です。日時の値を含むMicrosoft SQL Serverソースをインポートすると、マッピングソースの日時カラムは精度が23になり、スケールが3になります。
データ統合 は、マッピングソースに指定されている精度で、ソースから日時の値を読み取ります。データ統合 は、日時の値を変換する際に、29桁までの精度をサポートします。例えば、ミリ秒の精度で日付の値をインポートする場合、ExpressionトランスフォーメーションでADD_TO_DATE関数を使用して日付にナノ秒を追加することができます。
より短い精度をサポートするターゲットカラムにDate/Time値を書き込むと、データ統合 では、ターゲットカラムの精度まで値が切り詰められます。より長い精度をサポートするターゲットカラムにDate/Time値を書き込むと、データ統合 では、日時の値でサポートされていない部分にゼロが挿入されます。
詳細クラスタ は、マイクロ秒までのDate/Timeの精度を処理します。Date/Timeの値にナノ秒が含まれている場合、詳細クラスタ では末尾の数字が切り詰められます。
Decimalデータ型およびDoubleデータ型 DecimalデータおよびDoubleデータをソースからターゲットに渡して、DecimalデータおよびDoubleデータに対するトランスフォーメーションを実行することができます。
データ統合 は、次のデータ型をサポートしています。
Decimal 精度1~28桁、位取り0~28。位取りが精度より大きい10進型の値、および負の精度を持つ10進型の値は使用できません。トランスフォーメーションにはDecimalデータ型に割り当てられている範囲がすべて表示されますが、データ統合 でサポートされる精度は、最大28桁までです。
高精度を有効にしており、フィールド精度が28桁より大きい場合、データ統合 では、結果がDouble型として保存されます。
Double 倍精度の浮動小数点数値。
精度と位取りは編集できます。スケールは精度以下にする必要があります。
計算におけるDecimal値とDouble値 計算結果が最大精度を超える値になる場合、DecimalとDoubleのデータ型を計算に使用すると、精度の損失が発生する可能性があります。
高精度を無効にすると、データ統合 では、10進数値が倍精度浮動小数点数に変換されます。Decimal値が15桁を超える精度を持つ場合には、精度の損失が発生します。例えば、Decimal(20,0)を使って数値40012030304957666903を渡すマッピングがあるとします。高精度を無効にすると、データ統合 は、10進数値を倍精度浮動小数点数に変換し、4.00120303049577 x 1019 を渡します。
最大28桁の精度のDecimalデータ型をサポートするトランスフォーメーションでは、Decimalデータ型を使用し、高精度を有効にして、最大28桁の精度を確保します。
計算結果が、最大許容桁より大きい精度を持つ値にならない限り、精度の損失は発生しません。この場合、データ統合 は、結果を倍精度浮動小数点数として格納します。
ルックアップ条件や結合条件など、等価条件で使用するデータにDoubleデータ型を使用しないでください。
次の表に、データ統合 が、[高精度を有効にする] 詳細セッションプロパティの設定内容に基づいて10進値を処理する方法を示します。
フィールドのデータ型
精度
高精度が無効
高精度が有効
Decimal
0~15
Decimal
Decimal
Decimal
15~28
Double
Decimal
Decimal
28より大きい
Double
Double
高精度を有効にすると、データ統合 では式関数の数値定数が10進数に変換されます。高精度を有効にしない場合、データ統合 では数値定数が倍精度浮動小数点数に変換されます。
数値の最大精度を、トランスフォーメーションに応じて、28または38桁よりも大きくすることができます。トランスフォーメーション関数を使用して計算またはトランスフォーメーションを実行する前に、大きい数字を切り詰めるか、丸めます。
double値の丸め データ統合 は、ダウンストリームフィールドのデータ型に応じて、doubleデータ型の値を15桁に丸めます。
doubleデータ型はIEEE 794標準に準拠します。データベースクライアントライブラリへの変更、データベースの異なるバージョン、システム実行時ライブラリへの変更は、算術的に同等な値のバイナリ表現に影響します。また、多くのシステム実行時ライブラリは偶数丸め方法や対称算術法を実装しています。偶数丸め方法は、数字が次の上下の数の中間にある場合、偶数の最小位ビットの最も近い値に丸められます。たとえば、偶数丸め方法では、0.125は0.12に丸められます。対称算術法では末尾桁が5以上の場合は次の桁に丸められます。たとえば、対称算術法では0.125は0.13に丸められ、0.124は0.12に丸められます。
ソーストランスフォーメーションのdoubleデータ型フィールドがダウンストリームトランスフォーメーションのdecimalまたはstringデータ型フィールドに接続されている場合、データ統合 では、有効数字15桁を超える桁は丸められずに保持されます。他のすべてのダウンストリームフィールドデータ型の場合、データ統合 はdoubleデータ型の値を15桁に丸めます。例えば、Windowsで計算を実行すると、数値1234567890.1234567890が返され、同じ計算をUNIXで実行すると、1234567890.1234569999が返される場合、データ統合 はこの数値を1234567890.1234600000に変換します。
詳細モードでのDecimal値とDouble値 詳細モードでは、マッピングの階層フィールドのタイプに基づいて、マッピングで高精度または低精度が使用されます。マッピング内の階層フィールドに10進数データ型の子フィールドが含まれている場合、マッピングは低精度を使用して実行されます。それ以外の場合、マッピングは高精度で実行されます。
詳細モードのマッピングで高精度が使用されている場合、詳細クラスタ は、Decimalデータ型を38の精度までの10進数として処理します。
詳細クラスタ とデータ統合サーバーは、10進数値を異なる方法でスケーリングします。データ統合サーバーでは10進数データの行間でスケールを変えることができますが、詳細クラスタ では行ごとに固定スケールが使用されます。例えば、詳細クラスタ で10進数の1.1234567をスケール9で処理すると、出力は1.123456700になります。しかし、データ統合サーバーでは、この出力は1.1234567になります。
詳細モードのマッピングでデータがフラットファイルに書き込まれた場合、指数表記の6を超えるスケールを持つ10進数のソース値は、指数表記を使用せずにターゲットに書き込まれます。例えば、ソースの10進数値0E-20は、0.00000000000000000000としてターゲットに書き込まれます。
文字列データ型 トランスフォーメーション文字列のデータ型には、Nstring、Ntext、String、およびTextが含まれます。Nstring、Ntext、String、およびTextデータ型は104,857,600文字までの同精度をサポートしますが、データ統合 は、ソースからターゲットに文字列データを移動する場合はStringデータ型を使用し、テキストデータを移動する場合はTextデータ型を使用します。
一部のデータベースではテキストデータと文字列データの格納方法が異なるため、データ統合 ではこの2つの文字データ型を区別する必要があります。ソースでStringを表示する場合は、ターゲットカラムをStringに設定します。同様に、Textを表示する場合は、ターゲットカラムをText、Long、またはLong Varchar(ソースに応じたデータ型)に設定します。
一般には、サイズの小さい文字列データ型(CharやVarcharなど)は、ソース、ルックアップトランスフォーメーション、およびSQLトランスフォーメーションではStringとして表示され、サイズの大きいテキストデータ型(Text、Long、Long Varcharなど)はソースではTextとして表示されます。
トランスフォーメーション内では、Nstring、Ntext、String、およびTextを相互に入れ替えて使用できます。ただし、ソース、ルックアップトランスフォーメーション、およびSQLトランスフォーメーションでは、ターゲットデータ型が一致している必要があります。データベースドライバは、データが正確に渡されるように文字列データ型とトランスフォーメーションデータ型を一致させる必要があります。たとえば、ルックアップテーブルのNcharは、LookupトランスフォーメーションのNstringと一致しなければなりません。