データの解析
適用対象: SQL Server Azure Data Factory の SSIS Integration Runtime
パッケージ内のデータ フローは、異種データ ストア間でデータの抽出や読み込みを行います。データ ストアでは、標準およびカスタムのさまざまなデータ型を使用します。 データ フローでは、 Integration Services の変換元は、データの抽出、文字列データの解析、および Integration Services データ型へのデータ変換を行います。 次に続く変換で、データを解析して別のデータ型に変換したり、列のコピーを別のデータ型で作成することもあります。 コンポーネントで使用する式で、引数やオペランドを別のデータ型にキャストする場合もあります。 さらに、データがデータ ストアに読み込まれるとき、変換先でデータを解析して、変換先が使用するデータ型に変換する場合もあります。 詳細については、「 Integration Services Data Types」を参照してください。
解析の 2 つの種類
Integration Services では、データ変換用に、高速解析と標準解析の、2 種類の解析が用意されています。
高速解析は、高速で単純な解析ルーチンのセットで、ロケール固有のデータ型の変換はサポートされません。最も頻繁に使用される日付と時間の形式のみがサポートされます。
標準解析は、解析ルーチンの大規模なセットで、Oleaut32.dll と Ole2dsip.dll で使用できるオートメーション データ型変換 API で提供される、すべてのデータ型の変換がサポートされています。
高速解析
高速解析は、データを解析するための高速で単純なルーチンのセットです。 これらのルーチンはロケール依存型ではなく、日付、時刻、および整数形式のサブセットのみをサポートします。
要件と制限事項
パッケージに高速解析を実装することで、ロケール固有の形式と頻繁に使用される ISO 8601 の基本形式や拡張形式では、日付、時刻、および数値データを解釈できなくなりますが、パッケージのパフォーマンスは向上します。 たとえば、高速解析では、YYYYMMDD や YYYY-MM-DD など、通常使用される日付形式表記のみがサポートされます。ロケール固有の解析の実行や、通貨データ内の特殊文字の認識は行いません。また、整数の 16 進数表記と科学的表記は変換できません。
フラット ファイル ソースまたはデータ変換の変換を使用する場合のみ、高速解析を使用できます。 著しくパフォーマンスが向上する可能性があるので、可能な限りこれらのデータ フロー コンポーネントで高速解析を使用するよう検討してください。
パッケージ内のデータ フローでロケール依存型の解析が必要な場合は、高速解析ではなく、標準的な解析を使用することをお勧めします。 たとえば、高速解析では、コンマなど 10 進数の記号が含まれるロケール依存型のデータ、年 - 月 - 日形式以外の日付形式、および通貨記号は認識されません。
高速解析では、世紀、年、月など、1 つ以上の日付の部分を暗黙で表記する切り捨て表記は認識されません。 たとえば、高速解析は、世紀を暗黙で示して年月を表記する '-YYMM' 形式と、年を暗黙で示して月を表記する '--MM' 形式の、どちらも認識しません。 ただし、有効桁数を減らした表記の一部は認識されます。 たとえば、高速解析では、時間と分のみを示す 'hhmm;' 形式と、年のみを示す 'YYYY' 形式は認識されます。
高速解析は、列レベルで指定されます。 フラット ファイル ソースおよびデータ変換の変換では、出力列で高速解析を指定できます。 入力と出力には、ロケール依存型の列およびロケール非依存型の列の、両方を含めることができます。
数値データ形式 (高速解析)
高速解析は、データを解析するための、高速で単純なロケール非依存型のルーチンのセットです。 高速解析でサポートされているデータ型は、整数データ型の限定された形式のセットのみです。
整数データ型
Integration Services で用意されている整数データ型は、DT_I1、DT_UI1、DT_I2、DT_UI2、DT_I4、DT_UI4、DT_I8、および DT_UI8 です。 詳細については、「 Integration Services Data Types」を参照してください。
高速解析では、次の形式の整数データ型がサポートされています。
0 以上の先頭および末尾のスペース、またはタブ ストップ。 たとえば、値 " 123 " は有効です。 値がすべてスペースの場合は、0 に評価されます。
先頭の正符号、負符号、または符号なし。 たとえば、値 +123、-123、および 123 は有効です。
1 つ以上のアラビア数字 (0 ~ 9)。 たとえば、値 345 は有効です。 他の言語の数値はサポートされません。
次の形式を含むデータ形式はサポートされません。
特殊文字。 たとえば、通貨文字 $ はサポートされないため、値 $20 は解析できません。
ライン フィード、キャリッジ リターン、改行なしスペースなどの空白文字。 たとえば、値 " 123" は解析できません。
整数の 16 進表記。 たとえば、値 2EE は解析できません。
整数の科学的表記法。 たとえば、値 1E+10 は解析できません。
次の形式は、整数の出力データ形式です。
負の数値を表す負符号、および正の数値を表す符号なし。
空白なし。
1 つ以上のアラビア数字 (0 ~ 9)。
日付および時刻の形式 (高速解析)
高速解析は、データを解析するための高速で単純なルーチンのセットです。 高速解析では、日付および時刻のデータ型に対し次の形式がサポートされています。
Date データ型
高速解析では、次の文字列形式の日付データがサポートされています。
先頭の空白文字を含む日付の形式。 たとえば、値 " 2004- 02-03" は有効です。
次の表に示す ISO 8601 形式。
形式 説明 YYYYMMDD
YYYY-MM-DD4 桁の年、2 桁の月、および 2 桁の日を表す、基本および拡張形式です。 拡張形式では、日付部分はハイフン (-) で区切られます。 YYYY-MM 4 桁の年および 2 桁の月を表す、有効桁数を減らした基本および拡張形式です。 拡張形式では、日付部分はハイフン (-) で区切られます。 YYYY 4 桁の年を表す、有効桁数を減らした形式です。
高速解析では、次の形式の日付データはサポートされていません。
アルファベットの月の値。 たとえば、日付形式 Oct-31-2003 は無効です。
DD-MM-YYYY や MM-DD-YYYY などのあいまいな形式。 たとえば、03-04-1995 や 04-03-1995 の日付は無効です。
4 桁の暦年と、その年の日付を 3 桁で表す、基本および拡張の切り捨て形式。たとえば YYYYDDD や YYYY-DDD は無効です。
4 桁の年、2 桁の週番号、および 1 桁の曜日番号を表す、基本および拡張の切り捨て形式。たとえば YYYYWwwD や YYYY-Www-D は無効です。
年と週を 4 桁の年と 2 桁の週番号で表す、基本および拡張の切り捨て形式。たとえば YYYWww や YYYY-Www は無効です。
高速解析では、DT_DBDATE としてデータを出力します。 切り捨て形式の日付の値は、埋め込まれます。 たとえば、YYYY は YYYY0101 になります。
詳細については、「 Integration Services Data Types」を参照してください。
時間データ型
高速解析では、次の文字列形式の時刻データがサポートされています。
先頭の空白文字を含む時刻の形式。 たとえば、値 " 10:24" は有効です。
24 時間形式。 高速解析では、AM および PM の表記はサポートされていません。
次の表に示す ISO 8601 時刻形式。
形式 説明 HHMISS
HH:MI:SS2 桁の時、2 桁の分、および 2 桁の秒を表す、基本および拡張形式です。 拡張形式では、時刻の部分はコロン (:) で区切られます。 HHMI
HH:MI2 桁の時と 2 桁の分を表す、基本および拡張の切り捨て形式です。 拡張形式では、時刻の部分はコロン (:) で区切られます。 HH 2 桁の時を表す切り捨て形式です。 00:00:00
000000
0000
00
240000
24:00:00
2400
24午前 0 時を表す形式です。 次の表に示す、タイム ゾーンを指定する時刻形式。
形式 説明 +HH:MI
+HHMIローカル時間を求めるために協定世界時 (UTC) に加算される時間数と分数を示す基本形式と拡張形式。 -HH:MI
-HHMIローカル時間を求めるために協定世界時 (UTC) から減算される時間数と分数を示す基本形式と拡張形式。 +HH ローカル時間を求めるために UTC に加算される時間数を示す切り捨て形式。 -HH ローカル時間を求めるために UTC から減算される時間数を示す切り捨て形式。 Z 時間が UTC で表されていることを示す 0 の値。 タイム ゾーン要素を含むことのできるすべての時刻および日付/時刻データの形式。 ただし、データが DT_DBTIMESTAMPOFFSET 型以外の場合、タイム ゾーン値は無視されます。 詳細については、「 Integration Services Data Types」を参照してください。
タイム ゾーン要素を含む形式では、次の例に示すように、時間要素とタイム ゾーン要素の間にスペースはありません。
HH:MI:SS[+HH:MI]
上の例の角かっこは、タイム ゾーン値が省略可能であることを示します。
次の表に示す、小数部を含む時刻形式。
形式 説明 HH[.nnnnnnn] n は、時間の端数を表す 0 ~ 9999999 の範囲の値です。 角かっこは、この値が省略可能であることを示しています。
たとえば、値 12.750 は 12:45 を示します。HHMI[.nnnnnnn]
HH:MI[.nnnnnnn]n は、分の端数を表す 0 ~ 9999999 の範囲の値です。 角かっこは、この値が省略可能であることを示しています。
たとえば、値 1220.500 は 12:20:30 を示します。HHMISS[.nnnnnnn]
HH:MI:SS[.nnnnnnn]n は、秒の端数を表す 0 ~ 9999999 の範囲の値です。 角かっこは、この値が省略可能であることを示しています。
たとえば、値 122040.250 は 12:20:40.15 を示します。Note
前の表の時刻形式の区切り文字には、小数点またはコンマを使用できます。
次の例に示す、うるう秒を含む時刻値。
23:59:60[.0000000]
235960[.0000000]
高速解析では、DT_DBTIME および DT_DBTIME2 として文字列を出力します。 切り捨て形式の時刻値は、埋め込まれます。 たとえば、HH:MI は HH:MM:00.000 になります。
詳細については、「 Integration Services Data Types」を参照してください。
日付/時刻データ型
高速解析では、次の文字列形式の日付/時刻データがサポートされています。
先頭の空白文字を含む形式。 たとえば、値 " 2003-01-10T203910" は有効です。
YYYYMMDDT[HHMISS][+HH:MI] などの、大文字 T で区切られた有効な日付形式と有効な時刻形式、および有効なタイム ゾーン形式の組み合わせ。 時刻とタイム ゾーンの値は必須ではありません。 たとえば、"2003-10-14" は有効です。
高速解析では、期間はサポートされていません。 たとえば、YYYYMMDDThhmmss/YYYYMMDDThhmmss の形式の、開始および終了の日付と時刻で識別される期間は、解析できません。
高速解析では、DT_DATE、DT_DBTIMESTAMP、DT_DBTIMESTAMP2、および DT_DBTIMESTAMPOFFSET として文字列を出力します。 切り捨て形式の日付/時刻値は、埋め込まれます。 次の表に、欠けている日付および時刻の部分に対して追加される値を示します。
日付/時刻部分 | パディング |
---|---|
Seconds | 00 が追加されます。 |
分 | 00:00 が追加されます。 |
時間 | 00:00:00 が追加されます。 |
日間 | 月の日付として 01 が追加されます。 |
Month | 年の月として 01 が追加されます。 |
詳細については、「 Integration Services Data Types」を参照してください。
高速解析を有効にする
高速解析を使用するフラット ファイル ソースまたはデータ変換の変換の列ごとに、高速解析プロパティを設定する必要があります。 プロパティを設定するには、フラット ファイル ソースおよびデータ変換の変換の詳細エディターを使用します。
フラット ファイル ソースまたはデータ変換の変換を右クリックし、 [詳細エディターの表示]をクリックします。
[詳細エディター] ダイアログ ボックスの [入力プロパティと出力プロパティ] タブをクリックします。
[入力および出力] ペインで、高速解析を有効にする列をクリックします。
[プロパティ] ウィンドウで [カスタム プロパティ] ノードを展開し、 FastParse プロパティを Trueに設定します。
[OK] をクリックします。
標準解析
標準解析は、ロケール依存型の解析ルーチンのセットであり、Oleaut32.dll と Ole2dsip.dll で使用できるオートメーション データ型変換の API が提供する、すべてのデータ型変換がサポートされています。 標準解析は、OLE DB 解析 API に相当します。
標準解析は、各言語のデータのデータ型変換をサポートしており、データ形式が高速解析でサポートされていない場合に使用する必要があります。