Informatica PowerCenter - 9.5.1

Informatica PowerCenter
(参照項目 9.5.1)
詳細ワークフローガイド
Informatica PowerCenter 詳細ワークフローガイド
参照項目 9.5.1
12月 2012
著作権 1998-2012 Informatica. すべての権利を保留する.
本ソフトウェアおよびマニュアルには、Informatica Corporationの所有権下にある情報が収められています。これらは使用および開示の制
限等を定めた使用許諾契約のもとに提供され、著作権法により保護されています。本ソフトウェアのリバースエンジニアリングは禁じられて
います。本マニュアルのいかなる部分も、いかなる手段(電子的複写、写真複写、録音など)によっても、Informatica Corporation の事前
の承諾なしに複製または転載することは禁じられています。このソフトウェアは、米国および/または国際的な特許、およびその他の出願中
の特許によって保護されています。
合衆国政府によるソフトウェアの使用、複製または開示は、DFARS 227.7202-1(a)および227.7702-3(a)(1995年)、DFARS
252.227-7013(C)(1)(ii)(1988年10月)、FAR 12.212(a)(1995年)、FAR 52.227-19、またはFAR 52.227-14(ALT III)に記載されて
いるとおりに、当該ソフトウェア使用許諾契約に定められた制限によって規制されます。
本製品または本書の情報は、予告なしに変更されることがあります。お客様が本製品または本書内に問題を発見された場合は、書面にて当社
までお知らせください。
Informatica、Informatica Platform、Informatica Data Services、PowerCenter、PowerCenterRT、PowerCenter Connect、PowerCenter
Data Analyzer、PowerExchange、PowerMart、Metadata Manager、Informatica Data Quality、Informatica Data Explorer、Informatica
B2B Data Transformation、Informatica B2B Data Exchange、Informatica On Demand、Informatica Identity Resolution、Informatica
Application Information Lifecycle Management、Informatica Complex Event Processing、Ultra Messaging、およびInformatica Master
Data Managementは、Informatica Corporationの米国および世界中の管轄地での商標または登録商標です。その他のすべての企業名および製
品名は、それぞれの企業の商標または登録商標です。
本ソフトウェアまたはドキュメントの一部は、次のサードパーティが有する著作権に従います(ただし、これらに限定されません)。
Copyright DataDirect Technologies.コンテンツの無断複写・転載を禁じます。Copyright (c) Sun Microsystems.コンテンツの無断複写・
転載を禁じます。Copyright (c) RSA Security Inc. All Rights Reserved.Copyright (c) Ordinal Technology Corp. All rights
reserved. Copyright (c) Aandacht c.v. All rights reserved. Copyright Genivia, Inc. All rights reserved. Copyright Isomorphic
Software. コンテンツの無断複写・転載を禁じます。Copyright (c) Meta Integration Technology, Inc. All rights reserved. Copyright
(c) Intalio. コンテンツの無断複写・転載を禁じます。Copyright (c) Oracle. コンテンツの無断複写・転載を禁じます。Copyright (c)
Adobe Systems Incorporated. コンテンツの無断複写・転載を禁じます。Copyright (c) DataArt, Inc. All rights reserved. Copyright
(c) ComponentSource. コンテンツの無断複写・転載を禁じます。Copyright (c) Microsoft Corporation. コンテンツの無断複写・転載を禁
じます。Copyright (C) Rogue Wave Software, Inc. All rights reserved. Copyright (c) Teradata Corporation. コンテンツの無断複
写・転載を禁じます。Copyright (c) Yahoo! Inc. All rights reserved. Copyright (c) Glyph & Cog, LLC. コンテンツの無断複写・転載
を禁じます。Copyright (C) Thinkmap, Inc. All rights reserved. Copyright (C) Clearpace Software Limited. コンテンツの無断複写・
転載を禁じます。Copyright (C) Information Builders, Inc. All rights reserved. Copyright (C) OSS Nokalva, Inc. All rights
reserved. Copyright Edifecs, Inc. All rights reserved. Copyright Cleo Communications, Inc. All rights reserved.Copyright (c)
International Organization for Standardization 1986. コンテンツの無断複写・転載を禁じます。Copyright (C) ej-technologies GmbH.
コンテンツの無断複写・転載を禁じます。Copyright (c) Jaspersoft Corporation. コンテンツの無断複写・転載を禁じます。Copyright
(C) is International Business Machines Corporation. コンテンツの無断複写・転載を禁じます。Copyright (C) yWorks GmbH. コンテン
ツの無断複写・転載を禁じます。Copyright (C) Lucent Technologies.コンテンツの無断複写・転載を禁じます。Copyright (c) University
of Toronto. コンテンツの無断複写・転載を禁じます。Copyright (C) Daniel Veillard. コンテンツの無断複写・転載を禁じます。
Copyright (C) Unicode, Inc. Copyright IBM Corp. All rights reserved. Copyright (C) MicroQuill Software Publishing, Inc. All
rights reserved. Copyright (C) PassMark Software Pty Ltd. All rights reserved. Copyright (C) LogiXML, Inc. All rights
reserved. Copyright (C) 2003-2010 Lorenzi Davide, All rights reserved. Copyright (C) Red Hat, Inc. All rights reserved.
Copyright (c) The Board of Trustees of the Leland Stanford Junior University. コンテンツの無断複写・転載を禁じます。Copyright
(C) EMC Corporation. コンテンツの無断複写・転載を禁じます。Copyright (C) Flexera Software. コンテンツの無断複写・転載を禁じま
す。
本製品には、Apache Software Foundation(http://www.apache.org/)によって開発されたソフトウェア、およびApache License, Version
2.0(「ライセンス」)の下に許諾されたその他のソフトウェアが含まれています。ライセンスのコピーはhttp://www.apache.org/licenses/
LICENSE-2.0から入手することができます。適用法にて要求されないか書面にて合意されない限り、ライセンスの下に配布されるソフトウェ
アは「現状のまま」で配布され、明示的あるいは黙示的かを問わず、いかなる種類の保証も行われません。ライセンス下での許諾および制限
を定める具体的文言については、ライセンスを参照してください。
本製品には、Mozilla(http://www.mozilla.org/)によって開発されたソフトウェア、ソフトウェアcopyright The JBoss Group, LLC, all
rights reserved、ソフトウェアcopyright, Red Hat Middleware, LLC, all rights reserved、Copyright (c) 1999-2006 by Bruno Lowagie
and Paulo SoaresおよびGNU Lesser General Public License Agreement(http://www.gnu.org/licenses/lgpl.htmlを参照)に基づいて許諾
されたその他のソフトウェアが含まれています。資料は、Informaticaが無料で提供しており、一切の保証を伴わない「現状渡し」で提供さ
れるものとし、Informatica Corporationは市場性および特定の目的の適合性の黙示の保証などを含めて、一切の明示的及び黙示的保証の責
任を負いません。
製品には、ワシントン大学、カリフォルニア大学アーバイン校、およびバンダービルト大学のDouglas C.Schmidtおよび同氏のリサーチグル
ープが著作権を持つACE(TM)およびTAO(TM)ソフトウェアが含まれています。Copyright (c) 1993-2006, all rights reserved.
本製品には、OpenSSL Toolkitを使用するためにOpenSSL Projectが開発したソフトウェア(copyright The OpenSSL Project.All Rights
Reserved)が含まれています。また、このソフトウェアの再配布は、http://www.openssl.orgおよびhttp://www.openssl.org/source/
license.htmlにある使用条件に従います。
本ソフトウェアには、CurlソフトウェアCopyright 1996-2007, Daniel Stenberg, <[email protected]>が含まれます。コンテンツの無断複写・
転載を禁じます。本ソフトウェアに関する許諾および制限は、http://curl.haxx.se/docs/copyright.htmlにある使用条件に従います。すべ
てのコピーに上記の著作権情報とこの許諾情報が記載されている場合、目的に応じて、本ソフトウェアの使用、コピー、変更、ならびに配布
が有償または無償で許可されます。
本製品には、ソフトウェアcopyright 2001-2005 (C) MetaStuff, Ltd. All Rights Reserved.が含まれます。本ソフトウェアに関する許諾お
よび制限は、http://www.dom4j.org/license.htmlにある使用条件に従います。
製品には、ソフトウェアcopyright (C) 2004-2007, The Dojo Foundationが含まれます。コンテンツの無断複写・転載を禁じます。本ソフト
ウェアに関する許諾および制限は、http://dojotoolkit.org/licenseにある使用条件に従います。
本製品には、ICUソフトウェアcopyright International Business Machines Corporationおよび他のソフトウェアが含まれます。コンテンツ
の無断複写・転載を禁じます。本ソフトウェアに関する許諾および制限は、http://source.icu-project.org/repos/icu/icu/trunk/
license.htmlにある使用条件に従います。
本製品には、ソフトウェアcopyright (c) 1996-2006 Per Bothnerが含まれます。コンテンツの無断複写・転載を禁じます。お客様がこのよ
うなソフトウェアを使用するための権利は、ライセンスで規定されています。http://www.gnu.org/software/kawa/Software-License.htmlを
参照してください。
本製品には、OSSP UUIDソフトウェアCopyright (C) 2002 Ralf S. Engelschall, Copyright (C) 2002 The OSSP Project Copyright (C)
2002 Cable & Wireless Deutschlandが含まれます。本ソフトウェアに関する許諾および制限は、http://www.opensource.org/licenses/mitlicense.phpにある使用条件に従います。
本製品には、Boost(http://www.boost.org/)によって開発されたソフトウェアまたはBoostソフトウェアライセンスの下で開発されたソフ
トウェアが含まれています。本ソフトウェアに関する許諾および制限は、http://www.boost.org/LICENSE_1_0.txtにある使用条件に従いま
す。
本製品には、ソフトウェアcopyright (c) 1997-2007 University of Cambridgeが含まれます。本ソフトウェアに関する許諾および制限は、
http://www.pcre.org/license.txtにある使用条件に従います。
本製品には、ソフトウェアcopyright (C) 2007 The Eclipse Foundationが含まれます。コンテンツの無断複写・転載を禁じます。本ソフト
ウェアに関する許諾および制限は、http://www.eclipse.org/org/documents/epl-v10.phpにある使用条件に従います。
本製品には、http://www.tcl.tk/software/tcltk/license.html、http://www.bosrup.com/web/overlib/?License、http://www.stlport.org/
doc/license.html、http://www.asm.ow2.org/license.html、http://www.cryptix.org/LICENSE.TXT、http://hsqldb.org/web/
hsqlLicense.html、http://httpunit.sourceforge.net/doc/license.html、http://jung.sourceforge.net/license.txt、http://
www.gzip.org/zlib/zlib_license.html、http://www.openldap.org/software/release/license.html、http://www.libssh2.org、http://
slf4j.org/license.html、http://www.sente.ch/software/OpenSourceLicense.html、http://fusesource.com/downloads/licenseagreements/fuse-message-broker-v-5-3-license-agreement、http://antlr.org/license.html、http://aopalliance.sourceforge.net/、
http://www.bouncycastle.org/licence.html、http://www.jgraph.com/jgraphdownload.html、http://www.jcraft.com/jsch/LICENSE.txt、
http://jotm.objectweb.org/bsd_license.html、http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231、http://
www.slf4j.org/license.html、http://developer.apple.com/library/mac/#samplecode/HelpHook/Listings/HelpHook_java.html、http://
nanoxml.sourceforge.net/orig/copyright.html、http://www.json.org/license.html、http://forge.ow2.org/projects/javaservice/、
http://www.postgresql.org/about/licence.html、http://www.sqlite.org/copyright.html、http://www.tcl.tk/software/tcltk/
license.html、http://www.jaxen.org/faq.html, http://www.jdom.org/docs/faq.html、http://www.slf4j.org/license.html、http://
www.iodbc.org/dataspace/iodbc/wiki/iODBC/License、http://www.keplerproject.org/md5/license.html、http://www.toedter.com/en/
jcalendar/license.html、http://www.edankert.com/bounce/index.html、http://www.net-snmp.org/about/license.html、http://
www.openmdx.org/#FAQ、http://www.php.net/license/3_01.txt、http://srp.stanford.edu/license.txt、http://www.schneier.com/
blowfish.html、http://www.jmock.org/license.html、http://xsom.java.net、http://benalman.com/about/license/に基づいて許諾された
ソフトウェアが含まれています。
本製品には、Academic Free License(http://www.opensource.org/licenses/afl-3.0.php)、Common Development and Distribution
License(http://www.opensource.org/licenses/cddl1.php)、Common Public License(http://www.opensource.org/licenses/
cpl1.0.php)、Sun Binary Code License Agreement Supplemental License Terms、BSD License(http://www.opensource.org/licenses/
bsd-license.php)、MIT License(http://www.opensource.org/licenses/mit-license.php)、およびArtistic License(http://
www.opensource.org/licenses/artistic-license-1.0)に基づいて許諾されたソフトウェアが含まれています。
本製品には、ソフトウェアcopyright (c) 2003-2006 Joe WaInes, 2006-2007 XStream Committersが含まれています。コンテンツの無断複
写・転載を禁じます。本ソフトウェアに関する許諾および制限は、http://j.org/license.htmlにある使用条件に従います。本製品には、
Indiana University Extreme! Labによって開発されたソフトウェアが含まれています。詳細については、http://www.extreme.indiana.edu/
を参照してください。
本ソフトウェアは、米国の特許番号5,794,246、6,014,670、6,016,501、6,029,178、6,032,158、6,035,307、6,044,374、6,092,086、
6,208,990、6,339,775、6,640,226、6,789,096、6,820,077、6,823,373、6,850,947、6,895,471、7,117,215、7,162,643、7,243,110、
7,254,590、7,281,001、7,421,458、7,496,588、7,523,121、7,584,422、7,676,516、7,720,842、7,721,270、および7,774,791、および国際
的な特許、ならびにその他の出願中の特許によって保護されています。
免責: 本文書は、一切の保証を伴わない「現状渡し」で提供されるものとし、Informatica Corporationは他社の権利の非侵害、市場性およ
び特定の目的への適合性の黙示の保証などを含めて、一切の明示的および黙示的保証の責任を負いません。Informatica Corporationでは、
本ソフトウェアまたはドキュメントに誤りのないことを保証していません。本ソフトウェアまたはドキュメントに記載されている情報には、
技術的に不正確な記述や誤植が含まれる場合があります。本ソフトウェアまたはドキュメントの情報は、予告なしに変更されることがありま
す。
特記事項
このInformatica製品(以下「ソフトウェア」)には、Progress Software Corporation(以下「DataDirect」)の事業子会社である
DataDirect Technologiesからの特定のドライバ(以下「DataDirectドライバ」)が含まれています。DataDirectドライバには、次の用語お
よび条件が適用されます。
1.DataDirectドライバは、特定物として現存するままの状態で提供され、商品性の保証、特定目的適合性の保証および法律上の瑕疵担保
責任を含むすべての明示もしくは黙示の保証責任を負わないものとします。国または地域によっては、法律の強行規定により、保証責任
の制限が禁じられる場合、強行規定の制限を受けるものとします。
2.DataDirectまたは第三者は、予見の有無を問わず発生したODBCドライバの使用に関するいかなる直接的、間接的、偶発的、特別、ある
いは結果的損害に対して責任を負わないものとします。本制限事項は、すべての訴訟原因に適用されます。訴訟原因には、契約違反、保
証違反、過失、厳格責任、詐称、その他の不法行為を含みますが、これらに限るものではありません。
Part Number: PC-AWG-95100-0001
目次
序文............................................. xiv
Informaticaのリソース. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiv
Informaticaカスタマポータル. . . . . . . . . . . . . . . . . . . . . . . . . . . . xiv
Informaticaのマニュアル. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiv
InformaticaのWebサイト. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiv
Informatica How-To Library. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xv
Informatica Knowledge Base. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xv
Informatica Multimedia Knowledge Base. . . . . . . . . . . . . . . . . . . . .
xv
Informaticaグローバルカスタマサポート. . . . . . . . . . . . . . . . . . . . . . xv
第 1 章 : パイプラインのパーティション化につい
て.................................................. 1
パイプラインのパーティション化の概要について. . . . . . . . . . . . . . . . . . . . . 1
パーティション化属性. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
パーティションポイント. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
パーティションの数. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
パーティションタイプ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
動的パーティション. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
動的パーティションの設定. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
動的パーティションに関するルールおよびガイドライン. . . . . . . . . . . . . 7
パーティションタイプでの動的パーティションの使用. . . . . . . . . . . . . . . 8
パーティションレベルの属性の設定. . . . . . . . . . . . . . . . . . . . . . . . . . 8
キャッシュのパーティション化. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
パーティション化したパイプラインにおけるマッピング変数. . . . . . . . . . . . . 9
パーティション化のルール. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10
オブジェクトを編集する場合のパーティションの制限. . . . . . . . . . . . . . 10
PowerExchangeに対するパーティション化の制限. . . . . . . . . . . . . . . . .
11
パーティション化の設定. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
パイプラインへのパーティションポイントの追加. . . . . . . . . . . . . . . . . 12
パーティションポイントの設定. . . . . . . . . . . . . . . . . . . . . . . . . . . .
13
[パーティションポイント]ノード. . . . . . . . . . . . . . . . . . . . . . . . . . 14
[パーティションポイント以外]ノード. . . . . . . . . . . . . . . . . . . . . . . 15
第 2 章 : パーティションポイント.................. 16
パーティションポイントの概要. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16
パーティションポイントの追加および削除. . . . . . . . . . . . . . . . . . . . . . . .
17
目次
i
パーティションポイントの追加と削除に関するルールおよびガイドライ
ン. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
18
リレーショナルソースのパーティション化. . . . . . . . . . . . . . . . . . . . . . . . 20
SQLクエリの入力. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
フィルタ条件の入力. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
ファイルソースのパーティション化. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
ファイルソースのパーティション化の規則およびガイドライン. . . . . . . . 22
ファイルソースの読み込むための1つのスレッドの使用. . . . . . . . . . . . . 23
ファイルソースの読み込むための複数のスレッドの使用. . . . . . . . . . . . . 23
ファイルのパーティション化の設定. . . . . . . . . . . . . . . . . . . . . . . . . . 24
リレーショナルターゲットのパーティション化. . . . . . . . . . . . . . . . . . . . . 28
データベースの互換性. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
ファイルターゲットのパーティション化. . . . . . . . . . . . . . . . . . . . . . . . . . 29
接続設定の設定. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
ファイルプロパティの設定. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
カスタムトランスフォーメーションのパーティション化. . . . . . . . . . . . . . . . 33
複数のパーティションに関する作業. . . . . . . . . . . . . . . . . . . . . . . . . . 34
パーティションポイントの作成. . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
スレッドに関する作業. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
ジョイナトランスフォーメーションのパーティション化. . . . . . . . . . . . . . . . 36
ソート済みジョイナトランスフォーメーションのパーティション化. . . . . 36
ソート済みフラットファイルの使用. . . . . . . . . . . . . . . . . . . . . . . . . . 37
ソート済みリレーショナルデータの使用. . . . . . . . . . . . . . . . . . . . . . . 39
ソータトランスフォーメーションの使用. . . . . . . . . . . . . . . . . . . . . . . 39
パーティションを使用したソート済みジョイナトランスフォーメーショ
ンの最適化. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
ルックアップトランスフォーメーションのパーティション化. . . . . . . . . . . . . 41
ルックアップトランスフォーメーションのキャッシュのパーティション
化. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
パイプラインルックアップトランスフォーメーションのキャッシュのパ
ーティション化. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
シーケンスジェネレータトランスフォーメーションのパーティション化. . . . . 43
ソータトランスフォーメーションのパーティション化. . . . . . . . . . . . . . . . . 43
ソータトランスフォーメーションの作業用ディレクトリ設定. . . . . . . . . . 44
XMLジェネレータトランスフォーメーションのパーティション化. . . . . . . . . . 44
トランスフォーメーションに関する制限. . . . . . . . . . . . . . . . . . . . . . . . . . 45
数値関数に関する制限. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
第 3 章 : パーティションタイプ.................... 46
パーティションタイプの概要. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
パイプラインでのパーティションタイプの設定. . . . . . . . . . . . . . . . . . 47
ii
目次
パーティションタイプの設定. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
データベースパーティション化のパーティションタイプ. . . . . . . . . . . . . . . . 51
データベースソースのパーティション化. . . . . . . . . . . . . . . . . . . . . . . 52
ターゲットデータベースのパーティション化. . . . . . . . . . . . . . . . . . . . 54
ハッシュ自動キーのパーティションタイプ. . . . . . . . . . . . . . . . . . . . . . . . 55
ハッシュユーザーキーパーティションタイプ. . . . . . . . . . . . . . . . . . . . . . . 56
キー範囲パーティションタイプ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
パーティションキーの追加. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
キー範囲の追加. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
パススルーパーティションタイプ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
ラウンドロビンパーティションタイプ. . . . . . . . . . . . . . . . . . . . . . . . . . . 61
第 4 章 : プッシュダウンの最適化.................. 63
プッシュダウンの最適化の概要. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
プッシュダウンの最適化のタイプ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
ソース側でのプッシュダウンの最適化セッションの実行. . . . . . . . . . . . . 64
ターゲット側でのプッシュダウンの最適化セッションの実行. . . . . . . . . . 65
完全なプッシュダウンの最適化セッションの実行 . . . . . . . . . . . . . . . . 65
動作可能なデータベースとアイドル状態のデータベース. . . . . . . . . . . . . . . . 66
データベースに関する作業. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
Integration Serviceおよびデータベースの出力の比較. . . . . . . . . . . . . 67
ODBCドライバの使用. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
Netezzaに関するルールおよびガイドライン. . . . . . . . . . . . . . . . . . . . 70
プッシュダウン互換性. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
データベース接続に互換性がないユーザー. . . . . . . . . . . . . . . . . . . . . 71
アイドル状態のデータベース内のテーブル名の修飾. . . . . . . . . . . . . . . 72
日付に関する作業. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
式に関する作業. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
演算子. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
変数. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
関数. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
プッシュダウンの最適化の関数に関するルールおよびガイドライン. . . . . 80
エラー処理、ロギング、およびリカバリ. . . . . . . . . . . . . . . . . . . . . . . . . . 81
エラー処理. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
ロギング. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
リカバリ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
緩やかに変化する次元に関する作業. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
シーケンスおよびビューに関する作業. . . . . . . . . . . . . . . . . . . . . . . . . . . 82
シーケンス. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
ビュー. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
目次
iii
孤立シーケンスおよびビューのトラブルシューティング. . . . . . . . . . . . . 85
$$PushdownConfigマッピングパラメータの使用. . . . . . . . . . . . . . . . . . . . . 87
プッシュダウンの最適化のためのセッションの設定. . . . . . . . . . . . . . . . . . 89
プッシュダウンオプション. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
パーティション化. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
ターゲットロードルール. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
プッシュダウングループの表示. . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
第 5 章 : プッシュダウンの最適化トランスフォーメ
ーション.......................................... 96
プッシュダウンの最適化およびトランスフォーメーションの概要. . . . . . . . . . 96
プッシュダウンの最適化とトランスフォーメーションに関するルールお
よびガイドライン. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
アグリゲータトランスフォーメーション. . . . . . . . . . . . . . . . . . . . . . . . . . 98
式トランスフォーメーション. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
フィルタトランスフォーメーション. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
ジョイナトランスフォーメーション. . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
ルックアップトランスフォーメーション. . . . . . . . . . . . . . . . . . . . . . . . . 101
接続されていないルックアップトランスフォーメーション. . . . . . . . . .
103
SQLオーバライドを使用するLookupトランスフォーメーション. . . . . . . . 103
ルータートランスフォーメーション. . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
シーケンスジェネレータトランスフォーメーション. . . . . . . . . . . . . . . . . . 104
ソータトランスフォーメーション. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
106
ソース修飾子トランスフォーメーション. . . . . . . . . . . . . . . . . . . . . . . . . 107
SQLオーバーライドを使用したソース修飾子トランスフォーメーショ
ン. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
ターゲット. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
共有体トランスフォーメーション. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
110
アップデートストラテジトランスフォーメーション. . . . . . . . . . . . . . . . . . 110
第 6 章 : リアルタイム処理....................... 112
リアルタイム処理の概要. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
リアルタイムデータについて. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
メッセージとメッセージキュー. . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
Webサービスメッセージ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
PowerExchange変更データキャプチャソースからの変更データ. . . . . . . . 115
リアルタイムセッションの設定. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
終了条件. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
アイドル時間. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
116
メッセージカウント. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
Reader制限時間. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
iv
目次
フラッシュ待ち時間. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
コミットタイプ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
メッセージリカバリ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
前提条件. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
メッセージのリカバリを有効にする手順. . . . . . . . . . . . . . . . . . . . . . 120
リカバリファイル. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
メッセージの処理. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
メッセージリカバリ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
セッションリカバリデータのフラッシュ. . . . . . . . . . . . . . . . . . . . . . 121
リカバリテーブル. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
PM_REC_STATEテーブル. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
メッセージの処理. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
メッセージリカバリ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
リカバリキューおよびリカバリトピック. . . . . . . . . . . . . . . . . . . . . . . . . 123
メッセージの処理. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
メッセージリカバリ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
リカバリ無視リスト. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
リアルタイムセッションの停止. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
リアルタイムセッションのリスタートおよびリカバリ. . . . . . . . . . . . . . . . 125
リアルタイムセッションのリスタート. . . . . . . . . . . . . . . . . . . . . . . 125
リアルタイムセッションのリカバリ. . . . . . . . . . . . . . . . . . . . . . . . . 126
リスタートコマンドおよびリカバリコマンド. . . . . . . . . . . . . . . . . . . 126
リアルタイムセッションに関するルールおよびガイドライン. . . . . . . . . . . . 127
メッセージリカバリに関するルールおよびガイドライン. . . . . . . . . . . . . . . 127
リアルタイム処理の例. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
Informaticaリアルタイム製品. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
第 7 章 : コミットポイント....................... 132
コミットポイントの概要. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
ターゲットベースのコミット. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
ソースベースのコミット. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
コミットソースの決定. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
ソースベースコミットからターゲットベースコミットへの切り替え. . . . . 136
ユーザー定義コミット. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
トランザクションのロールバック. . . . . . . . . . . . . . . . . . . . . . . . . . 139
トランザクション制御について. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
トランスフォーメーション範囲. . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
トランザクション制御単位について. . . . . . . . . . . . . . . . . . . . . . . . . 146
トランザクション制御に関する作業のルールおよびガイドライン. . . . . . 146
トランザクション別ターゲットファイルの作成. . . . . . . . . . . . . . . . . . 147
目次
v
コミットプロパティの設定. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
第 8 章 : 行エラーのロギング..................... 149
行エラーログの概要. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
エラーログのコードページ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
エラーログテーブルについて. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
PMERR_DATA. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
PMERR_MSG. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
153
PMERR_SESS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
PMERR_TRANS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
エラーログファイルについて. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
エラーログオプションの設定. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
第 9 章 : ワークフローリカバリ................... 162
ワークフローリカバリの概要. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
操作の状態. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
ワークフローの操作の状態 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
操作のセッション状態. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
ターゲットリカバリテーブル. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
リカバリオプション. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
ワークフローのサスペンド. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
サスペンド時のメールの設定. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
ワークフローリカバリの設定. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
停止、強制終了、および終了されたワークフローのリカバリ. . . . . . . . . 171
一時停止されたワークフローのリカバリ. . . . . . . . . . . . . . . . . . . . . . 171
タスクリカバリの設定. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
タスクのリカバリ戦略. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
終了したタスクの自動的なリカバリ. . . . . . . . . . . . . . . . . . . . . . . . . 174
セッションの再開. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
174
再現可能なデータに関する作業. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
ソースの再現性. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
トランスフォーメーションの再現性. . . . . . . . . . . . . . . . . . . . . . . . . 177
リカバリ用のマッピングの設定. . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
ワークフローとタスクのリカバリの手順. . . . . . . . . . . . . . . . . . . . . . . . . 181
ワークフローのリカバリ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
セッションのリカバリ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
セッションからのワークフローのリカバリ. . . . . . . . . . . . . . . . . . . .
182
セッションリカバリに関するルールおよびガイドライン. . . . . . . . . . . . . . . 183
Old Trans: 最後のチェックポイントから再開するようにするためのリカ
バリの設定. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
vi
目次
リカバリ不可能なワークフローまたはタスク. . . . . . . . . . . . . . . . . . . 184
第 10 章 : 停止と強制終了........................ 185
停止と強制終了の概要. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
エラーのタイプ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
しきい値のエラー. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
致命的なエラー. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
Integration Serviceによるセッションの失敗の処理. . . . . . . . . . . . . . . . . 187
ワークフローの停止または強制終了. . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
タスクの停止または強制終了. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
停止または強制終了の手順. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
第 11 章 : コンカレントワークフロー.............. 191
コンカレントワークフローの概要. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
一意のワークフローインスタンスの設定. . . . . . . . . . . . . . . . . . . . . . . . . 192
ワークフローインスタンスのインスタンス名によるリカバリ. . . . . . . . . 192
同一インスタンス名のコンカレントインスタンスの実行に関するルール
およびガイドライン. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
同一名のコンカレントワークフローの設定. . . . . . . . . . . . . . . . . . . . . . . 193
コンカレントWebサービスワークフローの実行. . . . . . . . . . . . . . . . . . 193
同一名のワークフローインスタンスの設定. . . . . . . . . . . . . . . . . . . . 193
同一名のワークフローインスタンスのリカバリ. . . . . . . . . . . . . . . . . . 194
同一インスタンス名のコンカレントインスタンスの実行に関するルール
およびガイドライン. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
パラメータおよび変数の使用. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
実行インスタンス名または実行IDへのアクセス. . . . . . . . . . . . . . . . . . 195
コンカレントワークフローの設定手順. . . . . . . . . . . . . . . . . . . . . . . . . . 195
コンカレントワークフローの開始および停止. . . . . . . . . . . . . . . . . . . . . . 196
Workflow Designerからのワークフローインスタンスの開始. . . . . . . . . 196
単一のコンカレントワークフローの開始. . . . . . . . . . . . . . . . . . . . . . 197
コマンドラインからのコンカレントワークフローの開始. . . . . . . . . . . . 197
コンカレントワークフローの停止または強制終了. . . . . . . . . . . . . . . . 198
コンカレントワークフローの監視. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
セッションログおよびワークフローログの表示. . . . . . . . . . . . . . . . . . . . . 199
一意のワークフローインスタンス用のログファイル. . . . . . . . . . . . . . . 199
同一名のワークフローインスタンス用のログファイル. . . . . . . . . . . . . 200
コンカレントワークフローに関するルールおよびガイドライン. . . . . . . . . . 200
第 12 章 : グリッド処理.......................... 202
グリッド処理の概要. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
目次
vii
グリッド上でのワークフローの実行. . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
グリッド上でのセッションの実行. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
パーティショングループに関する作業. . . . . . . . . . . . . . . . . . . . . . . . . . 204
リソース要件を使用しないパーティショングループの作成. . . . . . . . . . 204
リソース要件を使用するパーティショングループの形成. . . . . . . . . . . . 204
パーティショングループの作成に関するルールおよびガイドライン. . . . . 205
キャッシュに関する作業. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
グリッドの接続とリカバリ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
グリッド上で実行するためのワークフローまたはセッションの設定. . . . . . . . 206
グリッド上で実行するためのワークフローまたはセッションの設定に関
するルールおよびガイドライン. . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
第 13 章 : ロードバランサ........................ 209
ロードバランサの概要. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
ワークフローへのサービスレベルの割り当て. . . . . . . . . . . . . . . . . . . . . . 210
タスクへのリソースの割り当て. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
第 14 章 : ワークフロー変数...................... 213
ワークフロー変数の概要. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
定義済みワークフロー変数. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
式における定義済みワークフロー変数の使用. . . . . . . . . . . . . . . . . . . 217
ワークフロー内の条件の評価. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
ワークフロー内のタスクステータスの評価. . . . . . . . . . . . . . . . . . . . 218
ワークフロー内の前回実行のタスクステータスの評価. . . . . . . . . . . . . 218
ユーザー定義ワークフロー変数. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
ワークフロー変数の初期値とカレント値. . . . . . . . . . . . . . . . . . . . . . 220
データタイプのデフォルト値. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
ユーザー定義ワークフロー変数の作成. . . . . . . . . . . . . . . . . . . . . . . 221
ワークレット変数の使用. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
永続ワークレット変数. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
初期値のオーバーライド. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
ワークレット変数の使用に関するルールおよびガイドライン. . . . . . . . . 224
ワークレットでの変数値の割り当て. . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
ワークレット間での変数値の受け渡し. . . . . . . . . . . . . . . . . . . . . . . 224
変数割り当ての設定. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
第 15 章 : セッションのパラメータおよび変数. . . . . 227
セッションパラメータに関する作業. . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
セッションログ名の変更. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
ターゲットファイルおよびディレクトリの変更. . . . . . . . . . . . . . . . . . 232
viii
目次
ファイルでのソースパラメータの変更. . . . . . . . . . . . . . . . . . . . . . . 232
接続パラメータの変更. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
ランタイム情報の取得. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
ファイルパラメータとデータベース接続パラメータの作成に関するルー
ルおよびガイドライン. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234
セッションのマッピングパラメータおよび変数. . . . . . . . . . . . . . . . . . . . . 234
セッションでのパラメータ値および変数値の割り当て. . . . . . . . . . . . . . . .
235
セッション間でのパラメータ値および変数値の受け渡し. . . . . . . . . . . . 236
変数割り当ての設定. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
第 16 章 : パラメータファイル.................... 238
パラメータファイルの概要. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
パラメータおよび変数のタイプ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239
パラメータおよび変数を使用する場所. . . . . . . . . . . . . . . . . . . . . . . . . .
240
パラメータファイル内の接続属性のオーバーライド. . . . . . . . . . . . . . . . . . 252
パラメータファイル構造体. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
パラメータファイルのセクション. . . . . . . . . . . . . . . . . . . . . . . . . .
254
コメント. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
NULL値. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256
サンプルのパラメータファイル. . . . . . . . . . . . . . . . . . . . . . . . . . . . 256
パラメータファイル名および場所の設定. . . . . . . . . . . . . . . . . . . . . . . . . 257
ワークフローまたはセッションでのパラメータファイルの使用. . . . . . .
257
pmcmdでのパラメータファイルの使用. . . . . . . . . . . . . . . . . . . . . . . . 259
パラメータファイルの例. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
パラメータファイルの作成に関するガイドライン. . . . . . . . . . . . . . . . . . . 261
パラメータおよびパラメータファイルのトラブルシューティング. . . . . . . . . 262
パラメータおよびパラメータファイルに関するヒント. . . . . . . . . . . . . . . .
263
第 17 章 : FastExport............................ 265
FastExportの使用の概要. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
手順1。 FastExport接続の作成. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
コードページのマッピングファイルの確認. . . . . . . . . . . . . . . . . . . .
268
手順2 readerの変更. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269
手順3 ソース接続の変更. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269
手順4。 制御ファイルのオーバーライド(オプション). . . . . . . . . . . . . . . 269
FastExportの使用に関するルールおよびガイドライン. . . . . . . . . . . . . . . . 271
第 18 章 : 外部データのロード.................... 272
外部データのロードの概要. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272
はじめに. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272
目次
ix
外部ローダーの動作. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
名前付きパイプへのデータのロード. . . . . . . . . . . . . . . . . . . . . . . . . 274
フラットファイルへのデータのステージング. . . . . . . . . . . . . . . . . . . 274
外部ローダーを使用したセッションのパーティション化. . . . . . . . . . . . 274
IBM DB2へのロード. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275
IBM DB2 EE外部ローダー. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275
IBM DB2 EEE外部ローダー. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276
IBM DB2 EEE外部ローダーに関するルールおよびガイドライン. . . . . . . . 276
操作モードの設定. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277
オーソリティ、特権、権限の設定. . . . . . . . . . . . . . . . . . . . . . . . . . 277
IBM DB2 EE外部ローダーの属性の設定. . . . . . . . . . . . . . . . . . . . . . . 278
IBM DB2 EEE外部ローダの属性の設定. . . . . . . . . . . . . . . . . . . . . . . . 280
Oracleへのロード. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282
Oracle外部ローダーに関するルールおよびガイドライン. . . . . . . . . . . . 283
Oracleへのマルチバイトデータのロード. . . . . . . . . . . . . . . . . . . . . . 283
Oracle外部ローダーの属性の設定. . . . . . . . . . . . . . . . . . . . . . . . . . 284
Sybase IQへのロード. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285
Sybase IQ外部ローダーに関するルールおよびガイドライン. . . . . . . . . . 285
Sybase IQへのマルチバイトデータのロード. . . . . . . . . . . . . . . . . . . . 285
Sybase IQ外部ローダーの属性の設定. . . . . . . . . . . . . . . . . . . . . . . . 286
Teradataへのロード. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288
Teradata外部ローダーに関するルールおよびガイドライン. . . . . . . . . . 289
制御ファイルのオーバーライド. . . . . . . . . . . . . . . . . . . . . . . . . . . . 289
制御ファイルでのユーザー変数の作成. . . . . . . . . . . . . . . . . . . . . . . 290
Teradata MultiLoad外部ローダーの属性の設定. . . . . . . . . . . . . . . . . 291
Teradata TPump外部ローダーの属性の設定. . . . . . . . . . . . . . . . . . . . 294
Teradata FastLoad外部ローダーの属性の設定. . . . . . . . . . . . . . . . . . 297
セッション内での外部データのロードの設定. . . . . . . . . . . . . . . . . . . . . . 299
ファイルに書き込むようにセッションを設定. . . . . . . . . . . . . . . . . . . 300
ファイルプロパティの設定. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300
外部ローダ接続の選択. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301
外部データのロードのトラブルシューティング. . . . . . . . . . . . . . . . . . . . . 302
第 19 章 : FTP................................... 304
FTPの概要. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304
FTPの使用に関するルールおよびガイドライン. . . . . . . . . . . . . . . . . . 305
Integration Serviceの動作. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305
ソースファイルを対象としたFTPの使用. . . . . . . . . . . . . . . . . . . . . . . 305
ターゲットファイルでのFTPの使用. . . . . . . . . . . . . . . . . . . . . . . . . . 306
セッションのFTPの設定. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307
x
目次
セッションのSFTPの設定. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307
FTP接続の選択. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307
ソースファイルプロパティの設定. . . . . . . . . . . . . . . . . . . . . . . . . .
309
ターゲットファイルプロパティの設定. . . . . . . . . . . . . . . . . . . . . . .
309
第 20 章 : セッションのキャッシュ................ 312
セッションのキャッシュの概要. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312
キャッシュメモリ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
313
キャッシュファイル. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314
キャッシュファイルの命名規則. . . . . . . . . . . . . . . . . . . . . . . . . . . . 315
キャッシュファイルディレクトリ. . . . . . . . . . . . . . . . . . . . . . . . . .
317
キャッシュサイズの設定. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318
キャッシュサイズの計算. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319
自動キャッシュサイズ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319
数値のキャッシュサイズの設定. . . . . . . . . . . . . . . . . . . . . . . . . . . . 320
キャッシュサイズを設定する手順. . . . . . . . . . . . . . . . . . . . . . . . . .
321
キャッシュのパーティション化. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322
キャッシュのパーティション化用のキャッシュサイズの設定. . . . . . . . . 322
アグリゲータキャッシュ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323
差分集計. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323
アグリゲータトランスフォーメーションのキャッシュサイズの設定. . . . . 324
アグリゲータキャッシュのトラブルシューティング. . . . . . . . . . . . . . . 324
ジョイナキャッシュ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325
1:nのパーティション化. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326
n:nのパーティション化. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327
ジョイナトランスフォーメーションのキャッシュサイズの設定. . . . . . .
327
ジョイナキャッシュのトラブルシューティング. . . . . . . . . . . . . . . . . . 328
ルックアップキャッシュ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329
キャッシュの共有. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
330
ルックアップトランスフォーメーションのキャッシュサイズの設定. . . . . 331
ランクキャッシュ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
331
ランクトランスフォーメーションのキャッシュサイズの設定. . . . . . . . . 332
ランクキャッシュのトラブルシューティング. . . . . . . . . . . . . . . . . . . 333
ソータキャッシュ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
333
ソータトランスフォーメーションのキャッシュサイズの設定. . . . . . . . . 334
XMLターゲットキャッシュ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
334
XMLターゲットのキャッシュサイズの設定. . . . . . . . . . . . . . . . . . . . . 334
キャッシュサイズの最適化. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335
目次
xi
第 21 章 : 差分集計.............................. 337
差分集計の概要. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337
差分集計のためのIntegration Serviceの処理. . . . . . . . . . . . . . . . . . . . . 338
集計ファイルの再初期化. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339
集計ファイルの移動と削除. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339
インデックスファイルとデータファイルの検索. . . . . . . . . . . . . . . . . . 340
差分集計を使用したパーティション化のガイドライン. . . . . . . . . . . . . . . . 340
差分集計のための準備. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341
マッピングの設定. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341
セッションの設定. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342
第 22 章 : セッションログインタフェース.......... 343
セッションログインタフェースの概要. . . . . . . . . . . . . . . . . . . . . . . . . . 343
セッションログインタフェースの実装. . . . . . . . . . . . . . . . . . . . . . . . . . 343
Integration Serviceとセッションログインタフェース. . . . . . . . . . . . 344
セッションログインタフェースの実装に関するルールおよびガイドライ
ン. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344
セッションログインタフェースの関数. . . . . . . . . . . . . . . . . . . . . . . . . . 345
INFA_InitSessionLog. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
INFA_OutputSessionLogMsg. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346
INFA_OutputSessionLogFatalMsg. . . . . . . . . . . . . . . . . . . . . . . . . . . 347
INFA_EndSessionLog. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348
INFA_AbnormalSessionTermination. . . . . . . . . . . . . . . . . . . . . . . . . 348
セッションログインタフェースの例. . . . . . . . . . . . . . . . . . . . . . . . . . . . 349
外部セッションログライブラリの構築. . . . . . . . . . . . . . . . . . . . . . . 349
外部セッションログライブラリの使用. . . . . . . . . . . . . . . . . . . . . . . 350
第 23 章 : バッファメモリについて................ 351
バッファメモリの概要について. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351
自動バッファメモリ設定. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352
セッション設定オブジェクトを使用したメモリの設定. . . . . . . . . . . . . 352
バッファメモリの設定. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353
セッションキャッシュメモリの設定. . . . . . . . . . . . . . . . . . . . . . . . . . . . 353
セッションキャッシュの制限. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353
セッションキャッシュの自動メモリ設定. . . . . . . . . . . . . . . . . . . . . . 355
第 24 章 : 高精度データ.......................... 356
高精度データの概要. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356
Bigint. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356
xii
目次
Decimal. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357
索引............................................. 358
目次
xiii
序文
『PowerCenter上級ワークフローガイド 』は、ワークフローとセッションの作成、およびワ
ークフローの実行を担当する開発者と管理者を対象としています。 読者は、オペレーティ
ングシステム、リレーショナルデータベースの概念、および使用する環境内のデータベー
スエンジン、フラットファイル、またはメインフレームシステムについて理解している必
要があります。また、使用するアプリケーションのインタフェース条件についても理解し
ていることを前提としています。
Informaticaのリソース
Informaticaカスタマポータル
Informaticaのユーザーとして、Informaticaカスタマポータルサイト
(http://mysupport.informatica.com)にアクセスできます。このサイトには、製品情
報、ユーザーグループ情報、ニュースレター、Informaticaカスタマサポート事例管理シス
テム(ATLAS)へのアクセス、Informatica How-To Library、Informatica Knowledge
Base、Informatica Product Documentation、Informaticaユーザーグループコミュニティ
へのアクセスが含まれています。
Informaticaのマニュアル
Informaticaのマニュアルチームは、正確で役に立つマニュアルの作成に努めています。こ
のマニュアルに関する質問、コメント、ご意見の電子メールの送付先は、Informaticaマニ
ュアルチーム([email protected])です。 お客様のフィードバック
は、マニュアルの改良に利用させていただきます。コメントに返信をご希望のお客様は、
その旨をお知らせください。
マニュアルチームは、必要に応じてマニュアルを更新します。製品の最新のマニュアルを
入手するには、http://mysupport.informatica.comから製品マニュアルにアクセスしま
す。
InformaticaのWebサイト
Informatica社のWebサイトは、http://www.informatica.comからアクセスできます。この
サイトでは、Informatica社の概要と沿革、今後のイベント、営業拠点などの情報を提供し
xiv
ています。また、製品情報やパートナー情報もあります。サービス関連のページには、テ
クニカルサポート、トレーニングと教育、および実装に関するサービスの重要な情報を掲
載しています。
Informatica How-To Library
Informaticaのユーザーとして、Informatica How-To Library
(http://mysupport.informatica.com)にアクセスできます。How-To Libraryは、
Informaticaの製品および機能についての詳細を確認できるリソースのコレクションです。
一般的な問題に対するソリューションを提供したり、機能や動作を比較したり、特定の実
際のタスクを実行するための方法を示したりする記事やインタラクティブなデモンストレ
ーションが含まれています。
Informatica Knowledge Base
Informaticaのユーザーとして、Informatica Knowledge Base
(http://mysupport.informatica.com)にアクセスできます。このKnowledge Baseを利用
して、Informatica製品に関する既知の技術的問題の解決策を検索することができます。ま
た、FAQ(よくある質問)の答え、技術的ホワイトペーパー、技術的なヒントも得られま
す。Knowledge Baseに関する質問、コメント、ご意見の電子メールの送付先は、
Informatica Knowledge Baseチーム([email protected])です。
Informatica Multimedia Knowledge Base
Informaticaのユーザとして、Informatica Multimedia Knowledge Base
(http://mysupport.informatica.com)にアクセスできます。Multimedia Knowledge
Baseは、一般的な概念の理解を助け、具体的な各タスクの実行をガイドする教育用のマル
チメディアファイルの集まりです。 Multimedia Knowledge Baseに関する質問、コメン
ト、ご意見の電子メールの送付先は、Informatica Knowledge Baseチーム
([email protected])です。
Informaticaグローバルカスタマサポート
電話、またはオンラインサポートからカスタマサポートセンターに連絡できます。 オンラ
インサポートのご利用には、ユーザ名とパスワードが必要です。
http://mysupport.informatica.comから、ユーザー名とパスワードが入手できます。
電話によるInformaticaグローバルカスタマサポートへの問い合わせ先は次のとおりです。
北米/南米
ヨーロッパ/中東/アフ
リカ
アジア/オーストラ
リア
フリーダイヤル
フリーダイヤル
フリーダイヤル
ブラジル: 0800 891
0202
フランス: 0805 804632
オーストラリア: 1
800 151 830
メキシコ: 001 888 209
8853
イタリア: 800 915 985
北米: +1 877 463 2435
ドイツ: 0800 5891281
オランダ: 0800 2300001
ニュージーランド:
09 9 128 901
ポルトガル: 800 208 360
まえがき
xv
北米/南米
ヨーロッパ/中東/アフ
リカ
アジア/オーストラ
リア
スペイン: 900 813 166
有料(標準料金)
スイス: 0800 463 200
インド:+91 80 4112
5738
英国: 0800 023 4632
有料(標準料金)
ベルギー: +31 30 6022
797
フランス: +33 1 4138
9226
ドイツ:+49 1805 702 702
オランダ:+31 306 022
797
英国: +44 1628 511445
xvi
序文
第 1 章
パイプラインのパーティショ
ン化について
この章では、以下の項目について説明します。
¨ パイプラインのパーティション化の概要について, 1 ページ
¨ パーティション化属性, 2 ページ
¨ 動的パーティション, 5 ページ
¨ キャッシュのパーティション化, 8 ページ
¨ パーティション化したパイプラインにおけるマッピング変数, 9 ページ
¨ パーティション化のルール, 10 ページ
¨ パーティション化の設定, 11 ページ
パイプラインのパーティション化の概要につ
いて
Integration Serviceで実行するセッションをマッピングごとに作成します。 各マッピン
グには、1つ以上のパイプラインが含まれています。パイプラインは、ソース修飾子と、そ
のソース修飾子からデータを受け取るすべてのトランスフォーメーションおよびターゲッ
トから構成されます。Integration Serviceはセッションを実行すると、パイプラインをパ
ーティション化してそれぞれのパーティションデータに対して、抽出、トランスフォーメ
ーション、ロードを並列に実行することで、より高いパフォーマンスを実現することがで
きます。
パーティションとは、1つのreaderスレッド、トランスフォーメーションスレッド、または
writerスレッドで実行されるパイプラインステージを指します。任意のパイプラインステ
ージにおけるパーティションの数は、そのステージにおけるスレッドの数と一致します。
デフォルトでは、Integration Serviceはすべてのパイプラインステージにパーティション
を1つ作成します。
パーティション化オプションを使用すると、1つのパイプラインステージに対して複数のパ
ーティションを設定することができます。パイプラインに対してマスタースレッドが作成
する、readerスレッド、トランスフォーメーションスレッド、およびwriterスレッドの数
1
を制御するパーティション化情報を設定できます。Integration Serviceがソースからデー
タを読み込む方法、各トランスフォーメーションにデータ行を分散させる方法、およびタ
ーゲットにデータを書き込む方法を設定できます。 使用するソース接続およびターゲット
接続の数を設定できます。
セッションに対してパーティションを設定するには、次の作業を実行します。
¨ パーティションポイント、パーティション数、パーティションタイプなど、パーティシ
ョン属性を設定します。
¨ Integration Serviceによりランタイム時にパーティション化を設定できます。動的パ
ーティションを有効にする際、Integration Serviceにより、ソースデータベースパー
ティションやグリッド内のノード数などの要素に基づいて、セッションパーティション
の数が計算されます。
¨ パーティション化のためにセッションを設定した後、メモリ要件とキャッシュディレク
トリをトランスフォーメーションごとに設定できます。
¨ Integration Serviceにより、ターゲットロード順グループ内のパーティションごとに
マッピング変数が評価されます。マッピングで変数関数を使用して、変数値を設定でき
ます。
¨ パイプラインに複数のパーティションを作成した場合、Workflow Managerにより、
Integration Serviceがパーティションを使用してセッションでデータの一貫性を保持
できることが確認されます。セッションでオブジェクトプロパティを編集した場合、パ
ーティション化に影響を与え、セッションが失敗することがあります。
¨ セッションプロパティでパーティションポイントを追加または編集します。パーティシ
ョンポイントを変更する場合は、パーティションタイプを定義し、パーティションを追
加または削除することができます。
パーティション化属性
以下の属性を設定して、パイプラインをパーティション化できます。
¨ パーティションポイント。パーティションポイントによりスレッド境界がマークされ、
パイプラインがステージに分割されます。 Integration Serviceによりパーティション
ポイントでデータ行が再分散されます。
¨ パーティションの数。パーティションは、単一のスレッドで実行されるパイプラインス
テージです。 Partitioningを別途購入した場合には、任意のパーティションポイント
でパーティションの数を設定できます。パーティションを追加すると、処理スレッドの
数が増え、セッションのパフォーマンスを向上できます。
¨ パーティションタイプ。Integration Serviceでは、各パーティションポイントでデフ
ォルトのパーティションタイプが作成されます。 パーティション化オプションを使用
すると、パーティションタイプを変更できます。パーティションタイプによって、パー
ティションポイントでパーティションにデータを配分する方法を制御します。
パーティションポイント
デフォルトでは、パーティションポイントはIntegration Serviceによってパイプライン上
のさまざまなトランスフォーメーションに設定されます。 パーティションポイントはスレ
2
章 1: パイプラインのパーティション化について
ッド境界を示し、パイプラインをステージに分割します。ステージとは、2つのパーティシ
ョンポイントに挟まれたパイプライン上の区間です。トランスフォーメーションにパーテ
ィションポイントを設定すると、そのトランスフォーメーションは新規のパイプラインス
テージに含まれます。
以下の図に、1つのパイプラインを持つマッピングに関する、デフォルトのパーティション
ポイントとパイプラインステージを示します。
パーティションポイントを1つ追加すると、パイプラインステージの数が1つ増加します。
同様に、パーティションポイントを1つ削除すると、パイプラインステージの数が1つ減少
します。パーティションポイントにより、Integration Serviceがパーティション全体でデ
ータを再分散できるパイプライン上の点がマークされます。
例えば、パーティションポイントをフィルタトランスフォーメーションに配置して、複数の
パーティションを定義する場合、フィルタトランスフォーメーションがデータを処理する前
に、Integration Serviceによりデータ行がパーティション間で再分散されます。 パーテ
ィションポイントで設定するパーティションタイプによって、Integration Serviceで各パ
ーティションにデータ行を渡す方法が制御できます。
パーティションの数
各パイプラインステージで処理するスレッドの数は、パーティションの数に依存します。
パーティションとは、1つのreaderスレッド、トランスフォーメーションスレッド、または
writerスレッドで実行されるパイプラインステージを指します。任意のパイプラインステ
ージにおけるパーティションの数は、当該ステージにおけるスレッドの数と一致します。
パイプライン上のパーティションポイントには最大64のパーティションを定義できます。
任意のパーティションポイントでパーティションの数を増減すると、Workflow Managerは
パイプライン上のすべてのパーティションポイントでパーティションの数を増減します。
パーティションの数は、パイプライン全体を通して一定です。任意のパーティションポイ
ントで3つのパーティションを定義すると、パイプライン上にある他のすべてのパーティシ
ョンポイントで3つのパーティションが作成されます。特定の状況では、パイプラインのパ
ーティションの数を1つに設定する必要があります。
パーティションまたはパーティションポイントの数が増えることで、スレッドの数が増え
ます。したがって、パーティションまたはパーティションポイントの数を増やすと、ノー
ドの負荷も大きくなります。ノードに十分なCPUバンド幅がある場合は、セッションで並列
にデータ行を処理することで、セッションのパフォーマンスを向上させることができま
す。ただし、大量のデータを処理するセッションでたくさんのパーティションまたはパー
ティションポイントを作成すると、システムの負荷が大きくなりすぎる場合もあります。
パーティション化属性
3
作成するパーティションの数は、ソースまたはターゲットへの接続の数と等しくなりま
す。パイプラインにリレーショナルソースまたはリレーショナルターゲットが含まれる場
合には、ソース修飾子またはターゲットインスタンスのパーティションの数はデータベー
スへの接続の数と等しくなります。パイプラインにファイルソースが含まれる場合は、1つ
または複数のスレッドでソースを読み込むようにセッションを設定できます。
例えば、マッピングで3つのパーティションを定義する場合、マスタスレッドによりパイプ
ラインステージごとに3つのスレッドが作成され、合計で12のスレッドが作成されます。
Integration Serviceにより、パーティションスレッドが同時に実行されます。 複数のパ
ーティションを持つセッションを実行した場合、スレッドは次のように実行されます。
1.
readerスレッドが並列に実行されてソースからデータを抽出します。
2.
トランスフォーメーションスレッドがそれぞれのトランスフォーメーションステージ
で並列に実行されてデータを処理します。Integration Serviceにより、各パーティ
ションポイントにおいてパーティションの間でデータが再配分されます。
3.
writerスレッドが同時に実行され、データがターゲットに書き込まれます。
複数の入力グループトランスフォーメーションのパーティショ
ン化
マスタースレッドにより、ターゲットロード順グループの各パイプラインに対してreader
スレッドおよびトランスフォーメーションスレッドが作成されます。 ターゲットロード順
グループに、複数の入力グループを持つトランスフォーメーションが含まれている場合、
そのターゲットロード順グループには複数のパイプラインがあります。
複数のパイプラインを複数の入力グループトランスフォーメーションに接続した場合、
Integration Serviceにより、複数の入力グループトランスフォーメーションがパーティシ
ョンポイントであるかどうかに応じて、トランスフォーメーションスレッドが保持される
か、または新しいトランスフォーメーションスレッドが作成されます。
¨ パーティションポイントは、複数の入力グループトランスフォーメーションには存在し
ません。パーティションポイントが複数の入力グループトランスフォーメーションに存
在しない場合、Integration Serviceにより、複数の入力グループトランスフォーメー
ションとステージ内のすべてのダウンストリームトランスフォーメーションについて一
度に1つのスレッドが処理されます。
¨ パーティションポイントは、複数の入力グループトランスフォーメーションに存在しま
す。パーティションポイントが複数の入力グループトランスフォーメーションに存在す
る場合、Integration Serviceにより、新しいパイプラインステージが作成され、その
ステージが各パーティションにつき1つのスレッドで処理されます。 Integration
Serviceにより、トランスフォーメーションに含まれる出力グループの数に関係なく、
パーティションごとに1つのトランスフォーメーションスレッドが作成されます。
パーティションタイプ
パイプラインにパーティション化情報を設定する場合、パイプライン上の各パーティショ
ンポイントにパーティションタイプを定義する必要があります。パーティションタイプに
より、PowerCenter Integration Serviceがパーティションポイント間にデータを再配分
する方法が決定します。
4
章 1: パイプラインのパーティション化について
PowerCenter Integration Serviceでは、各パーティションポイントでデフォルトのパー
ティションタイプが作成されます。パーティション化オプションを使用すると、パーティ
ションタイプを変更できます。パーティションタイプは、パーティションポイントでパー
ティションにデータを配分する方法を制御します。パイプライン上の様々なポイントに、
様々なパーティションタイプを作成できます。
Workflow Managerでは、以下のパーティションタイプを定義できます。
¨ データベースパーティション化。IBM DB2またはOracleデータベースシステムに対して
クエリが実行され、テーブルのパーティション情報が取得されます。データベースの対
応するノードからパーティション化データが読み込まれます。複数ノードのテーブル領
域上のOracleまたはIBM DB2ソースインスタンスでは、データベースパーティション化
を使用できます。DB2ターゲットでは、データベースパーティション化を使用できま
す。
¨ ハッシュ自動キー。ハッシュ関数が使用され、データ行がパーティション間でグループ
化されます。データはパーティションキーに基づいてグループ化されます。グループ化
されたポートまたはソート済みのポートがすべて複合パーティションキーとして使用さ
れます。ランクトランスフォーメーション、ソータトランスフォーメーション、未ソー
トのアグリゲータトランスフォーメーションで、ハッシュ自動キーパーティション化を
使用する必要がある場合があります。
¨ ハッシュユーザーキー。PowerCenter Integration Serviceによりハッシュ関数が使用
され、データ行がパーティション間でグループ化されます。パーティションキーを生成
するポート数を定義します。
¨ キー範囲。キー範囲パーティション化を使用した場合、パーティションキーとして定義
したポートまたはポートのセットに基づいて、データ行が配分されます。各ポートにつ
いて、値の範囲を定義します。PowerCenter Integration Serviceは、キーと範囲を使
用して適切なパーティションに行を送ります。パイプライン上のソースまたはターゲッ
トがキー範囲によってパーティション化される場合に、キー範囲パーティション化を使
用します。
¨ パススルー。パススルーパーティション化では、データはパーティション間で再配分さ
れることなく処理されます。ある1つのパーティションに置かれた行はすべて、パスス
ルーパーティションポイントを通過した後も同じパーティションにとどまります。パフ
ォーマンスを向上させるために新たなパイプラインステージを作成したいが、パーティ
ション間のデータの配分を変更したくない場合に、パススルーパーティション化を選択
します。
¨ ラウンドロビン。1つ以上のパーティションにデータのブロックが配分されます。ラウ
ンドロビンパーティション化は、各パーティションでブロックの数やサイズに基づいて
行を処理する場合に使用します。
動的パーティション
データ量が増加した場合やCPUを追加した場合は、セッションの実行時間が増加しないよう
にパーティション化の調整が必要な場合があります。動的パーティションを使用した場
合、Integration Serviceによりランタイム時に作成するパーティション数が決定されるよ
うにパーティション情報を設定できます。
動的パーティション
5
Integration Serviceは、ソースデータベースパーティションやグリッド内のノード数など
を考慮して、実行時にセッションパーティションの数を計算します。
ステージ内の任意のトランスフォーメーションがパーティション化をサポートしていない
場合や、パーティション設定が動的パーティション化をサポートしていない場合、
Integration Serviceはパイプライン内のパーティションを計算しません。データは1つの
パーティションを通過します。
動的パーティション化を使用してセッションパーティションを計算するには、次の作業を
実行します。
¨ パーティション化の設定。 Integration Serviceにより、選択したパーティション化の
方法に基づいて、パーティションの数が増加します。
¨ 動的パーティションのセッション属性の設定。 ソースおよびターゲットのファイル名
とディレクトリを特定するセッション属性を設定できます。セッションでは、セッショ
ン属性が使用され、ランタイム時に作成するパーティションごとにパーティションレベ
ルの属性が作成されます。
¨ パーティションタイプの設定。 セッションプロパティの[マッピング]タブのパーテ
ィションビューを使用して、パーティションポイントとパーティションタイプを編集で
きます。
注: 手動パーティションを含むセッションに対して動的パーティション化を設定しないで
ください。動的パーティション化を[無効]以外の値に設定し、セッションを手動でパー
ティション化すると、セッションは無効になります。
動的パーティションの設定
セッションプロパティの[設定オブジェクト]タブで動的パーティション化を設定しま
す。次のいずれかの方法で、動的パーティション化を設定します。
¨ 無効化。動的パーティションを使用しません。 [マッピング]タブでパーティション
数を定義します。
¨ パーティションの数を基準。パーティションの数属性で定義した数にパーティションを
設定します。 $DynamicPartitionCountセッションパラメータを使用するか、1より大き
い数を入力します。
¨ グリッドのノード数を基準。セッションを実行しているグリッドのノード数にパーティ
ションを設定します。 グリッド上で実行していないセッションにこのオプションを設
定する場合、セッションは1つのパーティションで実行され、そのセッションログにメ
ッセージが記録されます。
¨ ソースパーティション化を基準。データベースパーティション情報を使用してパーティ
ション数を決定します。 パーティション数は、ソースのパーティションの最大数で
す。複合パーティションを使用するOracleの場合、パーティション数はソースのサブパ
ーティションの最大数です。
¨ CPUの数を基準。パーティション数を、セッションを準備するノード上のCPUの数と同じ
になるように設定します。 セッションがグリッド上で実行されるように設定されてい
る場合、パーティションの数は、動的パーティションによって、グリッド内のノードの
数を乗算した、セッションを準備するノード上のCPUの数と同じになるように設定され
ます。
6
章 1: パイプラインのパーティション化について
関連項目:
¨ 「データベースパーティション化のパーティションタイプ」
(51ページの)
動的パーティションに関するルールおよびガイドライ
ン
動的パーティション化を使用する場合は、次のルールおよびガイドラインに従ってくださ
い。
¨ 動的パーティション化は各パーティションに同じ接続を使用します。
¨ XMLソースおよびターゲットで動的パーティション化を使用することはできません。
¨ デバッガで動的パーティション化を使用することはできません。
¨ 動的パーティション化を有効にすると、SFTPを使用するセッションは失敗します。
¨ 動的パーティション化を[無効]以外の値に設定し、[マッピング]タブでセッション
を手動でパーティション化すると、セッションは無効になります。
¨ $DynamicPartitionCount以外のパラメータを使用してパーティションの数を設定した場
合、セッションは失敗します。
¨ 次の動的パーティション化設定を使用すると、1つのパーティションでセッションが実
行されます。
- アグリゲータ、ジョイナ、ルックアップ、またはランクトランスフォーメーションの
デフォルトのキャッシュディレクトリを上書きします。デフォルトが$PMCacheDirで
ある場合に、Integration Serviceはトランスフォーメーションキャッシュディレク
トリをパーティション化します。
- ソータトランスフォーメーションのデフォルトのワークディレクトリを上書きしま
す。デフォルトが$PMTempDirの場合は、Integration Serviceによってソータトラン
スフォーメーションのワークディレクトリがパーティション化されます。
- キー範囲パーティションタイプで無制限の数値または日付キーの範囲を使用する。
- キー範囲パーティション化のキーとして数値または日付以外のデータ型を使用する。
- キー範囲リレーショナルターゲットパーティション化を使用する。
- ユーザー定義SQL文またはユーザー定義ソースフィルタを作成する。
- 動的パーティション化をグリッド内のノードの数に設定するが、セッションがグリッ
ド上で実行されない。
- パススルーリレーショナルソースパーティション化を使用する。
- アプリケーションソース修飾子で動的パーティション化を使用する。
- 動的パーティション化でSDKまたはPowerConnectのソースおよびターゲットを使用す
る。
動的パーティション
7
パーティションタイプでの動的パーティションの使用
異なるパーティションタイプで動的パーティションを使用するには、以下のルールおよび
ガイドラインが適用されます。
¨ パススルーパーティション化。パーティションポイントでパーティション数を変更した
場合、各パイプラインステージ内のパーティション数が変更されます。 リレーショナ
ルソースでパススルーパーティション化を使用する場合、セッションはステージ内の1
つのパーティションで実行されます。
¨ キー範囲パーティション化。動的パーティションを使用するには、制限された数値また
は日付キーの範囲を定義する必要があります。 キーは、数値データタイプまたは日付
データタイプである必要があります。動的パーティション化は、リレーショナルターゲ
ット上でキー範囲パーティション化を使用する場合、パーティションを計算しません。
¨ データベースパーティション化。データベースパーティション化を使用する場合、
Integration Serviceによりソースデータベースパーティションに基づいてセッション
パーティションが作成されます。 OracleおよびIBM DB2ソースでは、データベースパー
ティション化を使用します。
¨ ハッシュ自動キー、ハッシュユーザーキー、ラウンドロビン。 動的パーティション化
で行を振り分けるには、ユーザー定義ハッシュキー、自動ハッシュキー、およびラウン
ドロビンパーティションタイプを使用します。行をグループごとにパーティションに振
り分ける場合に、ユーザー定義ハッシュキーおよび自動ハッシュキーパーティション化
を使用します。1つ以上のパーティションにデータのブロックを振り分ける場合は、ラ
ウンドロビンパーティション化を使用します。
パーティションレベルの属性の設定
動的パーティションを使用する場合、Integration Serviceによりランタイム時に作成する
パーティションごとにパーティションレベルの属性が定義されます。 セッションプロパテ
ィで定義したセッションレベル属性名に基づいてファイル属性およびディレクトリ属性に
名前を付けられます。
たとえば、セッション拒否ファイル名をaccting_detail.badとして定義したとします。
Integration Serviceは、実行時にパーティションを作成すると、パーティションごとに、
accting_detail1.bad、accting_detail2.bad、accting_detail3.badなどの拒否ファイル
を作成します。
キャッシュのパーティション化
複数のパーティションを持つセッションを作成した場合、Integration Serviceではアグリ
ゲータ、ジョイナ、ルックアップ、ランク、ソータの各トランスフォーメーションについ
て、キャッシュのパーティション化が使用される場合があります。 キャッシュをパーティ
ション化する場合、Integration Serviceではパーティションごとに個別のキャッシュが作
成され、各パーティションに設定済みのキャッシュサイズが割り当てられます。
Integration Serviceでは各キャッシュに異なるデータが格納されます。この場合、各キャ
ッシュには、そのパーティションが必要とする行のみが格納されます。したがって、
Integration Serviceには各パーティションのキャッシュメモリ全体の一部が必要です。
8
章 1: パイプラインのパーティション化について
パーティション化を使用するようにセッションを設定した後、セッションプロパティの
[マッピング]タブから[トランスフォーメーション]ビューを表示して、メモリ要件と
キャッシュディレクトリをトランスフォーメーション別に設定できます。各メモリ要件を
設定するには、トランスフォーメーションに必要な合計サイズを計算し、それをパーティ
ション数で割ります。パーティションごとに別々のディレクトリを設定することによっ
て、パフォーマンスを向上させることができます。
以下の表に、適用可能なそれぞれのトランスフォーメーションに対してIntegration
Serviceが使用するキャッシュのパーティション化を示します。
トランスフォーメ
ーション
説明
Aggregatorトラン
スフォーメーショ
ン
Aggregatorトランスフォーメーションを含むセッション
に複数のパーティションを作成します。Aggregatorトラ
ンスフォーメーションにパーティションポイントを設定す
る必要はありません。
Joinerトランスフ
ォーメーション
Joinerトランスフォーメーションにパーティションポイ
ントを作成します。
Lookupトランスフ
ォーメーション
Lookupトランスフォーメーションに自動ハッシュキーパ
ーティションポイントを作成します。
Rankトランスフォ
ーメーション
Rankトランスフォーメーションを含むセッションに複数の
パーティションを作成できます。Rankトランスフォーメー
ションにパーティションポイントを設定する必要はありま
せん。
Sorterトランスフ
ォーメーション
Sorterトランスフォーメーションを含むセッションに複
数のパーティションを作成できます。Sorterトランスフ
ォーメーションにパーティションポイントを設定する必要
はありません。
パーティション化したパイプラインにおける
マッピング変数
マッピング変数を使用するターゲットロード順グループで複数のパーティションを指定す
る場合、Integration Serviceにより各パーティションのマッピング変数の値が別々に評価
されます。 Integration Serviceでは、以下のプロセスが使用され、変数値が評価されま
す。
1.
Integration Serviceにより、マッピングで使用される変数関数に応じて、各パーテ
ィションの変数のカレント値が別々に更新されます。
2.
ターゲットロード順グループのターゲットをすべてロードした後で、Integration
Serviceにより、変数の集計タイプに基づいて各パーティションのカレント値が単一の
最終値に組み合わせられます。
パーティション化したパイプラインにおけるマッピング変数
9
3.
セッションに複数のターゲットロード順グループがある場合は、1つのターゲットロー
ド順グループのマッピング変数の最終カレント値が、次のターゲットロード順グルー
プのカレント値になります。
4.
Integration Serviceが最後のターゲットロード順グループのロードを終了した場
合、変数の最終カレント値がリポジトリに保存されます。
マッピングで以下の変数関数の1つを使用して、変数値を設定します。
¨ SetCountVariable
¨ SetMaxVariable
¨ SetMinVariable
以下の表に、Integration Serviceがパーティション全体の変数値を計算する方法を示しま
す。
変数関数
パーティション全体での変数値の計算
SetCountVari
able
Integration Serviceでは、すべてのパーティションから最終
カレント値が計算されます。
SetMaxVariab
le
Integration Serviceでは、各パーティションの最終変数値が
比較され、最も大きい値が保存されます。
SetMinVariab
le
Integration Serviceでは、各パーティションの最終変数値が
比較され、最も小さい値が保存されます。
注: パイプラインの各マッピング変数に対して1回のみ変数関数を使用します。
Integration Serviceでは、マッピングで変数関数が検出された場合、その変数関数が処理
されます。Integration Serviceがマッピングで変数関数が検出される順序は、セッション
を実行するたびに異なります。これにより、マッピングで同じ変数関数を複数回使用した
場合、結果が矛盾することがあります。
パーティション化のルール
Integration Serviceにより、パーティション化されたデータが処理される際に、データの
一貫性が保持される場合、パイプラインに複数のパーティションを作成することができま
す。 セッションを作成した場合、Workflow Managerにより各パイプラインがパーティショ
ン化について検証されます。
オブジェクトを編集する場合のパーティションの制限
オブジェクトプロパティを編集した場合、セッションでの複数パーティションの作成や、
複数のパーティションを持つ既存のセッションの実行のための機能に影響を与える場合が
あります。
10
章 1: パイプラインのパーティション化について
セッションを作成する前に
セッションを作成すると、Workflow Managerはマッピングプロパティをチェックします。
マッピングは動的にショートカットへの変更を取得しますが、再利用可能なトランスフォ
ーメーションやマプレットなどの再利用可能なオブジェクトに対してはそれを行いませ
ん。したがって、マッピングを保存した後でセッションを作成する前に再利用可能なオブ
ジェクトをDesignerで編集した場合には、マッピングを開いて保存し直すことによって、
オブジェクトへの変更をWorkflow Managerが認識できるようにする必要があります。
複数のパーティションを持つセッションを作成した後に
複数のパーティションを持つセッションを作成した 後にマッピングを編集した場合、パー
ティション化のルールに違反する変更が行われた場合でも、Workflow Managerではセッシ
ョンは無効になりません。パーティション化のルールに違反しないようにセッションを編
集しない場合、次回セッションを実行したときにIntegration Serviceはセッションに失敗
します。
マッピングに次の変更を加えると、セッションの失敗を招く場合があります。
¨ パーティションポイントに当たるトランスフォーメーションを削除する。
¨ デフォルトのパーティションポイントに当たるトランスフォーメーションを追加する。
¨ パーティションポイントに当たるトランスフォーメーションを別のパイプラインに移動
する。
¨ パーティションポイントに当たるトランスフォーメーションを変更し、次のいずれかの
状態にする。
- 既存のパーティションタイプが無効。
- トランスフォーメーションが複数のパーティションをサポートできない。
- トランスフォーメーションが有効なパーティションポイントではない。
¨ 複数のパーティションを持つパイプラインを作成した後に、パーティション化を無効に
するか、トランスフォーメーションで単一ノードとグリッド間のパーティション化を変
更する。
¨ 複数のパーティションを持つパイプラインを作成した後で、ジョイナトランスフォーメ
ーションのマスターおよび明細ソースを切り替える。
PowerExchangeに対するパーティション化の制限
PowerExchangeおよびPowerExchange Client for PowerCenterに対しては、複数のパーテ
ィションを指定することができます。 ただし、これには制約が伴います。これらの製品の
詳細については、各製品のマニュアルを参照してください。
パーティション化の設定
セッションを作成または編集する際に、マッピング中の各パイプラインのパーティション
化を変更できます。マッピングに複数のパイプラインが含まれる場合には、あるパイプラ
インには複数のパーティションを指定し、別のパイプラインには1つのパーティションを指
パーティション化の設定
11
定することもできます。セッションプロパティの[マッピング]タブからパーティション
ビューを使用して、パーティション化情報を更新できます。パーティションは、再利用不
可能なセッションの場合にはWorkflow Designerで、再利用可能なセッションの場合には
Task Developerで設定できます。
セッションプロパティの[パーティション]ビューでパーティションポイントを追加、削
除、または編集します。キー範囲パーティションポイントを追加した場合は、各範囲のキ
ーを定義できます。
以下の表に、[マッピング]タブのパーティションビューの設定オプションを一覧表示し
ます。
パーティションビ
ューのオプション
説明
パーティションポ
イントの追加
新しいパーティションポイントを追加するときにクリック
します。パーティションポイントを追加するとき、該当す
るトランスフォーメーション名が[パーティションポイン
ト]ノードに表示されます。
パーティションポ
イントの削除
選択したパーティションポイントを削除するときにクリッ
クします。
削除できないパーティションポイントもあります。
パーティションポ
イントの編集
選択したパーティションを編集するときにクリックしま
す。これにより[パーティションポイントの編集]ダイア
ログボックスが開きます。
キー範囲
パーティションタイプに応じて、パーティションポイント
のキーとキー範囲を表示します。
キー範囲パーティション化の場合には、キー範囲を指定し
ます。
ユーザー定義ハッシュキーパーティション化の場合、この
フィールドにはパーティションキーが表示されます。
他のパーティションタイプでは、この領域は表示されませ
ん。
キーの編集
キー範囲パーティション化またはユーザー定義ハッシュキ
ーパーティション化に用いるパーティションキーを追加ま
たは削除するときにクリックします。自動ハッシュキーパ
ーティション化、ラウンドロビンパーティション化、パス
スルーパーティション化の場合は、パーティションキーは
作成できません。
パイプラインへのパーティションポイントの追加
セッションプロパティの[マッピング]タブからパーティションポイントを追加します。
12
章 1: パイプラインのパーティション化について
パーティションポイントを追加するには:
1.
[マッピング]タブの[パーティション]ビューで、まだパーティションポイントに
なっていないトランスフォーメーションを選択し、パーティションポイントの [追
加]をクリックします。
ヒント: トランスフォーメーションは[パーティションポイント以外]ノードから選
択できます。
2.
パーティションポイントのパーティションタイプを選択するか、デフォルトの値を適
用します。
3.
[OK]をクリックします。
セッションプロパティの[マッピング]タブから[パーティション]ビューを開く
と、このトランスフォーメーションが[パーティションポイント]ノードに表示され
ています。
パーティションポイントの設定
パーティションポイントの編集または追加時に、以下のタスクを実行できます。
¨ パーティションポイントにおけるパーティションタイプの指定
¨ パーティションの追加と削除
¨ 各パーティションの説明の入力
以下の表に、パーティションポイントの設定オプションを示します。
パーティションオ
プション
説明
パーティションタ
イプの編集
パーティションタイプを変更します。
パーティション名
編集するパーティションを選択します。
パーティションの
追加
パーティションを追加します。任意のパーティションポイ
ントに、最大64のパーティションを追加できます。パーテ
ィションの数はパイプラインを通じて同数である必要があ
ります。このため、例えば、1つのパーティションポイン
トで3つのパーティションを定義すると、パイプライン上
の全パーティションポイントで3つのパーティションが定
義されます。
パーティションの
削除
選択したパーティションを削除します。それぞれのパーテ
ィションポイントには、最低1つのパーティションが必要
です。
説明
現在のパーティションの説明をオプションで入力します。
作成する各パーティションに、説明を入力できます。説明を入力するには、[パーティシ
ョンポイントの編集]ダイアログボックスでパーティションを選択した後、[説明]フィ
ールドに説明を入力します。
パーティション化の設定
13
[パーティションポイント]ノード
[パーティションポイント]ノードでは、マッピングがトランスフォーメーションのアイ
コンで表示されます。パーティションポイントは、ツリー形式で表示されます。属性を設
定するパーティションポイントを選択してください。
[パーティションポイント]ノードでは、マッピング内の各パイプラインに対して以下の
オプションを設定できます。
¨ パーティションポイントの追加と削除
¨ 各パーティションポイントのパーティションタイプの指定
¨ パーティションの追加と削除
¨ 各パーティションの説明の入力
¨ 特定のパーティションタイプへのキーとキー範囲の追加
以下の表に、[パーティションポイント]ノードを示します。
[パーティシ
ョンポイン
ト]ノード
説明
パーティショ
ンポイントの
追加
[トランスフォーメーション]リストに新しいパーティション
ポイントを追加するときにクリックします。
パーティショ
ンポイントの
削除
現在のパーティションポイントを削除するときにクリックしま
す。削除できないパーティションポイントもあります。
パーティショ
ンポイントの
編集
現在のパーティションポイントを編集するときにクリックしま
す。
キーの編集
キー範囲パーティション化またはユーザー定義ハッシュキーパ
ーティション化に用いるキーを追加、削除、編集するときにク
リックします。このボタンは、自動ハッシュキーパーティショ
ン化、ラウンドロビンパーティション化、パススルーパーティ
ション化の場合には使用できません。
パーティションポイントの編集
[パーティションポイントの編集]ダイアログボックスでは、パーティションの追加と削
除のほか、パーティションタイプを選択することもできます。
14
章 1: パイプラインのパーティション化について
以下の表に、[パーティションポイントの編集]ダイアログボックスのオプションを示し
ます。
[パーティションポイント
の編集]のオプション
説明
[追加]ボタン
パーティションを追加するときにクリックしま
す。最大で64のパーティションを追加できます。
[削除]ボタン
選択したパーティションを削除するときにクリッ
クします。
名前
パーティション番号です。
説明
カレントパーティションの説明を入力します。
パーティションタイプの編
集
リストからパーティションタイプを選択します。
パーティションキーの編集
パーティションポイントでキー範囲パーティション化またはユーザー定義ハッシュキーパ
ーティション化を指定した場合には、1つまたは複数のポートをパーティションキーとして
指定する必要があります。[キーの編集]をクリックすると、[パーティションキーの編
集]ダイアログボックスが表示されます。
パーティションキーとしてポートを1つまたは複数指定できます。キーを構成するポートの
順序を変更するには、[選択されたポート]リストでポートを選択して上下の矢印ボタン
をクリックします。
[パーティションポイント以外]ノード
[パーティションポイント以外]ノードには、マッピングの各オブジェクトがアイコン表
示されます。非パーティションポイントが、ツリー形式で表示されます。非パーティショ
ンポイントを選択し、必要に応じてパーティションを追加できます。
パーティション化の設定
15
第 2 章
パーティションポイント
この章では、以下の項目について説明します。
¨ パーティションポイントの概要, 16 ページ
¨ パーティションポイントの追加および削除, 17 ページ
¨ リレーショナルソースのパーティション化, 20 ページ
¨ ファイルソースのパーティション化, 22 ページ
¨ リレーショナルターゲットのパーティション化, 28 ページ
¨ ファイルターゲットのパーティション化, 29 ページ
¨ カスタムトランスフォーメーションのパーティション化, 33 ページ
¨ ジョイナトランスフォーメーションのパーティション化, 36 ページ
¨ ルックアップトランスフォーメーションのパーティション化, 41 ページ
¨ シーケンスジェネレータトランスフォーメーションのパーティション化, 43 ページ
¨ ソータトランスフォーメーションのパーティション化, 43 ページ
¨ XMLジェネレータトランスフォーメーションのパーティション化, 44 ページ
¨ トランスフォーメーションに関する制限, 45 ページ
パーティションポイントの概要
パーティションポイントは、パイプライン内のスレッド間の境界を表す印となります。
Integration Serviceによりパーティションポイントでデータ行が再分散されます。パーテ
ィションポイントを追加して、トランスフォーメーションスレッドの数を増やし、セッシ
ョンのパフォーマンスを向上させることができます。
ソースデータベースを読み込むようにセッションを設定した場合、Integration Serviceに
よってパーティションごとにそのソースデータベースへの別々の接続とSQLクエリが作成さ
れます。 SQLクエリをカスタマイズまたはオーバーライドすることができます。
リレーショナルターゲットにデータをロードするようにセッションを設定した場合、
Integration Serviceによってターゲットインスタンスの各パーティションについてターゲ
ットデータベースへ別々の接続が作成されます。 ターゲットの拒否ファイル名とディレク
トリを設定します。Integration Serviceによって、ターゲットパーティションごとに拒否
ファイルが1つ作成されます。
16
1つまたは複数のスレッドでソースファイルを読み込むようにセッションを設定できます。
ファイルを読み込むすべてのパーティションに対して同じ接続タイプを選択する必要があ
ります。
セッションにファイルターゲットへの書き込みを設定した場合、各パーティションの別々
のファイルまたはすべてのパーティションのターゲット出力を含む統合ファイルにターゲ
ット出力を書き込むことができます。それぞれのターゲットパーティションに、接続設定
およびファイルプロパティを設定できます。
トランスフォーメーションにパーティションポイントを作成すると、Workflow Managerに
より、デフォルトのパーティションタイプが設定されます。トランスフォーメーションタ
イプに応じて、パーティションタイプを変更できます。
パーティションポイントの追加および削除
パーティションポイントがパイプラインのスレッド境界をマークし、パイプラインをステ
ージに分割します。
パーティションポイントを追加すると、トランスフォーメーションスレッドの数が増え、
セッションのパフォーマンスを向上できます。Integration Serviceではパーティションポ
イントでデータ行を再分散できるため、これもまたセッションのパフォーマンスを向上す
ることができます。セッションを作成した場合、Workflow Managerによりパイプライン上
の各トランスフォーメーションで、それぞれ1つのパーティションポイントが作成されま
す。
パイプラインにある、以下のトランスフォーメーションまたはターゲットインスタンスに
もとづいて、パーティションポイントを保持または削除できます。
ソース修飾子トランスフォーメーション
ソースからデータを抽出してソース修飾子に送る方法を制御します。このパーティシ
ョンポイントは削除できません。
ノーマライザトランスフォーメーション
ソースからデータを抽出してソース修飾子に送る方法を制御します。このパーティシ
ョンポイントは削除できません。
ランクトランスフォーメーション
行がトランスフォーメーションに送られる前に、行を適正にグループ化するようにし
ます。パイプラインにパーティションが1つだけ含まれる場合、あるいは1つのグルー
プに属するすべての行が、トランスフォーメーションに送られる前に1つのパーティシ
ョンに送られる場合に、このパーティションポイントを削除できます。
未ソートアグリゲータトランスフォーメーション
行がトランスフォーメーションに送られる前に、行を適正にグループ化するようにし
ます。パイプラインにパーティションが1つだけ含まれる場合、あるいは1つのグルー
プに属するすべての行が、トランスフォーメーションに送られる前に1つのパーティシ
ョンに送られる場合に、このパーティションポイントを削除できます。
パーティションポイントの追加および削除
17
ターゲットインスタンス
writerがターゲットにデータを渡す方法を制御します。このパーティションポイント
は削除できません。
複数入力グループトランスフォーメーション
1つのスレッドで各パーティションを処理するように複数入力グループトランスフォー
メーションが設定されている場合や、1つのスレッドで各パーティションを処理するよ
うにダウンストリームの複数入力グループカスタムトランスフォーメーションが設定
されている場合、Workflow Managerは複数入力グループトランスフォーメーションに
パーティションポイントを作成します。
例えば、Workflow Managerは、ソート済みジョイナトランスフォーメーションにパー
ティションポイントを作成できます。Workflow Managerは、ジョイナトランスフォー
メーションが、パーティションごとに1つのスレッドを使用するように設定されたダウ
ンストリームのカスタムトランスフォーメーションに接続されると、パーティション
ポイントを作成します。
これにより、Integration Serviceは1つのスレッドを使用して、パーティションごと
に1つのスレッドを必要とするCustomトランスフォーメーションの各パーティションを
処理するようになります。このパーティションポイントは削除できません。
パーティションポイントの追加と削除に関するルール
およびガイドライン
パーティションポイントを追加したり削除したりする場合は、以下の規則およびガイドラ
インに従ってください。
¨ ソースインスタンスにはパーティションポイントを作成できません。
¨ シーケンスジェネレータトランスフォーメーションやコネクトされていないトランスフ
ォーメーションには、パーティションポイントを作成できません。
¨ 2つ以上のパイプラインステージから入力を受け入れるパーティションポイントが存在
しなければ、他の任意のトランスフォーメーションにパーティションポイントを追加で
きます。
¨ ソース修飾子トランスフォーメーション、COBOLソースのノーマライザトランスフォー
メーション、ターゲットインスタンスでは、パーティションポイントを削除できませ
ん。
¨ パーティションごとに1つのスレッドを使用するように設定されている複数の入力グル
ープカスタムトランスフォーメーションでは、パーティションポイントを削除できませ
ん。
¨ パーティションごとに1つのスレッドを使用するように設定されている複数の入力グル
ープカスタムトランスフォーメーションからのアップストリームである複数の入力グル
ープトランスフォーメーションでは、パーティションポイントを削除できません。
¨ 次のパーティションタイプには、動的パーティションに関する制限があります。
- パススルー。動的パーティションを使用した場合で、パーティションポイントでパー
ティションの数を変更した場合、各パイプラインステージ内のパーティションの数が
変更されます。
18
章 2: パーティションポイント
- キー範囲。動的パーティションでキー範囲を使用するには、制限された数値または日
付キーを定義する必要があります。 無制限の範囲を使用する場合、セッションは1つ
のパーティションで実行されます。
パイプライン上のその他のトランスフォーメーションにおけるパーティションポイントの
削除と追加は、次の規則に従って行います。
¨ ソースインスタンスにはパーティションポイントを作成できません。
¨ シーケンスジェネレータトランスフォーメーションまたは接続されていないトランスフ
ォーメーションには、パーティションポイントを作成できません。
¨ 複数のパイプラインステージから入力を受け入れるパーティションポイントが存在しな
ければ、他の任意のトランスフォーメーションにパーティションポイントを追加するこ
とができます。
以下の図に、マッピング内の有効パーティションポイントを示します。
このマッピングでは、Workflow Managerにより、デフォルトでソース修飾子とターゲット
インスタンスにパーティションポイントが作成されます。式トランスフォーメーション
EXP_3に、新しいパーティションポイントを追加できます。
EXP_3にパーティションポイントを置いてパーティションを1つ定義すると、マスタースレ
ッドにより次のスレッドが作成されます。
パーティションポイントの追加および削除
19
1.readerスレッド。
2.トランスフォーメーションスレッド。
3.writerスレッド。
この場合、各パーティションポイントが1つのパイプラインステージからしかデータを受け
取らないため、EXP__3は有効なパーティションポイントになります。
次のトランスフォーメーションは、有効なパーティションポイントではありません。
トランスフォ
ーメーション
理由
ソース
ソースインスタンス。
SG_1
シーケンスジェネレータトランスフォーメーション。
EXP_1および
EXP_2
EXP_1またはEXP_2にパーティションポイントを置く場合、
EXP_1またはEXP_2にソース修飾子からのデータを処理する新し
いパイプラインステージを追加します。この場合、EXP_3は2つ
のパイプラインステージからデータを受け取ることになるた
め、この操作は許可されません。
リレーショナルソースのパーティション化
リレーショナルまたはアプリケーションソースをパーティション化するセッションを実行
した場合、Integration Serviceによって各パーティションについてソースデータベースへ
別々の接続が作成されます。 その後、各パーティションにSQLクエリーが作成されます。
[マッピング]タブの[トランスフォーメーション]ビューにフィルタ条件を入力するこ
とで、各ソースパーティションのクエリーをカスタマイズできます。また、[マッピン
グ]タブの[トランスフォーメーション]ビュー.を使用して各ソースパーティションの
SQLクエリーを上書きすることもできます。
注: データベーステーブルを読み込むカスタムSQLクエリを作成し、データベースパーテ
ィション化を設定した場合、Integration Serviceはパススルーパーティション化に戻り、
セッションログにメッセージが出力されます。
SQLクエリの入力
SQLクエリーのSELECT文をカスタマイズしたい場合は、SQLオーバーライドを入力します。
[マッピング]タブの[トランスフォーメーション]ビューに入力したSQL文により、ソー
ス修飾子トランスフォーメーションを設定する際にDesignerで設定したカスタマイズSQLク
エリーが上書きされます。
SQLクエリにより、ソースパーティションに対して入力したキー範囲およびフィルタ条件が
すべてオーバーライドされます。したがって、ユーザーがキー範囲およびソースフィルタ
も入力した場合、Integration ServiceによってSQLクエリオーバーライドが使用され、ソ
ースデータが抽出されます。
20
章 2: パーティションポイント
NULL値を含むキーを作成した場合、別のパーティションを作成してNULL値を抽出するSQLク
エリーまたはフィルタを入力することによって、NULL値を抽出することができます。
各パーティションにSQLクエリーを入力するには、まず[Sql Query]フィールドの右端の
ボタンをクリックします。[SQLエディタ]ダイアログボックスにクエリーを入力し、
[OK]をクリックします。
ソース修飾子トランスフォーメーションを設定したときにDesignerでSQLクエリーを入力し
た場合、各パーティションの[Sql Query]フィールドにそのクエリーが表示されます。こ
のクエリーを上書きするには、[Sqlクエリ]フィールドの右端のボタンをクリックし、
[SQLエディタ]ダイアログボックスでクエリーを変更したあと、[OK]をクリックしま
す。
フィルタ条件の入力
リレーショナルソース修飾子にキー範囲パーティション化を指定する場合、追加のフィル
タ条件を入力することができます。この操作を行った場合、セッションプロパティで入力
したフィルタ条件を含むWHERE句がIntegration Serviceによって生成されます。
[マッピング]タブの[トランスフォーメーション]ビューに入力したフィルタ条件によ
り、ソース修飾子トランスフォーメーションを設定する際にDesignerで設定したフィルタ
条件が上書きされます。
キー範囲パーティション化を使用する場合、フィルタ条件はキー範囲と関連しながら機能
します。たとえば、顧客IDに基づいてデータを選択したいが、USA以外の顧客の情報は抽出
したくないとします。次のキー範囲を定義します。
CUSTOMER_ID
Partition #1
Partition #2
Start Range
End Range
135000
135000
USA以外の顧客のIDが特定のパーティションの範囲内にあると分かっている場合は、そのパ
ーティションにフィルタを入力してそれらを排除することができます。したがって、2番目
のパーティションに次のフィルタ条件を入力します。
CUSTOMERS.COUNTRY = ‘USA’
このセッション実行すると、次のような2つのパーティション用クエリーがセッションログ
に記録されます。
READER_1_1_1> RR_4010 SQ instance [SQ_CUSTOMERS] SQL Query [SELECT CUSTOMERS.CUSTOMER_ID,
CUSTOMERS.COMPANY, CUSTOMERS.LAST_NAME FROM CUSTOMERS WHERE CUSTOMER.CUSTOMER ID < 135000]
[...]
READER_1_1_2> RR_4010 SQ instance [SQ_CUSTOMERS] SQL Query [SELECT CUSTOMERS.CUSTOMER_ID,
CUSTOMERS.COMPANY, CUSTOMERS.LAST_NAME FROM CUSTOMERS WHERE CUSTOMERS.COUNTRY = ‘USA’ AND 135000
<= CUSTOMERS.CUSTOMER_ID]
フィルタ条件を入力するには、まず[ソースフィルタ]フィールドで[参照]ボタンをク
リックします。[SQLエディタ]ダイアログボックスにフィルタ条件を入力し、[OK]をク
リックします。
ソースフィルタトランスフォーメーションを設定したときにDesignerでフィルタ条件を入
力している場合は、各パーティションの[ソースフィルタ]フィールドにそのクエリーが
表示されます。このフィルタを上書きするには、[ソースフィルタ]フィールドの右端の
ボタンをクリックし、[SQLエディタ]ダイアログボックスでフィルタ条件を変更したあ
と、[OK]をクリックします。
リレーショナルソースのパーティション化
21
ファイルソースのパーティション化
セッションによってファイルソースが使用される場合は、1つまたは複数のスレッドでソー
スを読み込むようにセッションを設定できます。1つのスレッドで読み込むようにセッショ
ンを設定した場合、Integration Serviceによってファイルソースへの接続が1つ作成され
ます。複数のスレッドで読み込むようにセッションを設定した場合は、ファイルソースへ
の複数の同時接続が作成されます。
次のタイプのパーティション化されたファイルソースを使用します。
¨ フラットファイル。フラットファイル、XMLファイル、またはCOBOLソースファイルを読
み込むようにセッションを設定できます。
¨ コマンド。オペレーティングシステムコマンドを使用してソースデータ行を生成する
か、ファイルリストを生成するようにセッションを設定できます。
ファイルソースに接続する際には、全パーティションに同じ接続タイプを選択する必要が
あります。すべての接続オブジェクトが同じタイプであれば、異なる接続オブジェクトを
選択できます。
そのフラットファイルソースに対してシングルスレッドまたはマルチスレッド読み込みを
指定するには、パーティション 2- nのソースファイル名プロパティを設定します。1つのス
レッドによる読み込み(シングルスレッド読み込み)を設定するには、パーティション 2nに空データを渡します。複数のスレッドによる読み込み(マルチスレッド読み込み)を設
定するには、パーティション 2- nのソースファイル名を空欄のままにしておきます。
ファイルソースのパーティション化の規則およびガイ
ドライン
複数のパーティションを持つファイルソースセッションを設定する場合は、以下の規則お
よびガイドラインに従ってください。
¨ ソース修飾子でパススルーパーティション化を使用します。
¨ フラットファイルまたはCOBOLソースで、シングルスレッドまたはマルチスレッド読み
込みを使用します。
¨ XMLソースでは、シングルスレッド読み込みを使用します。
¨ ソースファイルがディスク以外のファイル(FTPファイルやWebSphere MQソースなど)
の場合は、マルチスレッド読み込みは使用できません。
¨ マルチスレッド読み込みを使用してよいのは、シフト依存コードのページを使用してい
て、次の条件に該当する場合です。
- 固定長ファイルである。
- ラインシーケンシャルファイルではない。
- ソース定義中のユーザー定義シフト状態を有効にしていない。
¨ 3つのフラットファイルから同時にデータを読み込むには、ソース修飾子に3つのパーテ
ィションを指定する必要があります。デフォルトのパーティションタイプであるパスス
ルーパーティション化を適用します。
¨ セッションにマルチスレッド読み込みを設定している場合で、Integration Serviceで
ファイルソースへの複数のスレッドが作成できない場合は、セッションログにメッセー
ジが書き込まれ、1つのスレッドでソースが読み込まれます。
22
章 2: パーティションポイント
¨ Integration Serviceによって複数のスレッドが使用され、1つのソースファイルが読み
込まれる場合は、ファイルの行が順次読み込まれない場合があります。 ソート順が重
要な場合は、1つのスレッドでファイルを読み込むようにセッションを設定してくださ
い。たとえば、マッピング中にソート済みジョイナトランスフォーメーションがあり、
ファイルソースがソートの基点である場合は、ソート順が重要な場合があります。
¨ 負荷を平均化するために、直接ファイルと間接ファイルを組み合わせて使用することも
できます。
¨ マルチスレッド読み込みのセッションパフォーマンスは、大きなソースファイルの場合
に最適になります。入力データの量が少ない場合は、負荷が分散されない可能性があり
ます。
¨ コマンドがソースデータを生成する場合で、セッションがグリッド上で実行されるよう
に設定されているか、最後のチェックポイントからの再開のリカバリ戦略を使用するよ
うに設定されている場合は、ファイルソースにこのコマンドを使用することはできませ
ん。
ファイルソースの読み込むための1つのスレッドの使用
Integration Serviceによって1つのスレッドが使用され、ファイルソースが読み込まれる
場合、そのソースへの接続が1つ作成されます。 Integration Serviceによって、ファイル
中またはファイルリスト中の行が順次読み込まれます。 セッション中の直接または間接フ
ァイルソースに対してシングルスレッド読み込みを設定できます。
¨ 直接ファイルの読み込み。1つ以上の直接ファイルから読み込むようにIntegration
Serviceを設定することができます。 複数の直接ファイルがあるセッションを設定する
場合は、Integration Serviceによってファイルごとに1つの同時接続が作成されます。
1つのファイルに対して複数の接続は作成しません。
¨ 間接ファイルの読み込み。Integration Serviceによって間接ファイルが読み込まれる
場合は、ファイルリストが読み込まれ、次にリスト中のファイルが順次読み込まれま
す。 セッションに複数のファイルリストがある場合は、Integration Serviceによって
ファイルリストが同時に読み込まれ、次にリスト内のファイルが順次読み込まれます。
ファイルソースの読み込むための複数のスレッドの使
用
Integration Serviceによって複数のスレッドでソースファイルが読み込まれる場合、その
ソースに対して複数の同時接続が作成されます。 Integration Serviceでは、ファイル中
の行を順次読み込む場合も読み込まない場合もあります。
セッション内の直接または間接ファイルに対してマルチスレッド読み込みを設定すること
ができます。
¨ 直接ファイルの読み込み。Integration Serviceによって1つの直接ファイルが読み込ま
れる場合に、複数のreaderスレッドが作成され、同時に読み込まれます。 1つ以上の直
接ファイルから読み込むようにIntegration Serviceを設定することができます。 例え
ば、セッションによって2つのファイルから読み込みが行われ、ユーザーが5つのパーテ
ィションを作成している場合は、Integration Serviceによって1つのファイルを2つの
パーティションに、もう1つのファイルを3つのパーティションに分けることができま
す。
ファイルソースのパーティション化
23
¨ 間接ファイルの読み込み。Integration Serviceによって1つの間接ファイルが読み込ま
れる場合に、複数のスレッドが作成され、同時に読み込まれます。 リスト中のファイ
ルを同時に読み込むためにも、複数のスレッドが作成されます。Integration Service
によって、複数のスレッドが使用され単一のファイルが読み込まれる場合があります。
ファイルのパーティション化の設定
パーティションポイントを作成してパーティション情報を設定した後、[マッピング]の
[トランスフォーメーション]ビューでソース接続に関する設定とファイルプロパティの
設定ができます。ソースノードの下にある設定対象のソースインスタンス名をクリックし
ます。ファイルソースのソースインスタンス名をクリックすると、セッションプロパティ
に接続およびファイルのプロパティが表示されます。
ソースファイル名やディレクトリを、ソースパーティションごとに設定できます。
Workflow Managerは、パーティションごとにファイル名と格納場所を生成します。
以下の表に、マッピングにおけるファイルソースのファイルプロパティ設定を示します。
属性
説明
入力タイプ
ソース入力のタイプ。次のソース入力のタイプを選択できま
す。
- ファイル。フラットファイルの場合は、COBOLまたはXMLソー
ス。
- コマンド。コマンドによって生成されたソースデータまたは
ファイルリスト。
コマンドを使用してXMLソースデータを生成することはできま
せん。
同時読み取り
のパーティシ
ョン化
複数のパーティションがソースファイルから入力行を読み込む
順序。以下のオプションを選択することができます。
- スループットを最適化します。Integration Serviceは入力
行の順序を保持しません。
- 相対入力行の順序を保持します。Integration Serviceは、
各パーティションによって読み込まれる行について、入力行
の順序を保持します。
- 絶対入力行の順序を保持します。Integration Serviceは、
すべてのパーティションによって読み込まれるすべての行に
ついて、入力行の順序を保持します。
ソースファイ
ルのディレク
トリ
フラットファイルソースのディレクトリ名。デフォルトで、
Integration Serviceは、サービスのプロセス変数ディレクト
リ$PMSourceFileDirでファイルソースを検索します。
[Source Filename]フィールドにディレクトリとファイル名
の両方を指定する場合は、このフィールドをクリアします。
Integration Serviceはセッションの実行時に、このフィール
ドと[ソースファイル名]フィールドを連結します。
また、セッションパラメータ$InputFileNameを使用してファイ
ルの場所を指定することもできます。
ソースファイ
ル名
24
フラットファイルソースのファイル名およびパス。必要に応じ
て、このファイル名にセッションパラメータ$InputFileNameを
指定することもできます。
章 2: パーティションポイント
属性
説明
Integration Serviceはセッションの実行時に、このフィール
ドと[ソースファイルのディレクトリ]フィールドを連結しま
す。例えば、[ソースファイルのディレクトリ]フィールドに
「C:\data\\u201d」と指定されている場合は、[ソースファイ
ル名]フィールドに「filename.dat」と入力します。
Integration Serviceはセッションを開始するときに「C:\data
\filename.dat」を検索します。
デフォルトでは、Workflow Managerはソース定義に設定されて
いるファイル名を入力します。
ソースファイ
ルタイプ
次のソースファイルのタイプを選択できます。
- Direct。ソースデータを含むソースファイル。
- Indirect。ファイルのリストを含むソースファイル。
[Indirect]を選択した場合、セッションを開始すると
Integration Serviceはファイルリストを検索し、リスト内
の各ファイルを読み込みます。
コマンドのタ
イプ
コマンドが生成するソースデータのタイプ。次のコマンドのタ
イプを選択できます。
- ソースデータ入力行を生成するコマンドのデータを生成する
コマンド。
- ファイルリストを生成するコマンドのファイルリストを生成
するコマンド。
コマンド
ソースファイルデータを生成するために使用するコマンド。
1つのスレッドを使用するセッションの設定
1つのスレッドでファイルを読み込むようにセッションを設定するには、パーティション
2-nに空データを渡します。空データを渡すには、データのないファイル(empty.txtな
ど)を作成し、それをソースファイルディレクトリに置きます。次に、empty.txtをソース
ファイル名として使用します。
注: コマンドを使用してソースデータを生成するパーティション化されたソースに対して
シングルスレッド読み込みを設定することはできません。
次の表に、Integration Serviceで1つのスレッドを作成してProductsA.txtを読み込む場
合のソースファイル名と値を示します。ファイル内の行は順番に読み込まれます。ファイ
ルを読み込んだ後、トランスフォーメーションパイプラインの3つのパーティションにデー
タが渡されます。
ソースファイル名
値
Partition #1
ProductsA.txt
Partition #2
empty.txt
Partition #3
empty.txt
ファイルソースのパーティション化
25
次の表に、Integration Serviceで2つのスレッドを作成する場合のソースファイル名と値
を示します。ProductsA.txtを読み込むスレッドとProductsB.txtを読み込むスレッドがそ
れぞれ作成されます。2つのファイルが同時に読み込まれ、各ファイル内の行は順番に読み
込まれます。
ソースファイル名
値
Partition #1
ProductsA.txt
Partition #2
empty.txt
Partition #3
ProductsB.txt
FTPを使用してソースファイルにアクセスする場合は、直接ファイルごとに異なる接続を選
択できます。
複数のスレッドを使用するセッションの設定
複数のスレッドでファイルを読み込むようにセッションを設定するには、パーティション
2-nのソースファイル名を空欄のままにしておきます。Integration Serviceによって、パ
ーティション2-nが使用され、前回のパーティションファイルまたはファイルリストの一部
が読み込まれます。 Integration Serviceによってそのパーティションのディレクトリフ
ィールドは無視されます。
セッションを複数のスレッドでコマンドから読み込むように設定するには、各パーティシ
ョンごとにコマンドを入力するか、パーティション2- nのコマンドプロパティを空白のまま
にします。パーティションごとにコマンドを入力した場合、Integration Serviceによっ
て、各コマンドによって生成されたデータを読み込むスレッドが作成されます。 それ以外
の場合は、Integration Serviceによって、パーティション2- nが使用され、最初のパーテ
ィションのコマンドによって生成されたデータの一部が読み込まれます。
次の表に、Integration Serviceで3つのスレッドを作成してProductsA.txtを同時に読み
込む場合の属性と値を示します。
26
属性
値
Partition #1
ProductsA.txt
Partition #2
<空欄>
Partition #3
<空欄>
章 2: パーティションポイント
次の表に、Integration Serviceで3つのスレッドを作成してProductsA.txtと
ProductsB.txtを同時に読み込む場合の属性と値を示します。ProductsA.txtを2つのスレ
ッドで読み込み、ProductsB.txtを1つのスレッドで読み込みます。
属性
値
Partition #1
ProductsA.txt
Partition #2
<空欄>
Partition #3
ProductsB.txt
次の表に、Integration Serviceで3つのスレッドを作成して、コマンドからパイプで渡さ
れるデータを同時に読み込む場合の属性と値を示します。
属性
値
Partition #1
CommandA
Partition #2
<空欄>
Partition #3
<空欄>
次の表に、Integration Serviceで3つのスレッドを作成して、CommandAとCommandBからパ
イプで渡されるデータを同時に読み込む場合の属性と値を示します。CommandAからパイプ
で渡されるデータを2つのスレッドで読み込み、CommandBからパイプで渡されるデータを1
つのスレッドで読み込みます。
属性
値
Partition #1
CommandA
Partition #2
<空欄>
Partition #3
CommandB
同時読み込みのパーティション化の設定
デフォルトでは、複数のパーティションが1つのファイルソースから読み込む場合、
Integration Serviceは行の順序を保持しません。複数のパーティションが1つのファイル
ソースから読み込む場合に行の順序を保持するには、同時読み取りのパーティション化を
設定します。以下のオプションを設定することができます。
¨ スループットを最適化します。複数のパーティションによって単一のファイルソースか
ら読み込まれる場合、Integration Serviceでは行の順序は保持されません。 複数のパ
ーティションによってファイルソースから読み込まれる順序が重要でない場合にこのオ
プションを使用します。
ファイルソースのパーティション化
27
¨ 相対入力行の順序を維持します。各パーティションによって読み込まれる入力行のソー
ト順を維持します。 各パーティションによって読み込まれる入力行のソート順を維持
する場合にこのオプションを使用します。
以下の表に、2つのパーティションごとに10行を含むファイルソースのソート順の例を
示します。
パーティション
読み込まれる行
Partition #1
1,3,5,8,9
Partition #2
2,4,6,7,10
¨ 絶対入力行の順序を維持します。すべてのパーティションによって読み込まれるすべて
の入力行のソート順を維持します。 セッションが実行されるたびに入力行のソート順
を保持する場合にこのオプションを使用します。パッシブトランスフォーメーションを
含むパススルーマッピングでは、ターゲットに書き込まれる行の順序は、入力行と同じ
順序になります。
以下の表に、2つのパーティションごとに10行を含むファイルソースのソート順の例を
示します。
パーティション
読み込まれる行
Partition #1
1,2,3,4,5
Partition #2
6,7,8,9,10
注: デフォルトでは、Integration Serviceは、最後のチェックポイントからの再開のリカ
バリ戦略が設定されたセッションで、[絶対入力行の順序の保持]オプションを使用しま
す。
リレーショナルターゲットのパーティション
化
リレーショナルターゲットにデータをロードするようにパイプラインを設定した場合、
Integration Serviceによってターゲットインスタンスの各パーティションについてターゲ
ットデータベースへ別々の接続が作成されます。 各パーティションのデータが、同時にタ
ーゲットデータベースにロードされます。
セッションプロパティの[マッピング]タブでパイプラインにおけるターゲットのパーテ
ィション属性を設定します。リレーショナルターゲットの場合、拒否ファイル名とディレ
クトリを設定します。Integration Serviceによって、ターゲットパーティションごとに拒
否ファイルが1つ作成されます。
28
章 2: パーティションポイント
以下の表に、パイプライン中のリレーショナルターゲットのパーティション化属性を示し
ます。
属性
説明
拒否ファイルデ
ィレクトリ
ターゲット拒否ファイルの場所。デフォルトは、
$PMBadFileDir です。
拒否ファイル名
拒否ファイルの名前。デフォルトは「ターゲット名パーティ
ション番号.bad」です。 また、セッションパラメータファ
イルで定義したように、セッションパラメータ
「$BadFileName」を使用することもできます。
データベースの互換性
ターゲットインスタンスに複数のパーティションがあるセッションを設定した場合、
Integration Serviceによってターゲットへの接続が各パーティションに1つずつ作成され
ます。 データベースにロードするセッションや、テーブルへの複数の同時接続をサポート
しないODBCターゲットにロードするセッションに複数のターゲットパーティションを設定
すると、セッションは失敗します。
Informixデータベースにデータをロードするセッションに複数のターゲットパーティショ
ンを作成する場合、行レベルのロックを指定したターゲットテーブルを作成する必要があ
ります。複数のパーティションを作成したセッションから、ページレベルのロックが設定
されたInformixターゲットにデータを挿入すると、セッションは失敗し、次のメッセージ
が返されます。
WRT_8206 Error: The target table has been created with page level locking. The session can only run
with multi partitions when the target table is created with row level locking.
Sybase IQでは、テーブルへの複数の同時接続は利用できません。Sybase IQにロードする
セッションに複数のターゲットパーティションを作成した場合、Integration Serviceによ
って1つのパーティションにすべてのデータがロードされます。
ファイルターゲットのパーティション化
セッションにファイルターゲットへの書き込みを設定した場合、各パーティションの別々
のファイルまたはすべてのパーティションのターゲット出力を含む統合ファイルにターゲ
ット出力を書き込むことができます。セッションを実行する際、Integration Serviceによ
って個別の出力ファイルまたは統合ファイルに同時に書き込まれます。 1つのパーティシ
ョンまたはすべてのターゲットパーティションのデータをオペレーティングシステムコマ
ンドに送信することもできます。
それぞれのターゲットパーティションに、接続設定およびロパティを設定できます。これ
らの設定は、[マッピング]タブの[トランスフォーメーション]ビューで設定します。
パーティション化されたFTPファイルターゲットを使用するようにセッションを設定するこ
ともできます。
ファイルターゲットのパーティション化
29
接続設定の設定
すべてのターゲットパーティションの接続タイプを設定するには、[マッピング]タブの
[トランスフォーメーション]ビューの[接続]設定を使用します。各パーティションに
別々の接続オブジェクトを指定できますが、すべて同じタイプである必要があります。
次の接続タイプのいずれかをターゲットファイルで使用します。
¨ なし。パーティション化されたターゲットファイルをローカルマシンに書き込みます。
¨ FTP。パーティション化されたターゲットファイルを別のマシンに転送します。
Integration Serviceが接続できるすべてのマシンにファイルを転送することができま
す。
¨ ローダー。複数の出力ファイルからロードできる外部ローダーを使用します。 パイプ
ラインによりデータがリレーショナルターゲットにロードされ、[マッピング]タブの
[Writers]設定でファイルwriterが選択されている場合に、このオプションが表示さ
れます。複数の出力ファイルからロードできないローダーを選択した場合、
Integration Serviceではセッションが失敗します。
¨ メッセージキュー。パーティション化されたターゲットファイルをWebSphere MQメッセ
ージキューに転送します。
注: すべてのターゲットパーティションに対してローカルまたはFTP接続タイプを選択し
た場合、ターゲットファイルを統合することができます。外部ローダーまたはWebSphere
MQメッセージキューをターゲット接続タイプとして使用する場合、複数のパーティション
を持つセッションからの出力ファイルは統合できません。
以下の表に、マッピングにおけるファイルターゲットの接続オプションを示します。
属性
説明
接続タイプ
FTP、外部ローダ、メッセージキューのいずれかの接続を選
択します。ローカル接続を行う場合は、[なし]を選択しま
す。
接続タイプはすべてのパーティションで同じになります。
値
FTP、外部ローダ、メッセージキューのいずれかの接続の場
合は、このフィールドの[開く]をクリックして接続オブジ
ェクトを選択します。
各パーティションに別々の接続オブジェクトを指定できま
す。
ファイルプロパティの設定
フラットファイルソースのファイルプロパティを設定するには、[マッピング]タブの
[トランスフォーメーション]ビューの[プロパティ]設定を使用します。
30
章 2: パーティションポイント
以下の表に、マッピングにおけるファイルターゲットのファイルプロパティを示します。
属性
説明
Merge Type
Integration Serviceによって実行される、パーティション
化されたターゲットのデータの統合のタイプ。
ターゲットファイルのマージ時に、Integration Serviceは
すべてのパーティションの出力をセッションの実行中にマ
ージファイルまたはコマンドに書き込みます。
セッションで外部ローダ、メッセージキューのいずれかを
使用する場合には、ファイルはマージできません。
マージファイル
ディレクトリ
マージファイルの場所。デフォルトは、$PMTargetFileDir
です。
マージファイル
名
結合ファイルの名前。デフォルトでは「ターゲット
名.out」です。
Append if
Exists
各パーティションのターゲットファイルおよびリジェクト
ファイルに出力データを追加します。ターゲットファイル
をマージする場合、出力データをマージファイルに追加し
ます。ターゲットファイルがディスク以外のファイル(FTP
ターゲットファイルなど)の場合は、このオプションは使
用できません。
このオプションを選択しないと、出力データがターゲット
ファイルに書き込まれる前に、各ターゲットファイルが切
り詰められます。ファイルが存在しない場合は、作成され
ます。
Output Type
セッションのターゲットのタイプ。ターゲットデータをフ
ァイルターゲットに書き込むためのファイルを選択しま
す。ターゲットデータをコマンドに送信するには、[コマ
ンド]を選択します。FTPまたはキューターゲット接続に対
して[コマンド]を選択することはできません。
ヘッダーオプシ
ョン
ファイルターゲットにヘッダー行を作成します。
ヘッダーコマン
ド
ファイルターゲットにヘッダー行を生成するために使用す
るコマンド。
Footer Command
ファイルターゲットにフッタ行を生成するために使用する
コマンド。
Merge Command
マージされたターゲットデータを処理するために使用する
コマンド。
Output File
Directory
ターゲットファイルの場所。デフォルトは、
$PMTargetFileDirです。
Output File
Name
ターゲットファイルの名前。デフォルトは「ターゲット名
パーティション番号.out」です。また、パラメータファイ
ルで定義したように、セッションパラメータ
「$OutputFileName」を使用することもできます。
ファイルターゲットのパーティション化
31
属性
説明
Rejet File
Directory
ターゲットリジェクトファイルの場所。デフォルトは、
$PMBadFileDir です。
Reject File
Name
リジェクトファイルの名前。デフォルトは「target name
partition number.bad」です。
また、パラメータファイルで定義したセッションパラメー
タ「$BadFileName」を使用することもできます。
Command
1つのパーティションのターゲット出力データを処理するた
めに使用するコマンド。
パーティション化されたファイルターゲットのコマンドの設定
コマンドを使用して、1つのパーティションのターゲットデータを処理するか、セッション
内のすべてのターゲットパーティションのマージデータを処理します。UNIXでは、有効な
任意のUNIXコマンドまたはシェルスクリプトを使用します。Windowsでは、有効な任意の
DOSまたはバッチファイルを使用します。Integration Serviceは、フラットファイルター
ゲットまたはマージファイルではなく、コマンドにデータを送信します。
コマンドを使用して次のタイプのターゲットデータを処理します。
¨ 単一のパーティションのターゲットデータ。ターゲットパーティションごとにコマンド
を入力できます。 Integration Serviceによって、セッションの実行中にターゲットデ
ータがコマンドに送信されます。
1つのパーティションのターゲットデータをコマンドに送信するには、[出力タイプ]
に対して[コマンド]を選択します。セッションプロパティでパーティションの[コマ
ンド]プロパティにコマンドを入力します。
¨ すべてのターゲットパーティションの統合データ。コマンドを入力してすべてのパーテ
ィションの統合データを処理できます。 Integration Serviceによって、セッション実
行中にすべてのパーティションのターゲットデータがこのコマンドに同時に送信されま
す。 このコマンドはターゲットデータの順序を維持できません。
すべてのパーティションのマージデータをコマンドに送信するには、[出力タイプ]と
して[コマンド]を選択し、セッションプロパティで[Merge Command Line]プロパテ
ィにコマンドを入力します。
統合オプションの設定
セッション内のパーティションのターゲットデータを統合できます。ターゲットデータを
統合する際、Integration Serviceによってすべてのターゲットパーティションに対して統
合ファイルが作成されます。
32
章 2: パーティションポイント
次の統合ファイルオプションを設定できます。
¨ シーケンシャル統合。Integration Serviceによってすべてのパーティションに対して
出力ファイルが作成され、続いてセッションの最後に出力ファイルが単一の統合ファイ
ルに統合されます。 Integration Serviceによって各パーティションの出力データが統
合ファイルに順次追加されます。Integration Serviceによって、パーティションの
[出力ファイル名]および[出力ファイルディレクトリ]の値を使用して、個々のター
ゲットファイルが作成されます。
¨ ファイルリスト。Integration Serviceによって、すべてのパーティションに対してタ
ーゲットファイルが作成され、個々のファイルのパスを含むファイルリストが作成され
ます。 Integration Serviceによって、パーティションの[出力ファイル名]および
[出力ファイルディレクトリ]の値を使用して、個々のターゲットファイルが作成され
ます。 ターゲットファイルをマージディレクトリまたはマージディレクトリの下のデ
ィレクトリに書き込んだ場合、ファイルリストには相対パスが含まれます。それ以外の
場合は、リストファイルには絶対パスが含まれます。別のマッピングでソースファイル
としてターゲットファイルを使用する場合は、このリストファイルをソースファイルと
して使用します。
¨ 同時統合Integration Serviceにより、すべてのターゲットパーティションのデータが
統合ファイルに同時に書き込まれます。 パーティションごとに中間ファイルは作成さ
れません。Integration Serviceによってすべてのパーティションに対し統合ファイル
に同時に書き込まれるため、統合ファイル内のデータのソート順は連続していない可能
性があります。
カスタムトランスフォーメーションのパーテ
ィション化
マッピングに、カスタムトランスフォーメーション、Javaトランスフォーメーション、SQL
トランスフォーメーション、またはHTTPトランスフォーメーションが含まれる場合は、以
下のパーティション化情報を編集することができます。
¨ 複数のパーティションの追加。カスタムトランスフォーメーションで複数のパーティシ
ョンの設定ができる場合、複数のパーティションを作成することができます。
¨ パーティションポイントの作成トランスフォーメーションで複数のパーティションの設
定ができない場合でも、カスタムトランスフォーメーションにパーティションポイント
を作成することはできます。
Java、SQL、およびHTTPの各トランスフォーメーションは、カスタムトランスフォーメーシ
ョンを使用して構築され、同じ機能を持っています。カスタムトランスフォーメーション
を使用して作成されたすべてのトランスフォーメーションが、カスタムトランスフォーメ
ーションと同じパーティション化機能を持つとは限りません。
各パーティションを1つのスレッドで処理するようにカスタムトランスフォーメーションを
設定した場合、Workflow Managerによってマッピングの設定に基づいてパーティションポ
イントが追加されます。
カスタムトランスフォーメーションのパーティション化
33
複数のパーティションに関する作業
マッピングで複数のパーティションが許可されるように、カスタムトランスフォーメーシ
ョンを設定することができます。 トランスフォーメーションの[Is Partitionable]プロ
パティを設定した場合、パイプラインにパーティションを追加できます。[Is
Partitionable]オプションに対して次の値を選択できます。
¨ いいえ。トランスフォーメーションはパーティション化できません。 同一パイプライ
ン内のこのトランスフォーメーションおよびその他のトランスフォーメーションは、1
つのパーティションに含まれる必要があります。データクレンジングなど、トランスフ
ォーメーションによりすべての入力データが一度に処理される場合は、[いいえ]を選
択する場合があります。
¨ ローカルで。トランスフォーメーションをパーティション化することはできますが、
Integration Serviceにより同じノード上のパイプラインですべてのパーティションが
実行される必要があります。 トランスフォーメーションの異なるパーティションがメ
モリ内のオブジェクトを共有する必要がある場合に[ローカル]を選択します。
¨ グリッドをまたがる。トランスフォーメーションをパーティション化することができ、
Integration Serviceにより各パーティションは異なるノードに分散されます。
注: 複数入力または出力グループカスタムトランスフォーメーションを含むマッピングに
複数のパーティションを追加する場合は、すべてのグループに対して同じ数のパーティシ
ョンを定義します。
パーティションポイントの作成
トランスフォーメーションで複数のパーティションの設定ができない場合でも、カスタム
トランスフォーメーションにパーティションポイントを作成することはできます。 カスタ
ムトランスフォーメーションにパーティションポイントを作成する際は、以下のルールお
よびガイドラインを使用します。
¨ トランスフォーメーション内の各入力グループについてパーティションタイプを定義す
ることができます。 出力グループについてパーティションタイプを定義することはで
きません。
¨ 有効なパーティションタイプは、パススルー、ラウンドロビン、キー範囲、およびユー
ザー定義ハッシュキーです。
スレッドに関する作業
Integration Serviceがパーティションごとに1つのスレッドを使用してトランスフォーメ
ーションを処理するようにカスタムトランスフォーメーションを設定するには、[パーテ
ィションごとに1つのスレッドを要求します]カスタムトランスフォーメーションプロパテ
ィを有効にします。 Workflow Managerによって、マッピング内の入力グループの数および
カスタムトランスフォーメーションの場所に基づいて、パススルーパーティションポイン
トが作成されます。
1つの入力グループ
単一の入力グループのカスタムトランスフォーメーションが、パーティションポイントの
ない複数の入力グループのカスタムトランスフォーメーションからのダウンストリームで
34
章 2: パーティションポイント
ある場合、Workflow Managerにより、最も近いアップストリームの複数の入力グループト
ランスフォーメーションにパススルーパーティションポイントが配置されます。
例えば、以下のマッピングを検討します。
1.パーティションポイント。
2.複数の入力グループ。
3.単一の入力グループ。
4.パーティションごとに1つのスレッドが必要です。
5.パーティションごとに1つのスレッドを必要としません。
CT_quartileは1つの入力グループを含んでおり、複数の入力グループを含むトランスフォ
ーメーションであるCT_sortからのダウンストリームです。CT_quartileによりパーティシ
ョンごとに1つのスレッドが必要とされますが、アップストリームのカスタムトランスフォ
ーメーションであるCT_sortでは必要とされません。Workflow Managerにより、最も近い
アップストリームの複数の入力グループトランスフォーメーション、CT_Sortにパーティシ
ョンポイントが作成されます。
複数の入力グループ
Workflow Managerにより、パーティションごとに単一のスレッドを必要とする複数の入力
グループのカスタムトランスフォーメーションにパーティションポイントが配置されま
す。
例えば、以下のマッピングを検討します。
1.パーティションポイント
2.複数の入力グループ。
3.パーティションごとに1つのスレッドが必要です。
4.パーティションごとに1つのスレッドを必要としません。
カスタムトランスフォーメーションのパーティション化
35
CT_Order_classおよびCT_Order_Prepには複数の入力グループがありますが、
CT_Order_Prepだけがパーティションごとに1つのスレッドを必要とします。Workflow
ManagerはCT_Order_Prepにパーティションポイントを作成します。
ジョイナトランスフォーメーションのパーテ
ィション化
トランスフォーメーション範囲が[すべての入力]の場合、ジョイナトランスフォーメー
ションにパーティションポイントを作成すると、Workflow Managerはパーティションタイ
プを自動ハッシュキーに設定します。トランスフォーメーション範囲が[トランスフォー
メーション]の場合は、パーティションタイプがパススルーに設定されます。
マスターソースと明細ソースで同数のパーティションを作成する必要があります。ソート
済み入力を使用するようにジョイナトランスフォーメーションを設定した場合は、パーテ
ィションタイプをパススルーに変更できます。パイプラインにジョイナトランスフォーメ
ーションのマスターソースが含まれる場合、指定できるパーティションは1つだけで、この
ジョイナトランスフォーメーションにパーティションポイントを追加することはできませ
ん。
ジョイナトランスフォーメーションにパーティションポイントを作成した場合、
Integration Serviceによってキャッシュのパーティション化が使用されます。 ジョイナ
トランスフォーメーションでパーティション化を使用する場合、ジョイナトランスフォー
メーションのマスターソースと明細ソースに対し、複数のパーティションを作成すること
ができます。
ジョイナトランスフォーメーションにパーティションポイントを作成しない場合、明細ソ
ースについてはn個のパーティションを、マスターソースについては1つのパーティション
を作成できます(1:n)。
注: 行トランスフォーメーションスコープを使用するようにジョイナトランスフォーメー
ションを設定する場合は、ジョイナトランスフォーメーションにパーティションポイント
を追加することはできません。
ソート済みジョイナトランスフォーメーションのパー
ティション化
ソート済み入力を使用するジョイナトランスフォーメーションを追加した場合、ジョイナ
トランスフォーメーションがソート済みのデータを受け取っていることを検査する必要が
あります。ソースに大量のデータが含まれる場合、パーティション化を設定してパフォー
マンスを高めることができます。しかし、行を再配分するパーティションではソート済み
データの順序が変わる可能性があるため、ソート済みデータが正しく維持されるようにパ
ーティションを設定することが重要です。
例えば、ハッシュ自動キーパーティションポイントを使用した場合、Integration Service
によってハッシュ関数が使用され、複数のパーティション間でデータを分散する最良の方
法が決定されます。 ただし、この場合、ソート順が維持されないため、このタイプのパー
ティションポイントを使用するにあたってはパーティション化のガイドラインに従う必要
があります。
36
章 2: パーティションポイント
データを結合するとき、次のような方法でマスターパイプラインおよび明細パイプライン
のデータをパーティション化できます。
¨ 1:n。 マスタソースには1つのパーティションを、詳細ソースには複数のパーティショ
ンを使用します。マスタデータはIntegration Serviceによってパーティション間で再
分散されず、ソート順が維持されます。
¨ n:n。 マスタソースと詳細ソースで同数のパーティションを使用します。 n:nのパーテ
ィションを使用した場合、Integration Serviceによって複数のパーティションが同時
に処理されます。 ジョイナトランスフォーメーションで使用するパーティションタイ
プに応じてソート順が維持されるようにパーティションを設定する必要があります。
注:
1:nのパーティションを使用する場合は、ジョイナトランスフォーメーションにパー
ティションポイントを追加することはできません。ジョイナトランスフォーメーションに
パーティションポイントを追加した場合、Workflow Managerは、マスターパイプラインと
明細パイプラインの両方に同数のパーティションを追加します。
データをどこでソートするかによって、従うべきパーティション化のガイドラインが異な
ります。
¨ ソート済みフラットファイルの使用。 次のいずれかのパーティション化設定を使用し
ます。
- マスタパイプラインに 1つのフラットファイルが、明細パイプラインに複数のフラッ
トファイルが存在する場合は、1: nのパーティションを使用します。 ファイルごとに1
つのreaderスレッドを使用するようにセッションを設定します。
- マスターパイプラインと明細パイプラインに大きなフラットファイルが1つ存在する場
合は、n:nのパーティションを使用します。ソート済みのすべてのデータを最初のパー
ティションで渡し、他のパーティションでは空のファイルデータを渡すように各パー
ティションを設定します。
¨ ソート済みリレーショナルデータの使用。 次のいずれかのパーティション化設定を使
用します。
- マスターパイプラインと明細パイプラインには、 1: nのパーティションを使用しま
す。
- n:nパーティションの使用自動ハッシュキーパーティションを使用する場合は、ソート
済みのすべてのデータを最初のパーティションで渡すようにパーティションを設定し
ます。
¨ ソータトランスフォーメーションの使用。 n:nパーティションの使用。 ジョイナトラン
スフォーメーションに自動ハッシュキーパーティションを使用する場合は、各ソータト
ランスフォーメーションでも自動ハッシュキーパーティションポイントが使用されるよ
うに設定する必要があります。
ソートの基点とジョイナトランスフォーメーションの間には、パススルーパーティション
ポイントだけを追加するようにしてください。
ソート済みフラットファイルの使用
マスタパイプラインに1つのフラットファイルが、詳細パイプラインに複数のフラットファ
イルが存在する場合は、1: nのパーティションを使用します。1:nのパーティションを使用
した場合、Integration Serviceによってデータがパーティション間で再分散されないた
め、ソート順は維持されます。 マスターパイプラインと明細パイプラインに大きなフラッ
トファイルが1つずつ存在する場合は、 n:nのパーティションを使用し、ジョイナトランス
ジョイナトランスフォーメーションのパーティション化
37
フォーメーションにパススルーパーティションまたは自動ハッシュキーパーティションを
追加します。自動ハッシュキーパーティションポイントを追加する場合は、ソート順を維
持するため、ソート済みのすべてのデータを最初のパーティションで渡すようパーティシ
ョンを設定する必要があります。
1:nパーティションの使用
マスターパイプラインに1つのフラットファイルを、明細パイプラインに複数のフラットフ
ァイルを使用するセッションでは、マスターソースに1つのパーティションを使用し、明細
ファイルソースにn個のパーティションを使用します(1:n)。パススルーパーティション
ポイントは、明細ソース修飾子トランスフォーメーションに追加してください。ジョイナ
トランスフォーメーションにはパーティションポイントを追加しません。マスタソースに
対して1つのパーティションを作成した場合、ソート済みのデータがIntegration Service
によってパーティション間で再分散されないため、ソート順は維持されます。
明細パイプラインに同じ構造の複数のファイルが存在する場合は、次のガイドラインに従
ってこれらのファイルをジョイナトランスフォーメーションに渡します。
¨ 各パイプラインに1つのソースおよび1つのソース修飾子トランスフォーメーションを含
むマッピングを設定します。
¨ セッションプロパティの[マッピング]タブから[トランスフォーメーション]ビュー
を表示し、 [プロパティ]設定で各フラットファイルのパスおよびファイル名を指定
します。
¨ すべてのファイルについて、ソース定義で設定したものと同じファイルプロパティを使
用する必要があります。
¨ フラットファイル間でソート済みデータの範囲が重複していても構いません。ファイル
ごとに一意のデータ範囲を使用する必要はありません。
1:nパーティション化を使用してファイルデータをソートした場合、ジョイナトランスフォ
ーメーションによって結合タイプに応じて未ソートデータが出力される可能性がありま
す。 完全外部結合、または詳細な外部結合を使用した場合、未ソートデータの原因となる
一致しないマスタ行はIntegration Serviceによって最後に処理されます。
n:nパーティションの使用
ソート済みのフラットファイルデータを使用するセッションでは、マスターパイプライン
と明細パイプラインに対し、 n:nのパーティションを使用します。ジョイナトランスフォー
メーションでは、パススルーパーティションまたは自動ハッシュキーパーティションを追
加できます。ジョイナトランスフォーメーションでパススルーパーティションを追加する
場合は、マッピングでソート順を保持します。
ジョイナトランスフォーメーションにハッシュ自動キーパーティションポイントを追加す
る場合は、単一のパーティションで、ソート済みのすべてのデータをジョイナトランスフ
ォーメーションに渡すことにより、ソート順を保持することができます。ソート済みのデ
ータを1つのパーティションで渡した場合、Integration Serviceによりハッシュ関数を使
用してデータを再分散する際にソート順が保持されます。
ソート済みのすべてのデータをIntegration Serviceによって1つのパーティションで渡す
ためには、最初のパーティションでソート済みのファイルを、残りのパーティションでは
空のファイルを使用するようにセッションを設定します。
38
章 2: パーティションポイント
Integration Serviceにより、複数のパーティション間で行が再分散され、ソート済みデー
タが結合されます。
ソート済みリレーショナルデータの使用
リレーショナルデータを結合する場合、マスターパイプラインと明細パイプラインに 1 nの
パーティションを使用します。 1: nのパーティションを使用する場合は、ジョイナトラン
スフォーメーションにパーティションポイントを追加することはできません。 n:nのパーテ
ィションを使用した場合、ジョイナトランスフォーメーションにパススルーパーティショ
ンまたは自動ハッシュキーパーティションを追加できます。自動ハッシュキーパーティシ
ョンポイントを使用する場合は、ソート順を維持するため、ソート済みのすべてのデータ
を最初のパーティションで渡すようパーティションを設定する必要があります。
1:nパーティションの使用
ソート済みのリレーショナルデータを使用するセッションでは、マスターソースには1つの
パーティションを、明細ソースには n個のパーティションを使用します(1:n)。ソース修
飾子トランスフォーメーションにキー範囲またはパススルーパーティションポイントを追
加します。ジョイナトランスフォーメーションにはパーティションポイントを追加しませ
ん。マスタソースに対して1つのパーティションを作成した場合、データがIntegration
Serviceによってパーティション間で再分散されないため、ソート順は維持されます。
1:nパーティション化を使用してリレーショナルデータをソートした場合、ジョイナトラン
スフォーメーションによって結合タイプに応じて未ソートデータが出力される可能性があ
ります。 完全外部結合、または詳細な外部結合を使用した場合、未ソートデータの原因と
なる一致しないマスタ行はIntegration Serviceによって最後に処理されます。
n:nパーティションの使用
ソート済みのリレーショナルデータを使用するセッションでは、マスターパイプラインと
明細パイプラインに対しn:nのパーティションを使用し、ジョイナトランスフォーメーショ
ンにパススルーパーティションまたは自動ハッシュキーパーティションを追加します。ジ
ョイナトランスフォーメーションでパススルーパーティションを使用する場合は、マッピ
ングでソート済みデータを保持します。
自動ハッシュキーパーティションポイントを使用すると、ソート済みのすべてのデータを
単一のパーティションを介してジョイナトランスフォーメーションに渡すことにより、ソ
ート順を維持することができます。キー範囲パーティションポイントは、最初のパーティ
ションにすべてのソースデータが保持されるソース修飾子トランスフォーメーションに追
加します。ソート済みのデータを1つのパーティションで渡した場合、Integration
Serviceによりハッシュ関数を使用して複数のパーティション間でデータが再分散され、ソ
ート済みのデータが結合されます。
ソータトランスフォーメーションの使用
ソータトランスフォーメーションを使用してデータをソートするセッションでは、マスタ
ーパイプラインと明細パイプラインに対し、 n:nのパーティションを使用します。ソータト
ランスフォーメーションに自動ハッシュキーパーティションポイントを使用してデータを
グループ化します。ジョイナトランスフォーメーションには、パススルーパーティション
または自動ハッシュキーパーティションを追加できます。
ジョイナトランスフォーメーションのパーティション化
39
データは、Integration Serviceによって同じハッシュ値を持つパーティションへとグルー
プ化され、ソータトランスフォーメーションによってソートされてから、ジョイナトラン
スフォーメーションに渡されます。 Integration Serviceによって、ハッシュ自動キーパ
ーティションを使用して設定されたジョイナトランスフォーメーションが処理される際、
各ソータトランスフォーメーションからのデータをルーティングするときに使用したパー
ティションと同じパーティションを使用してソート済みのデータを処理することによっ
て、ソート順が保持されます。
注: 最適なパフォーマンスを得るには、ソート済みのフラットファイルまたはソート済み
のリレーショナルデータを使用します。必要に応じて、マッピングにソータトランスフォ
ーメーションを追加した場合の処理オーバーヘッドを計算してください。
パーティションを使用したソート済みジョイナトラン
スフォーメーションの最適化
ソート済みジョイナトランスフォーメーションにパーティションを使用する場合、データ
のグループ化や、n:nパーティションの使用によって、パフォーマンスを最適化できる場合
があります。
ソート基点の上流への自動ハッシュキーパーティションの追加
ソート済みジョイナトランスフォーメーションをパーティション化するとき、適切な結果
と最適なパフォーマンスを両立するには、データをグループ化しソートしておく必要があ
ります。データをグループ化するには、同じキー値を持つ行を確実に同じパーティション
にルーティングする必要があります。複数のパーティションに対してデータを均等にグル
ープ化し配分するための最も効果的な方法は、自動ハッシュキーまたはキー範囲のパーテ
ィションポイントを、ソート基点より前に追加することです。このパーティションポイン
トを、データのソート前に追加することによって、各グループ内でデータを確実にグルー
プ化しソートすることができます。
n:nパーティションの使用
ソート済みジョイナトランスフォーメーションでのパフォーマンスを向上させるには、 n:n
のパーティションを使用します。 n:nのパーティションが使用されている場合、ジョイナト
ランスフォーメーションはマスター行と明細行を同時に読み込むため、すべてのマスター
データをキャッシュする必要はありません。これにより、メモリの使用量が減り、高速な
処理が可能になります。 1: nのパーティションが使用されている場合、ジョイナトランス
フォーメーションは、マスターパイプラインからのすべてのデータをキャッシュに格納
し、メモリのキャッシュが容量を越えた場合、キャッシュをディスクに書き込みます。ジ
ョイナトランスフォーメーションは、明細パイプラインからデータを受け取った後、マス
ターパイプラインと明細パイプラインとを比較するためにディスクからデータを読み込む
必要があります。
40
章 2: パーティションポイント
ルックアップトランスフォーメーションのパ
ーティション化
ルックアップトランスフォーメーションに対してキャッシュのパーティション化を設定で
きます。静的ルックアップキャッシュおよび動的ルックアップキャッシュ用に複数のパー
ティションを作成できます。
パイプラインルックアップトランスフォーメーションのキャッシュは、ルックアップトラ
ンスフォーメーションを含むパイプラインとは独立したパイプラインに構築されます。両
方のパイプラインに複数のパーティションを作成できます。
ルックアップトランスフォーメーションのキャッシュ
のパーティション化
キャッシュのパーティション化は、静的キャッシュ、動的キャッシュ、名前付きキャッシ
ュ、名前なしキャッシュで使用します。接続されたルックアップトランスフォーメーショ
ンにパーティションポイントを作成するとき、以下に示す条件でキャッシュのパーティシ
ョン化を使用します。
¨ ルックアップトランスフォーメーションに自動ハッシュキーパーティションタイプを使
用する。
¨ ルックアップ条件に等価演算子だけが含まれる。
¨ データベースが大文字と小文字を比較するように設定されている。
例えば、ルックアップ条件に文字列ポートが含まれ、データベースが大文字と小文字を
比較しないように設定されている場合、Integration Serviceによって、キャッシュの
パーティション化は実行されずに、次のメッセージがセッションログに書き込まれま
す。
CMN_1799 Cache partitioning requires case sensitive string comparisons. Lookup will not use
partitioned cache as the database is configured for case insensitive string comparisons.
ルックアップトランスフォーメーションにハッシュ自動キーパーティションポイントを作
成する場合、Integration Serviceによりキャッシュのパーティション化が使用されます。
Integration Serviceによりキャッシュパーティションが作成された場合で、任意のパーテ
ィションの最初の行がルックアップトランスフォーメーションに到達した場合、ルックア
ップトランスフォーメーションのキャッシュの作成が開始されます。 コンカレントキャッ
シュ用にルックアップトランスフォーメーションを設定した場合、Integration Serviceに
よってパーティションのすべてのキャッシュが同時に構築されます。
ルックアップトランスフォーメーションのパーティション化
41
パーティション化キャッシュの共有
パーティション化されたルックアップキャッシュを共有する場合は、次のガイドラインに
従います。
¨ ルックアップトランスフォーメーションでは、次の条件が満たされている場合、パーテ
ィション化されたキャッシュを共有できます。
- キャッシュの構造が同一である。最初の共有トランスフォーメーションのルックアッ
プ/出力ポートが、それ以降のトランスフォーメーションのルックアップ/出力ポート
と一致している必要があります。
- 各トランスフォーメーションに同じルックアップ条件が存在し、ルックアップ条件カ
ラムが同じ順序で配置されている。
¨ 非パーティション化キャッシュとの間で、パーティション化されたキャッシュを共有す
ることはできません。
¨ ルックアップキャッシュをターゲットロード順グループ間で共有するには、同じパーテ
ィション数のターゲットロード順グループを設定する必要があります。
¨ 名前なしキャッシュを共有するルックアップトランスフォーメーション間で
Integration Serviceによって不一致が検出された場合、キャッシュファイルが再構築
されます。
¨ 名前付きキャッシュを共有するルックアップトランスフォーメーション間で
Integration Serviceによって不一致が検出された場合、そのセッションは失敗しま
す。
パイプラインルックアップトランスフォーメーション
のキャッシュのパーティション化
パイプラインルックアップトランスフォーメーションは、キャッシュに対してデフォルト
で有効になっています。Integration Serviceでルックアップキャッシュを構築するとき、
ルックアップソースをパーティション化すると、パフォーマンスが向上します。ルックア
ップトランスフォーメーションは、ルックアップソースがキャッシュされたときに行の処
理を開始します。
パイプラインルックアップトランスフォーメーションを設定すると、ルックアップソース
およびソース修飾子はルックアップトランスフォーメーションとは別のパイプラインに含
められます。このパイプラインは部分パイプラインです(ターゲットが含まれないた
め)。Integration Serviceでは、この部分パイプライン内のソースデータを読み込みま
す。パイプラインに複数のパーティションを作成すると、処理のパフォーマンスが向上し
ます。
Integration Serviceでキャッシュを構築するとき、部分パイプラインのソースデータが他
のパイプラインに渡されます。部分パイプライン内のパーティションの数がルックアップ
トランスフォーメーションのパーティションの数と異なる場合、Integration Serviceによ
ってパーティションポイントが作成されます。ルックアップトランスフォーメーションに
自働ハッシュキーパーティションポイントが含まれる場合、キャッシュにはルックアップ
トランスフォーメーションと同じ数のパーティションが作成されます。それ以外の場合
は、キャッシュのパーティションは1つだけです。
42
章 2: パーティションポイント
以下の図に、パイプラインルックアップトランスフォーメーションおよびソース修飾子ル
ックアップソースを含むセッションのパーティションを示します。
Integration Serviceでは、3つのパーティション内のEmployee行を処理します。ルックア
ップトランスフォーメーションを含むパイプラインには、4つのパーティションがありま
す。ルックアップトランスフォーメーションには自働ハッシュキーパーティションポイン
トが含まれるため、キャッシュは4つのパーティションにパーティション化されます。
シーケンスジェネレータトランスフォーメー
ションのパーティション化
未キャッシュのシーケンスジェネレータトランスフォーメーションを使用するグリッド上
のセッションに複数のパーティションを設定する場合、Integration Serviceによって各パ
ーティションに生成されるシーケンス番号は連続しません。
ソータトランスフォーメーションのパーティ
ション化
ソータトランスフォーメーションを使用したセッションで、複数のパーティションを設定
した場合、Integration Serviceによって各パーティション内のデータが別々にソートされ
ます。 ソータトランスフォーメーションでパーティションポイントを追加する場合、
Workflow Managerを使って、自動ハッシュキー、キー範囲パーティション、またはパスス
ルーパーティション機能を選択できます。
シーケンスジェネレータトランスフォーメーションのパーティション化
43
自動ハッシュキーは、ソート済み入力を使用するように設定されたアグリゲータトランス
フォーメーションの前にソータトランスフォーメーションを置く場合に使用します。自動
ハッシュキーは、同じ値を持つ行を、パーティションキーに基づいて同じパーティション
の中でグループ化します。行をグループ化した後、Integration Serviceによってソータト
ランスフォーメーションへ行が渡されます。 Integration Serviceによって各パーティシ
ョン内のデータが別々に処理されますが、ハッシュ自動キーパーティション化によってす
べてのソースデータは正しくソートされます。それは一致する値を持つ行は同じパーティ
ション内で処理されるからです。 アグリゲータトランスフォーメーションにあるデフォル
トのパーティションポイントは削除できます。
パーティション化されたセッション内の行すべてを複数のパーティションから1つのソート
用パーティションへ送りたい場合は、キー範囲パーティションを使用します。すべての行
を単一のソート用パーティションに統合した場合、Integration Serviceではデータをすべ
て一緒に処理できます。
パイプライン内で既にハッシュパーティション機能を使用している場合は、パススルーパ
ーティション機能を使用します。この機能により、ソータトランスフォーメーションに渡
されるデータは複数のパーティションにおいて正しくグループ化されます。パススルーパ
ーティション機能は、パイプライン内のパーティションの数を増やさずにセッションのパ
フォーマンスを向上させることができます。
ソータトランスフォーメーションの作業用ディレクト
リ設定
パイプライン内の各ソータトランスフォーメーションについて、Integration Serviceによ
って一時ファイルが作成されます。 ソートの実行中は、このファイルにデータが読み込み
および書き込みされます。一時ファイルは、Integration Serviceによってソータトランス
フォーメーションの作業ディレクトリに格納されます。
デフォルトでは、ソータトランスフォーメーションの全パーティションの作業ディレクト
リが$PMTempDirに設定されます。セッションのプロパティで各パーティションに別々の作
業ディレクトリを指定できます。
XMLジェネレータトランスフォーメーション
のパーティション化
XMLを複数のパーティションで作成した場合、各パーティションに対して常に個別の文書を
生成します。これは、コミット時のフラグの値に関係なく発生します。XMLジェネレータト
ランスフォーメーションでキー範囲パーティション化を設定した場合、トランスフォーメ
ーションが孤立した行を受信し、セッションが失敗する可能性があります。これは、XMLジ
ェネレータトランスフォーメーションによって行の間のプライマリキーと外部キーの関係
が作成するために発生することがあります。 キー範囲パーティション化によって、親の行
と子の行を区切ることができます。
44
章 2: パーティションポイント
トランスフォーメーションに関する制限
パーティション数に関する一部の制約は、パイプラインにおけるトランスフォーメーショ
ンのタイプによって決まります。この制約は、再利用可能なトランスフォーメーション、
マッピングやマプレットで作成されるトランスフォーメーション、およびショートカット
から参照するトランスフォーメーションやマプレット、マッピングなど、あらゆるトラン
スフォーメーションに適用されます。
以下の表に、トランスフォーメーションに関するパーティションの数の制限を示します。
トランスフォー
メーション
制限
カスタムトラン
スフォーメーシ
ョン
デフォルトでは、パイプラインにカスタムトランスフォーメ
ーションが含まれる場合に指定できるパーティションの数は
1つだけです。
ただし、このトランスフォーメーションでは、複数のパーテ
ィションを許可するオプションが[プロパティ]タブにあり
ます。このオプションを有効にすると、このトランスフォー
メーションに複数のパーティションを指定できます。カスタ
ムトランスフォーメーションプロシージャがデータクレンジ
ングなどの手続きをすべての入力データの総合に基づいて実
行する場合には、[パーティション化可能]を選択しませ
ん。
エクスターナル
プロシージャト
ランスフォーメ
ーション
デフォルトでは、パイプラインにエクスターナルプロシージ
ャトランスフォーメーションが含まれる場合に指定できるパ
ーティションの数は1つだけです。
ジョイナトラン
スフォーメーシ
ョン
パイプラインにジョイナトランスフォーメーションのマスタ
ーソースが含まれる場合、指定できるパーティションは1つ
だけで、このジョイナトランスフォーメーションにパーティ
ションポイントを追加することはできません。
XMLターゲットイ
ンスタンス
パイプラインにXMLターゲットが含まれる場合、指定できる
パーティションは1つだけです。
このトランスフォーメーションでは、複数のパーティション
を許可するオプションが[プロパティ]タブにあります。こ
のオプションを有効にすると、このトランスフォーメーショ
ンに複数のパーティションを指定できます。
ノーマライザおよびシーケンスジェネレータトランスフォーメーションが生成するシーケ
ンス番号は、パーティション化されたソースの場合はシーケンシャルでないことがありま
すが、一意になっています。
数値関数に関する制限
数値関数のCUME、MOVINGSUM、およびMOVINGAVGは、行単位で合計および平均を計算しま
す。パイプラインをパーティション化する方法に応じて、これらの関数のいずれかを含む
トランスフォーメーションをデータ行が通過する順序が変化する場合があります。したが
って、CUME、MOVINGSUM、またはMOVINGAVG関数を使用する複数のパーティションを持つセ
ッションは、常に同じ計算結果を返すわけではありません。
トランスフォーメーションに関する制限
45
第 3 章
パーティションタイプ
この章では、以下の項目について説明します。
¨ パーティションタイプの概要, 46 ページ
¨ パーティションタイプの設定, 48 ページ
¨ データベースパーティション化のパーティションタイプ, 51 ページ
¨ ハッシュ自動キーのパーティションタイプ, 55 ページ
¨ ハッシュユーザーキーパーティションタイプ, 56 ページ
¨ キー範囲パーティションタイプ, 57 ページ
¨ パススルーパーティションタイプ, 60 ページ
¨ ラウンドロビンパーティションタイプ, 61 ページ
パーティションタイプの概要
PowerCenter Integration Serviceでは、各パーティションポイントでデフォルトのパー
ティションタイプが作成されます。パーティション化オプションを使用すると、パーティ
ションタイプを変更できます。パーティションタイプは、パーティションポイントでパー
ティションにデータを配分する方法を制御します。
パイプラインにパーティション化情報を設定する場合、パイプライン上の各パーティショ
ンポイントにパーティションタイプを定義する必要があります。パーティションタイプに
より、PowerCenter Integration Serviceがパーティションポイント間にデータを再配分
する方法が決定します。
Workflow Managerでは、以下のパーティションタイプを定義できます。
¨ データベースパーティション化。IBM DB2またはOracleシステムに対してクエリが実行
され、テーブルのパーティション情報が取得されます。データベースの対応するノード
からパーティション化データが読み込まれます。複数ノードのテーブル領域に格納され
たOracleソースインスタンスまたはIBM DB2ソースインスタンスでは、データベースパ
ーティション化を使用します。DB2ターゲットでは、データベースパーティション化を
使用します。
46
¨ ハッシュパーティション化。行をグループ別にパーティションに配分するには、ハッシ
ュパーティション化を使用します。例えば品目IDで品目をソートする必要があるもの
の、特定のID番号を持つ品目の数が判らない場合などです。
使用できるハッシュパーティション化には、次の種類があります。
- ハッシュ自動キー。グループ化されたポートまたはソート済みのポートがすべて複合
パーティションキーとして使用されます。ランクトランスフォーメーション、ソータ
トランスフォーメーション、未ソートのアグリゲータトランスフォーメーションで、
ハッシュ自動キーパーティション化を使用する必要がある場合があります。
- ハッシュユーザーキー。PowerCenter Integration Serviceによりハッシュ関数が使
用され、データ行がパーティション間でグループ化されます。パーティションキーを
生成するポート数を定義します。
¨ キー範囲。複合パーティションキーを形成するポートを1つ以上指定します。 各ポート
に対して指定した範囲に基づいて各パーティションにデータが渡されます。パイプライ
ン上のソースまたはターゲットがキー範囲によってパーティション化される場合に、キ
ー範囲パーティション化を使用します。
¨ パススルー。1つのパーティションポイントのすべての行が、再配分されずに次のパー
ティションポイントに渡されます。パフォーマンスを向上させるために新しいパイプラ
インステージを作成して、パーティション間のデータの分散を変更しない場合に、パス
スルーパーティション化を選択します。
¨ ラウンドロビン。1つ以上のパーティションにデータのブロックが配分されます。ラウ
ンドロビンパーティション化は、各パーティションでブロックの数やサイズに基づいて
行を処理する場合に使用します。
パイプラインでのパーティションタイプの設定
パイプライン上の様々なポイントに、様々なパーティションタイプを作成できます。
以下の図に、セッションのパフォーマンスを向上させるために異なったパーティションタ
イプを作成できるマッピングを示します。
このマッピングでは、品目に関するデータが読み出され、卸売原価と価格の平均値が算出
されます。このマッピングではサイズの異なる3つのフラットファイルから品目情報を読み
込み、製造中止品目をフィルタで除外する必要があります。説明を使ってアクティブな品
目をソートし、平均価格と平均卸売原価を算出して、結果をリレーショナルデータベース
に書き込みます。
ソータトランスフォーメーションにおける自動ハッシュキーパーティション化により、同
じ説明を持つ品目を含む行がすべて同じパーティションに送られるため、アグリゲータト
ランスフォーメーションにあるデフォルトのパーティションポイントを削除できます。し
たがって、アグリゲータトランスフォーメーションでは1つのパーティションで同じ説明を
持つすべての品目に関するデータが受信され、この品目の平均原価と平均価格が正しく算
出されます。
パーティションタイプの概要
47
セッションでこのマッピングを使用する場合、パイプライン上の以下のようなパーティシ
ョンポイントで異なるパーティションタイプを定義することで、セッションのパフォーマ
ンスを向上させることができます。
¨ ソース修飾子。3つのフラットファイルから同時にデータを読み込むには、ソース修飾
子に対して3つのパーティションを指定する必要があります。 デフォルトのパーティシ
ョンタイプであるパススルーパーティション化を受け入れます。
¨ フィルタトランスフォーメーション。ソースファイルのサイズが変化するため、各パー
ティションで処理するデータの量が異なります。フィルタトランスフォーメーションに
1つのパーティションポイントを設定し、フィルタトランスフォーメーションに送られ
る負荷を分散するために、ラウンドロビンパーティション化を選択します。
¨ ソータトランスフォーメーション。ソータトランスフォーメーションとアグリゲータト
ランスフォーメーションで重複するグループを無くすために、ソータトランスフォーメ
ーションでハッシュ自動キーパーティション化を使用します。これにより、
Integration Serviceはソータトランスフォーメーションとアグリゲータトランスフォ
ーメーションで行が処理される前に、同じ説明を持つすべての項目が同じパーティショ
ンにグループ化されます。アグリゲータトランスフォーメーションにあるデフォルトの
パーティションポイントは削除できます。
¨ ターゲット。ターゲットテーブルはキー範囲によりパーティション化されるため、ター
ゲットにキー範囲パーティション化を指定してターゲットへのデータの書き込みを最適
化します。
パーティションタイプの設定
Workflow Managerにより、パイプライン上の各パーティションポイントにデフォルトのパ
ーティションタイプが設定されます。トランスフォーメーションのトランスフォーメーシ
ョン範囲がすべての入力ではない限り、Workflow Managerによって、すべてのパーティシ
ョンポイントのデフォルトのパーティションタイプとしてパススルーが指定されます。 デ
フォルトのタイプは変更できます。
例えば、ソース修飾子とターゲットインスタンスに対しては、Workflow Managerによって
パススルーパーティション化が指定されます。 トランスフォーメーション範囲がすべての
入力の場合、ランクトランスフォーメーションと未ソートアグリゲータトランスフォーメ
ーションに対して、Workflow Managerによってハッシュ自動キーパーティション化が指定
されます。
トランザクションジェネレータ(コミットを生成するアクティブソース)のダウンストリ
ームにあり、ターゲット(トランスフォーメーション範囲がトランザクションのトランス
フォーメーション)のアップストリームにあるすべてのトランスフォーメーションには、
パススルーパーティションタイプを指定する必要があります。また、制約に基づくロード
を使用するようセッションを設定した場合、最後のアクティブソースの下流にあるすべて
のトランスフォーメーションに対し、パススルーパーティションタイプを指定する必要が
あります。
ワークフローリカバリが有効化されている場合、Workflow Managerは、パーティションポ
イントがアグリゲータトランスフォーメーションまたはランクトランスフォーメーション
である場合を除き、パーティションタイプをパススルーに設定します。
48
章 3: パーティションタイプ
以下のトランスフォーメーションに対してはパーティションポイントを作成することがで
きません。
¨ ソース定義
¨ シーケンスジェネレータ
¨ XMLパーサー
¨ XMLターゲット
¨ 接続されていないトランスフォーメーション
以下の表に、パイプライン上の異なるパーティションポイントについて、有効なパーティ
ションタイプおよびデフォルトのパーティションタイプを示します。
表 1.
パーティションポイントの有効なパーティションタイプ
トランスフォーメー
ション
(パーティションポ
イント)
ソース修飾子
ラウン
ドロビ
ン
ハッ
シュ
自動
キー
ハッ
シュ
ユー
ザー
キー
キー
範囲
×
×
×
○
パス
スル
ー
データベ
ース
○
○
(リレーショナルソ
ース)
ソース修飾子
パーティ
ション化
(Oracle
、DB2)
×
×
×
×
○
×
Web Serviceソース
修飾子
×
×
×
×
○
×
XMLソース修飾子
×
×
×
×
○
×
ノーマライザ
×
×
×
×
○
×
○
×
○
○
○
×
アグリゲータ(ソー
ト済み)
×
×
×
×
○
×
アグリゲータ(未ソ
ート)
×
○
×
×
○
×
カスタム
○
×
○
○
○
×
データマスク
○
×
○
○
○
×
式
○
×
○
○
○
×
(フラットファイル
ソース)
(COBOLソース)
ノーマライザ
(リレーショナル)
パーティションタイプの設定
49
トランスフォーメー
ション
ラウン
ドロビ
ン
ハッ
シュ
自動
キー
ハッ
シュ
ユー
ザー
キー
キー
範囲
パス
スル
ー
データベ
ース
エクスターナルプロ
シージャ
○
×
○
○
○
×
フィルタ
○
×
○
○
○
×
HTTP
×
×
×
×
○
×
Java
○
×
○
○
○
×
ジョイナ
×
○
×
×
○
×
ルックアップ
○
○
○
○
○
×
ランク
×
○
×
×
○
×
ルータ
○
×
○
○
○
×
ソータ
×
○
×
○
○
×
ストアドプロシージ
ャ
○
×
○
○
○
×
トランザクション制
御
○
×
○
○
○
×
共有体
○
×
○
○
○
×
構造化されていない
データ
○
×
○
○
○
×
アップデートストラ
テジ
○
×
○
○
○
×
Webサービスコンシ
ューマ
×
×
×
×
○
×
XMLジェネレータ
×
×
×
×
○
×
XMLパーサー
×
×
×
×
○
×
リレーショナルター
ゲット定義
○
×
○
○
○
○(DB2)
(パーティションポ
イント)
50
章 3: パーティションタイプ
パーティ
ション化
トランスフォーメー
ション
ラウン
ドロビ
ン
ハッ
シュ
自動
キー
ハッ
シュ
ユー
ザー
キー
キー
範囲
フラットファイルタ
ーゲット定義
○
×
○
Webサービスターゲ
ット
×
×
×
(パーティションポ
イント)
パス
スル
ー
データベ
ース
○
○
×
×
○
×
パーティ
ション化
以下のトランスフォーメーションの場合、トランスフォーメーション範囲がトランザクシ
ョンの場合はパススルーがデフォルトのパーティションタイプで、トランスフォーメーシ
ョン範囲がすべての入力の場合はハッシュ自動キーがデフォルトのパーティションタイプ
です。
¨ アグリゲータ(未ソート)
¨ ジョイナ
¨ ランク
¨ ソータ
データベースパーティション化のパーティシ
ョンタイプ
ソースおよびターゲットデータベースに対してデータベースパーティション化用のパーテ
ィションタイプを使用することにより、セッションのパフォーマンスを最適化できます。
ソースデータベースのパーティション化を使用する場合、Integration Serviceは、データ
ベースシステムにテーブルパーティション情報を要求し、データをセッションパーティシ
ョンに取り出します。 ターゲットデータベースのパーティション化を使用する場合、
Integration Serviceは対応するデータベースパーティションノードにデータをロードしま
す。
Oracleソース、IBM DB2ソース、およびIBM DB2ターゲットに対してデータベースパーティ
ション化を使用します。パイプラインのパーティション数とデータベースのパーティショ
ン数は任意です。ただし、パイプラインのパーティション数とデータベースのパーティシ
ョン数が同じである場合、より高いパフォーマンスを得ることができます。
範囲パーティション化を使用しているIBM DB2ソースおよびターゲットでは、データベース
パーティション化によってパフォーマンスを向上させることができます。
複合パーティション化を使用するOracleソースの場合、パイプラインパーティションの数
をデータセットのサブパーティションの数に一致させるとパフォーマンスを向上させるこ
とができます。たとえば、Oracleソースが3つのパーティションを含み、そのパーティショ
ンごとに2つのサブパーティションが含まれる場合、ソースのパイプラインパーティション
の数を6に設定します。
データベースパーティション化のパーティションタイプ
51
データベースソースのパーティション化
ソースデータベースのパーティション化を使用する場合、Integration Serviceにより、パ
ーティション情報のデータベースシステムカタログに対しクエリが行われます。 セッショ
ンパーティション間のデータベースパーティションからのデータが分散されます。
セッションにデータベースよりも多くのパーティションがある場合、Integration Service
によってデータベースパーティションごとにSQLが生成され、次のパーティションポイント
でデータがセッションパーティションに再分散されます。
1つのソースでのデータベースのパーティション化
1つのソースを持つソース修飾子でデータベースパーティション化を使用する場合、
Integration ServiceによりデータベースパーティションごとにSQLクエリが生成され、デ
ータベースパーティションからのデータがセッションパーティション間に均等に分散され
ます。
例えば、セッションに3つのパーティションがあり、データベースに5つのパーティション
がある場合、Integration Serviceにより、そのセッションパーティション内でSQLクエリ
が、そのデータベースパーティションに対して実行されるとします。 最初のセッションパ
ーティションと2番目のセッションパーティションは、2つのデータベースパーティション
からデータを受け取ります。3番目のセッションパーティションは、1つのデータベースパ
ーティションからデータを受け取ります。
Oracleデータベースを使用する場合は、Integration Serviceにより、以下の文と同様の
SQL文がパーティション1に対して生成されます。
SELECT <column list> FROM <table name> PARTITION <database_partition1 name> UNION ALL
SELECT <column list> FROM <table name> PARTITION <database_partition4 name> UNION ALL
IBM DB2データベースを使用する場合は、Integration Serviceにより、以下と同様のSQL
文がパーティション1に対して作成されます。
SELECT <column list> FROM <table name>
WHERE (nodenumber(<column 1>)=0 OR nodenumber(<column 1>) = 3)
Oracleソースに5つのパーティション(1-5)があり、各パーティション内に2つのサブパー
ティション(aとb)があり、1つのセッションに3つのパーティションがある場合、
Integration Serviceにより、データベースのサブパーティションに対してセッションパー
ティション内でSQLクエリが実行されます。 最初のセッションパーティションと2番目のセ
ッションパーティションは、4つのデータベースサブパーティションからデータを受け取り
ます。 3番目のセッションパーティションは、2つのデータベースサブパーティションから
データを受け取ります。
Integration Serviceにより、以下の文と同様のSQL文がパーティション1に対して生成さ
れます。
SELECT
SELECT
SELECT
SELECT
<column
<column
<column
<column
list>
list>
list>
list>
FROM
FROM
FROM
FROM
<table
<table
<table
<table
name>
name>
name>
name>
SUBPARTITION
SUBPARTITION
SUBPARTITION
SUBPARTITION
<database_subpartition1_a
<database_subpartition1_b
<database_subpartition4_a
<database_subpartition4_b
name>
name>
name>
name>
UNION
UNION
UNION
UNION
ALL
ALL
ALL
ALL
複数のソースでのソース修飾子のパーティション化
リレーショナルソース修飾子では、複数のソーステーブルからのデータを受け取ることが
できます。Integration Serviceでは、データベースパーティションのSQLクエリは、ほと
52
章 3: パーティションタイプ
んどのパーティションを持つデータベーステーブル内のパーティションの数に基づいて作
成されます。 データベースパーティションからデータを取得するためのSQL結合条件を作
成します。
たとえば、ソース修飾子は2つのソーステーブルからデータを受け取ります。各ソーステー
ブルには2つのパーティションがあります。セッションに3つのパーティションがあり、デ
ータベーステーブルに2つのパーティションがある場合、セッションパーティションの1つ
はデータを受け取りません。
Oracleの場合、Integration Serviceでは以下のSQL文が生成されます。
Session Partition 1:
SELECT <column list> FROM t1 PARTITION (p1), t2 WHERE <join clause>
Session Partition 2:
SELECT <column list> FROM t1 PARTITION (p2), t2 WHERE <join clause>
Session Partition 3:
No SQL query.
IBM DB2の場合、Integration Serviceでは以下のSQL文が生成されます。
Session Partition 1:
SELECT <column list> FROM t1,t2 WHERE ((nodenumber(t1 column1)=0) AND <join clause>
Session Partition 2:
SELECT <column list> FROM t1,t2 WHERE ((nodenumber(t1 column1)=1) AND <join clause>
Session Partition 3:
No SQL query.
ソースデータベースのパーティション化でのIntegration
Serviceの処理
Integration Serviceでは、データベースパーティション化について以下のルールが使用さ
れます。
¨ OracleとIBM DB2以外のデータベースにデータベースパーティション化を指定する場
合、Integration Serviceにより1つのパーティションでデータが読み込まれ、メッセー
ジがセッションログに書き込まれます。
¨ セッションのパーティション数がデータベースのテーブルのパーティション数よりも大
きい場合、超過しているパーティションはデータを受け取りません。セッションログで
は、どのパーティションがデータを受け取らないかが記述されます。
¨ セッションのパーティション数がデータベースのテーブルのパーティション数よりも小
さい場合、データはセッションパーティションに均等に配分されます。一部のセッショ
ンパーティションは、複数のデータベースパーティションからデータを受け取ります。
¨ データベースパーティション化を動的パーティションと共に使用する場合、
Integration Serviceにより、セッションの開始時にセッションのパーティション数が
決定されます。
¨ パーティション化を行ったセッションのパフォーマンスは、データベースパーティショ
ン内のデータ分散に応じて異なります。Integration Serviceにより、データベースパ
ーティションに対してSQLクエリが生成されます。 このSQLクエリは、共有体コマンド
またはjoinコマンドを実行します。これにより、パフォーマンスに影響を与える大きな
クエリ文になる場合があります。
データベースパーティション化のパーティションタイプ
53
ソースデータベースのパーティション化に関するルールおよび
ガイドライン
リレーショナルソースでデータベースパーティション化パーティションタイプを使用する
場合は、次の規則およびガイドラインに従ってください。
¨ ソースベースのコミット、ユーザー定義のコミット、制約べースのロード、ワークフロ
ーリカバリのいずれかを使用するようにセッションを設定した場合、データベースパー
ティション化を使用することはできません。
¨ データベースパーティション化のためにソース修飾子を設定した場合、以下の状況で
は、Integration Serviceによりパススルーパーティション化に戻されます。
- データベーステーブルが1つのデータベースパーティションに格納されている。
- デバッグモードでセッションを実行する。
- データベースパーティション化を、1つのパーティションを持つセッションに対して指
定する。
- プッシュダウンの最適化を使用する。プッシュダウンの最適化は、他のパーティショ
ンタイプで使用できます。
¨ データベーステーブルを読み込むSQLオーバーライドを作成し、データベースパーティ
ション化を設定した場合、Integration Serviceはパススルーパーティション化に戻
り、メッセージをセッションログに書き込みます。
¨ ユーザー定義結合を作成した場合、Integration Serviceによって、各パーティション
に対して生成するSQL文に、この結合が追加されます。
¨ ソースフィルタを作成した場合、Integration Serviceによって、各パーティションに
対してSQLクエリのWHERE句に、このソースフィルタが追加されます。
ターゲットデータベースのパーティション化
ターゲットデータベースのパーティション化は、IBM DB2データベースに対してのみ使用で
きます。複数ノードのテーブル領域に格納されたIBM DB2テーブルにデータをロードする
と、データベースパーティション化パーティションタイプを使用することにより、セッシ
ョンのパフォーマンスを最適化できます。データベースパーティション化を使用した場
合、Integration Serviceによって、テーブルのパーティション情報のためにDB2システム
に対してクエリが行われ、パーティション化データがターゲットデータベースで対応する
ノードにロードされます。
DB2以外のターゲットに対してデータベースパーティション化を使用した場合、デフォルト
では、Integration Serviceはセッションに失敗します。 ただし、DB2以外のリレーショ
ナルターゲットに対してデータベースパーティション化を使用した場合、デフォルトでパ
ススルーパーティション化が使用されるようにIntegration Serviceを設定することができ
ます。 AdministratorツールでIntegration Serviceプロパティ、
TreatDBPartitionAsPassThroughをはいに設定します。
パイプラインのパーティション数やデータベースのノード数に関係なく、データベースパ
ーティション化をターゲットパーティションタイプとして指定できます。ただし、パイプ
ラインのパーティション数とデータベースのノード数が同じである場合、より高いロード
パフォーマンスを得ることができます。
54
章 3: パーティションタイプ
ターゲットデータベースのパーティション化に関するルールお
よびガイドライン
データベースターゲットでデータベースパーティション化を使用する場合は、次の規則お
よびガイドラインに従ってください。
¨ ソースベースのコミット、ユーザー定義のコミット、制約べースのロード、セッション
リカバリのいずれかを使用するようにセッションを設定した場合、データベースパーテ
ィション化を使用することはできません。
¨ ターゲットテーブルが範囲によってパーティション化されている場合、データベースパ
ーティション化を使用することはできません。 ターゲットテーブルが範囲によってパ
ーティション化されている場合は、パススルーパーティション化またはキー範囲パーテ
ィション化を使用します。
¨ ターゲットテーブルに、パーティションキーが含まれている必要があります。また、タ
ーゲットインスタンスに含まれるすべての非NULLパーティションキーカラムを、マッピ
ング内のトランスフォーメーションにリンクさせる必要があります。
¨ IBM DB2ターゲットテーブルのパーティションキーがBigint型のカラムの場合、セッシ
ョンに対して高精度10進演算を有効にします。パーティションキーがBigintカラムであ
り、かつセッションに対して高精度を有効にしない場合は、Integration Serviceでセ
ッションが失敗することがあります。
¨ DB2バルクロードに複数のパーティションを作成する場合は、ターゲットパーティショ
ンタイプにデータベースパーティション化を使用します。他のパーティションタイプを
選択した場合、Integration Serviceが通常のロードに戻り、セッションログに以下の
メッセージが書き込まれます。
ODL_26097 Only database partitioning is support for DB2 bulk load. Changing target load type
variable to Normal.
¨ データベースパーティション化を使用するようにセッションを設定した場合、以下の状
況では、Integration Serviceによってパススルーパーティション化に戻されます。
- DB2ターゲットテーブルが1つのノードに格納されている。
- デバッガを使用したデバッグモードでセッションを実行した。
- データベースパーティション化のパーティションタイプをパススルーパーティション
化として扱うようにIntegration Serviceを設定して、DB2以外のリレーショナルター
ゲットに対してデータベースパーティション化を使用する。
ハッシュ自動キーのパーティションタイプ
ハッシュ自動キーパーティション化を、ランクトランスフォーメーション、ソータトラン
スフォーメーション、ジョイナトランスフォーメーション、および未ソートアグリゲータ
トランスフォーメーションで(またはそれより前で)使用します。これにより、行がこれ
らのトランスフォーメーションに入力される前に適切にグループ化されるようにします。
ハッシュ自動キーのパーティションタイプ
55
以下の図に、ハッシュ自動キーパーティション化を含むマッピングを示します。 行は、
Integration Serviceによって、ソータおよびアグリゲータトランスフォーメーションに入
力される前にグループに応じて各パーティションに分散されます。
このマッピングでは、ソータトランスフォーメーションによって品目が品目の説明別にソ
ートされます。2つ以上のソースファイルに同じ説明を持つ品目が存在すれば、各パーティ
ションに同じ説明を持つ品目が含まれます。自動ハッシュキーパーティション化を使用し
なければ、アグリゲータトランスフォーメーションで各品目の平均原価と平均価格が誤っ
て算出される場合があります。
原価と価格の計算が間違わないようにするためには、ソータトランスフォーメーションに
パーティションポイントを設定し、パーティションタイプを自動ハッシュキーに設定しま
す。これを行う場合、Integration Serviceにより、同じ説明を持つすべての項目が1つの
パーティション内でソータおよびアグリゲータトランスフォーメーションに送られるよう
にデータが再分散されます。
ハッシュユーザーキーパーティションタイプ
ハッシュユーザーキーパーティション化では、Integration Serviceでハッシュ関数を使用
し、ユーザー定義のパーティションキーに基づいてデータの行を異なるパーティションご
とにグループ化します。 パーティションキーを定義するポートを選択します。
上に示すマッピングで自動ハッシュキーパーティション化を指定した場合、ITEM_DESCなど
のソートキーによりグループ化されたデータの行がソータトランスフォーメーションに受
け取られます。品目の説明が長く、各品目に固有のID番号が与えられていることが判って
いれば、ソータトランスフォーメーションにユーザー定義ハッシュキーパーティション化
を指定し、ハッシュキーにITEM_IDを選択できます。通常、ハッシュ関数では文字列データ
よりも数値データの方が速く処理できるため、この操作によってセッションのパフォーマ
ンスが向上することがあります。
パーティションポイントでハッシュユーザーキーパーティション化を選択した場合、ハッ
シュキーを指定する必要があります。Integration Serviceでは、ハッシュキーを使用し
て、グループごとに適切なパーティションに行が分散されます。
例えば、ソース修飾子トランスフォーメーションにキー範囲パーティション化を指定した
場合、ソースからデータを選択する際に、Integration Serviceによってキーと範囲が使用
されてWHERE句が作成されます。 したがって、Integration Serviceを使用して、あるパ
ーティションに135000未満の顧客IDを含むすべての行を渡し、別のパーティションに
135000以上の顧客IDを含むすべての行を渡すことができます。
56
章 3: パーティションタイプ
トランスフォーメーションにハッシュユーザーキーパーティション化を指定する場合、
Integration Serviceによってこのキーが使用されて、キーとして選択したポートに基づい
てデータがグループ化されます。 例えば、ハッシュキーとしてITEM_DESCを指定すると、
同じ説明を持つ項目を含むすべての行が同じパーティションに送られるように、
Integration Serviceによってデータが分散されます。
ハッシュキーを指定するには、[マッピング]タブの[パーティション]ビューでパーテ
ィションポイントを選択し、[キーの編集]をクリックします。[パーティションキーの
編集]ダイアログボックスが表示されます。[利用可能なポート]リストには、トランス
フォーメーションのコネクトされた入力ポートと入出力ポートが表示されます。ハッシュ
キーを追加するには、このリストで1つ以上のポートを選択してから[追加]をクリックし
ます。
キーを定義するポートの順序を変更するには、[選択されたポート]リストでポートを選
択して上下の矢印ボタンをクリックします。
キー範囲パーティションタイプ
キー範囲パーティション化を使用すると、パーティションキーとして定義したポートまた
はポートのセットに基づいて、Integration Serviceによりデータの行が分散されます。各
ポートについて、値の範囲を定義します。Integration Serviceは、キーと範囲を使用して
適切なパーティションに行を送ります。
例えば、ソース修飾子トランスフォーメーションにキー範囲パーティション化を指定した
場合、ソースからデータを選択する際に、Integration Serviceによってキーと範囲が使用
されてWHERE句が作成されます。 したがって、Integration Serviceを使用して、あるパ
ーティションに135000未満の顧客IDを含むすべての行を渡し、別のパーティションに
135000以上の顧客IDを含むすべての行を渡すことができます。
トランスフォーメーションにハッシュユーザーキーパーティション化を指定する場合、
Integration Serviceによってこのキーが使用されて、キーとして選択したポートに基づい
てデータがグループ化されます。 例えば、ハッシュキーとしてITEM_DESCを指定すると、
同じ説明を持つ項目を含むすべての行が同じパーティションに送られるように、
Integration Serviceによってデータが分散されます。
ソーステーブルとターゲットテーブルがキー範囲によってマッピングでパーティション化
される場合に、キー範囲パーティション化を使用します。
以下の図に、キー範囲パーティション化によってターゲットテーブルへの書き込みが最適
化できるマッピングを示します。
データベース内のターゲットテーブルは、ITEM_IDによって次のようにパーティション化さ
れます。
¨ パーティション1: 0001-2999
キー範囲パーティションタイプ
57
¨ パーティション2: 3000-5999
¨ パーティション3: 6000-9999
ターゲットテーブルへの書き込みを最適化するには、次の操作を実行します。
1.
ターゲットインスタンスのパーティションタイプをキー範囲に設定します。
2.
3つのパーティションを作成します。
3.
パーティションキーとしてITEM_IDを選択します。
Integration Serviceによってこのキーが使用され、適切なパーティションにデータ
が渡されます。
4.
キー範囲を次のように設定します。
ITEM_ID
Partition #1
Partition #2
Partition #3
Start Range
3000
6000
End Range
3000
6000
-
このキー範囲を設定すると、IDが3000未満のすべての項目がIntegration Serviceによっ
て最初のパーティションに送られます。 IDが3000 - 5999のすべての項目が、パーティシ
ョン2に送られます。IDが6000以上のすべての品目が、パーティション3に送られます。
パーティションキーの追加
キー範囲パーティション化のパーティションキーを指定するには、[マッピング]タブの
[パーティション]ビューでパーティションポイントを選択し、[キーの編集]をクリッ
クします。[パーティションキーの編集]ダイアログボックスが表示されます。[利用可
能なポート]リストには、トランスフォーメーションのコネクトされた入力ポートと入出
力ポートが表示されます。パーティションキーを追加するには、このリストで1つ以上のポ
ートを選択してから[追加]をクリックします。
パーティションキーを定義するポートの順序を変更するには、[選択されたポート]リス
トでポートを選択して上下の矢印ボタンをクリックします。
キー範囲パーティション化では、ポートの順序はIntegration Serviceによるパーティショ
ン間の行の再分散には影響しませんが、セッションのパフォーマンスに影響する場合があ
ります。 たとえば、次の複合パーティションキーを設定するとします。
Selected Ports
ITEMS.DESCRIPTION
ITEMS.DISCONTINUED_FLAG
通常、論理比較は文字列比較よりも速く処理されるため、次のような順序でポートを並べ
るとセッションの処理速度が向上する場合があります。
Selected Ports
ITEMS.DISCONTINUED_FLAG
ITEMS.DESCRIPTION
キー範囲の追加
パーティションキーを構成するポートを特定した後に、[マッピング]タブのパーティシ
ョンビューで各ポートの範囲を入力する必要があります。
58
章 3: パーティションタイプ
パーティションの開始レンジまたは終了レンジを空白にしておくことができます。範囲の
開始を空白にした場合、Integration Serviceは最小データ値を範囲の開始として使用しま
す。 範囲の終了を空白にした場合、Integration Serviceは最大データ値を範囲の終了と
して使用します。
例えば、2つのパーティションを含むパイプラインで、CUSTOMER_IDに基づくキーに次の範
囲を追加できます。
CUSTOMER_ID
Partition #1
Partition #2
Start Range
End Range
135000
135000
顧客テーブルがIntegration Serviceによって読み込まれるとき、顧客IDが135000未満の
すべての行が最初のパーティションに送られ、顧客IDが135000以上のすべての行が次のパ
ーティションに送られます。 Integration Serviceは、NULL値またはキー範囲に該当しな
い値を含む行を除外します。
データをリレーショナルターゲットにロードするようにパイプラインを設定している場合
で、パーティションキーを定義するいずれかのカラムのNULL値が行に含まれているか、行
にどのキー範囲にも当てはまらない値が含まれている場合、その行はIntegration Service
によって最初のパーティションに送られます。
リレーショナルソースからデータを読み込むようにパイプラインを設定していると、
Integration Serviceによってキー範囲に該当する行が読み込まれます。 NULL値のパーテ
ィションキーカラムがある行は読み取りません。
パーティションキーがNULL値の行を読み込むときは、パススルーパーティション化を使用
してSQLオーバーライドを作成します。
フィルタ条件の追加
リレーショナルソースにキー範囲パーティション化を指定する場合、オプションでフィル
タ条件を指定したり、SQLクエリをオーバーライドしたりすることができます。
キー範囲の作成に関するルールおよびガイドライン
キー範囲を作成する場合は、以下の規則およびガイドラインに従ってください。
¨ それぞれのパーティションキーには、最低1つのポートが必要です。
¨ いずれかのパーティションポイントでキー範囲パーティション化を指定した場合には、
パーティションキーの各ポートに範囲を指定する必要があります。
¨ PowerCenterの標準の日付形式を使用して、キー範囲の日付を入力します。
¨ Workflow Managerでは、文字列範囲や数値範囲の重複は検査されません。
¨ Workflow Managerでは、空白または欠落した範囲は検査されません。
¨ キー範囲パーティション化を指定し、すべてのポートに日付の範囲を入力する必要があ
る場合には、PowerCenterの標準日付形式を使用します。
¨ ソース修飾子トランスフォーメーションにキー範囲パーティション化を定義した場合、
ソース修飾子トランスフォーメーションでSQL文を変更すると、デフォルトでパススル
ーパーティション化が使用されます。
¨ Workflow Managerでは、文字列範囲の重複、数値範囲の重複、空白または欠落した範囲
については検査されません。
キー範囲パーティションタイプ
59
¨ パーティションキーを定義するいずれかのカラムのNULL値が行に含まれているか、行に
どのキー範囲にも当てはまらない値が含まれている場合、その行はIntegration
Serviceによって最初のパーティションに送られます。
パススルーパーティションタイプ
パススルーパーティション化では、Integration Serviceによりデータはパーティション間
で再分散されることなく処理されます。したがって、ある1つのパーティションに置かれた
行はすべて、パススルーパーティションポイントを通過した後も同じパーティションにと
どまります。
パイプラインにパーティションポイントを追加すると、マスタースレッドにより新しいパ
イプラインステージが追加されます。データスループットを向上させたいが、パーティシ
ョンの数を増やしたくない場合に、パススルーパーティション化を使用します。
パススルーパーティション化はパイプライン上の有効な任意のパーティションポイントで
指定できます。
以下の図に、パススルーパーティション化を使用してデータスループットを向上できるマ
ッピングを示します。
1.readerスレッド(第1ステージ)。
2.トランスフォーメーションスレッド(第2ステージ)。
3.writerスレッド(第3ステージ)。
デフォルトでは、このマッピングにはソース修飾子とターゲットインスタンスにパーティ
ションポイントが置かれます。このマッピングにはXMLターゲットが含まれるため、パーテ
ィションポイントに設定できるパーティションは1つだけになります。
この場合マスタースレッドにより作成されるのは、ソースからデータを読み込むreaderス
レッドが1つ、データを処理するトランスフォーメーションスレッドが1つ、ターゲットに
データを書き込むwriterスレッドが1つです。それぞれのパイプラインステージで、次のよ
うに行が処理されます。
60
ソース修飾子
トランスフォーメーション
ターゲットインスタンス
(第1ステージ)
行セット1
行セット2
行セット3
行セット4
...
行セットn
(第2ステージ)
行セット1
行セット2
行セット3
...
行セット(n-1)
(第3ステージ)
行セット1
行セット2
...
行セット(n-2)
章 3: パーティションタイプ
パイプラインには3つのステージが含まれるため、Integration Serviceでは行のセットを3
つ同時に処理することができます。
式トランスフォーメーションが非常に複雑な場合には、第2(トランスフォーメーション)
ステージの処理に時間がかかり、データスループットが低下することがあります。パフォ
ーマンスを向上させるためには、式トランスフォーメーションEXP_2にパーティションポイ
ントを設定し、パーティションタイプをパススルーパーティション化に設定します。この
操作により新しいパイプラインステージが作成されます。新しいトランスフォーメーショ
ンスレッドがマスタースレッドにより追加されます。
1.readerスレッド(第1ステージ)。
2.トランスフォーメーションスレッド(第2ステージ)。
3.トランスフォーメーションスレッド(第3ステージ)。
4.writerスレッド(第4ステージ)。
これで、Integration Serviceは行の4つのセットを次のように同時に処理できます。
ソース修飾子
(第1ステージ)
行セット1
行セット2
行セット3
行セット4
...
行セットn
FIL_1 & EXP_1トランス EXP_2 & LKP_1トランスフ ターゲットインスタンス
フォーメーション
ォーメーション
(第4ステージ)
(第2ステージ)
(第3ステージ)
行セット1
行セット2
行セット1
行セット3
行セット2
行セット1
...
...
...
行セット(n-1)
行セット(n-2)
行セット(n-3)
式トランスフォーメーション「EXP_2」にパーティションポイントを追加すると、実行時間
の長い1つのトランスフォーメーションステージが、実行時間の短い2つのトランスフォー
メーションステージに置き換えられます。データスループットは実行時間の最も長いステ
ージにより決定されます。したがってこの場合は、データスループットが向上します。
ラウンドロビンパーティションタイプ
ラウンドロビンパーティション化では、1つ以上のパーティションにデータのブロックが配
分されます。各パーティションでブロックの数やサイズに基づいて行が処理されます。
ラウンドロビンパーティション化は、パーティション間でデータをグループ化する必要が
ない場合に使用します。サイズの異なるファイルソースからデータを読み込むパイプライ
ンでは、ラウンドロビンパーティション化を使用して、各パーティションに行のブロック
を配分します。
ラウンドロビンパーティションタイプ
61
以下の図に、行がフィルタトランスフォーメーションに入力される前に、ラウンドロビン
パーティション化を使用して行を分散するマッピングを示します。
このマッピングに基づくセッションでは、サイズの異なる3つのフラットファイルから品目
情報が読み込まれます。
¨ ソースファイル1:80,000行
¨ ソースファイル2:5,000行
¨ ソースファイル3:15,000行
ソースデータがPowerCenter Integration Serviceに読み込まれると、第1パーティション
でデータの80%、第2パーティションで5%、第3パーティションで15%の処理が開始されま
す。
負荷をさらに均等に分散するためには、フィルタトランスフォーメーションにパーティシ
ョンポイントを設定し、パーティションタイプをラウンドロビンに設定します。この結
果、各パーティションでデータの約3分の1が処理されるようにデータが振り分けられま
す。
62
章 3: パーティションタイプ
第 4 章
プッシュダウンの最適化
この章では、以下の項目について説明します。
¨ プッシュダウンの最適化の概要, 63 ページ
¨ プッシュダウンの最適化のタイプ, 64 ページ
¨ 動作可能なデータベースとアイドル状態のデータベース, 66 ページ
¨ データベースに関する作業, 67 ページ
¨ プッシュダウン互換性, 70 ページ
¨ 日付に関する作業, 73 ページ
¨ 式に関する作業, 74 ページ
¨ エラー処理、ロギング、およびリカバリ, 81 ページ
¨ 緩やかに変化する次元に関する作業, 82 ページ
¨ シーケンスおよびビューに関する作業, 82 ページ
¨ $$PushdownConfigマッピングパラメータの使用, 87 ページ
¨ プッシュダウンの最適化のためのセッションの設定, 89 ページ
プッシュダウンの最適化の概要
プッシュダウンの最適化を使用して、ソースまたはターゲットデータベースにトランスフ
ォーメーションロジックをプッシュできます。プッシュダウンの最適化用に設定されたセ
ッションを実行した場合、Integration Serviceでトランスフォーメーションロジックが
SQLクエリに変換され、そのSQLクエリがデータベースに送信されます。 ソースデータベー
スまたはターゲットデータベースでSQLクエリが実行され、トランスフォーメーションが処
理されます。
データベースにプッシュできるトランスフォーメーションロジックの量は、データベー
ス、トランスフォーメーションロジック、マッピング設定、およびセッション設定によっ
て異なります。Integration Serviceでは、データベースにプッシュできないすべてのトラ
ンスフォーメーションロジックが処理されます。
Integration Serviceがソースまたはターゲットデータベースに渡すことのできるSQL文お
よびマッピングロジックをプレビューするには、プッシュダウンの最適化ビューアを使用
63
します。プッシュダウンの最適化ビューアを使用して、プッシュダウンの最適化に関連す
るメッセージを表示することもできます。
以下の図に、ソースデータベースにプッシュできるトランスフォーメーションロジックを
含むマッピングを示します。
このマッピングには、店舗番号5419に基づいた商品ID、およびソースからの商品IDを作成
する式トランスフォーメーションが含まれます。 トランスフォーメーションロジックをデ
ータベースにプッシュするため、Integration Serviceにより以下のSQL文が生成されま
す。
INSERT INTO T_ITEMS(ITEM_ID, ITEM_NAME, ITEM_DESC) SELECT CAST((CASE WHEN 5419 IS NULL THEN '' ELSE
5419 END) + '_' + (CASE WHEN ITEMS.ITEM_ID IS NULL THEN '' ELSE ITEMS.ITEM_ID END) AS INTEGER),
ITEMS.ITEM_NAME, ITEMS.ITEM_DESC FROM ITEMS2 ITEMS
Integration Serviceにより、INSERT SELECT文が生成され、ID、名前、説明の値がソース
テーブルから取得され、新しい商品IDが作成されて、これらの値がターゲットテーブル内
のITEM_ID、ITEM_NAME、およびITEM_DESCのカラムに挿入されます。 Integration
Serviceでは、店舗番号5419、アンダースコア、元のITEM IDが連結され、新しい商品IDが
取得されます。
プッシュダウンの最適化のタイプ
以下のタイプのプッシュダウンの最適化を設定できます。
¨ ソース側でのプッシュダウンの最適化。 Integration Serviceによりトランスフォーメ
ーションロジックが可能な限りソースデータベースへプッシュされます。
¨ ターゲット側でのプッシュダウンの最適化。 Integration Serviceによりトランスフォ
ーメーションロジックが可能な限りターゲットデータベースへプッシュされます。
¨ 完全なプッシュダウンの最適化。Integration Serviceによりすべてのトランスフォー
メーションロジックのターゲットデータベースへのプッシュが試みられます。
Integration Serviceによりすべてのトランスフォーメーションロジックがデータベー
スへプッシュできない場合、ソース側とターゲット側の両方でプッシュダウンの最適化
が実行されます。
ソース側でのプッシュダウンの最適化セッションの実
行
ソース側でのプッシュダウンの最適化が設定されたセッションを実行した場合、
Integration Serviceによりソースからターゲットまで、またはソースデータベースにプッ
シュできないダウンストリームトランスフォーメーションに到達するまで、マッピングが
分析されます。
Integration Serviceでは、データベースにプッシュできるトランスフォーメーションごと
のトランスフォーメーションロジックに基づいて、SELECT文が生成、実行されます。次
64
章 4: プッシュダウンの最適化
に、Integration ServiceではこのSQLクエリの結果が読み込まれ、残りのトランスフォー
メーションが処理されます。
ターゲット側でのプッシュダウンの最適化セッション
の実行
ターゲット側でのプッシュダウンの最適化が設定されたセッションを実行した場合、
Integration Serviceによりターゲットからソースまで、またはターゲットデータベースに
プッシュできないアップストリームトランスフォーメーションに到達するまで、マッピン
グが分析されます。 Integration Serviceでは、ターゲットデータベースにプッシュでき
るトランスフォーメーションごとのトランスフォーメーションロジックに基づいて、
INSERT文、DELETE文、またはUPDATE文が生成されます。 Integration Serviceでは、デー
タベースにトランスフォーメーションロジックをプッシュできるポイントまで、トランス
フォーメーションロジックが処理されます。 次に、Integration Serviceでは生成された
SQLがターゲットデータベース上で実行されます。
完全なプッシュダウンの最適化セッションの実行
完全なプッシュダウンの最適化を使用するには、ソースデータベースとターゲットデータ
ベースが同じリレーショナルデータベース管理システム内にある必要があります。 完全な
プッシュダウンの最適化が設定されたセッションを実行した場合、Integration Serviceに
よりソースからターゲットまで、またはターゲットデータベースにプッシュできないダウ
ンストリームトランスフォーメーションに到達するまで、マッピングが分析されます。
Integration Serviceでは、データベースにプッシュできるトランスフォーメーションロジ
ックに基づいて、ソースまたはターゲットに対してSQL文が生成、実行されます。
大量のデータおよび完全なプッシュダウンの最適化を使用するセッションを実行した場
合、データベースサーバーは長いトランザクションを実行しなければなりません。長いト
ランザクションを生成する場合は、データベースのパフォーマンスに関する以下の問題を
検討します。
¨ トランザクションが長くなると、使用されるデータベースリソースが増加します。
¨ トランザクションが長いと、データベースのロック状態が長引きます。この状態では、
データベースの並行性が低下し、デッドロックが起こりやすくなります。
¨ トランザクションが長いと、予期しないイベントが発生しやすくなります。
長いトランザクションに関するデータベースのパフォーマンス問題を最小限にするため、
ソース側またはターゲット側でのプッシュダウンの最適化を使用することを検討します。
Integration Serviceの完全な最適化での動作
完全な最適化のためにセッションを設定した場合、Integration Serviceによりソースから
ターゲットまで、またはターゲットデータベースにプッシュできないダウンストリームト
ランスフォーメーションに到達するまで、マッピングが分析されます。 Integration
Serviceによりすべてのトランスフォーメーションロジックがターゲットデータベースにプ
ッシュできない場合、すべてのトランスフォーメーションロジックの、ソースデータベー
スへのプッシュが試行されます。 Integration Serviceにより、すべてのトランスフォー
メーションロジックがソースまたはターゲットにプッシュできない場合、可能な限り多く
のトランスフォーメーションロジックがソースデータベースにプッシュされ、いずれのデ
ータベースにもプッシュできない中間トランスフォーメーションが処理されて、残りのト
プッシュダウンの最適化のタイプ
65
ランスフォーメーションロジックがターゲットデータベースにプッシュされます。
Integration Serviceでは、トランスフォーメーションロジックをプッシュする各データベ
ースに対し、INSERT SELECT文、DELETE文、またはUPDATE文が生成、実行されます。
例えば、マッピングに以下のトランスフォーメーションが含まれているとします。
ランクトランスフォーメーションをソースデータベースまたはターゲットデータベースに
プッシュすることはできません。 完全なプッシュダウンの最適化のためにセッションを設
定した場合、Integration Serviceによりソース修飾子トランスフォーメーションおよびア
グリゲータトランスフォーメーションがソースにプッシュされ、ランクトランスフォーメ
ーションが処理されて、式トランスフォーメーションおよびターゲットがターゲットデー
タベースにプッシュされます。 Integration Serviceは、一部のトランスフォーメーショ
ンロジックしかデータベースにプッシュできない場合にも、セッションに失敗しません。
動作可能なデータベースとアイドル状態のデ
ータベース
プッシュダウンの最適化中に、Integration Serviceによりトランスフォーメーションロジ
ックが1つのデータベースにプッシュされます。このデータベースは動作可能なデータベー
スと呼ばれます。 トランスフォーメーションロジックを処理しないデータベースは、アイ
ドル状態のデータベースと呼ばれます。 例えば、あるマッピングにジョイナトランスフォ
ーメーションにより結合された2つのソースが含まれているとします。 セッションがソー
ス側でのプッシュダウンの最適化に設定されている場合、Integration Serviceではジョイ
ナトランスフォーメーションロジックが詳細パイプライン内のソース、つまり動作可能な
データベースへプッシュされます。 マスタパイプラインのソースは、トランスフォーメー
ションロジックを処理しないため、アイドル状態のデータベースです。
Integration Serviceでは以下の条件が使用され、動作可能なデータベースとアイドル状態
のデータベースが決定されます。
¨ 完全なプッシュダウンの最適化を使用した場合、ターゲットデータベースが動作可能な
データベースとなり、ソースデータベースがアイドル状態のデータベースになる。
¨ ルックアップトランスフォーメーションが含まれるセッションでは、ソースまたはター
ゲットデータベースが動作可能なデータベースとなり、ルックアップデータベースがア
イドル状態のデータベースになる。
¨ ジョイナトランスフォーメーションが含まれるセッションでは、詳細パイプラインのソ
ースが動作可能なデータベースとなり、マスタパイプラインのソースがアイドル状態の
データベースになる。
66
章 4: プッシュダウンの最適化
¨ 共有体トランスフォーメーションが含まれるセッションでは、最初の入力グループのソ
ースが動作可能なデータベースとなる。 その他の入力グループのソースは、アイドル
状態のデータベースになる。
トランスフォーメーションロジックを動作可能なデータベースにプッシュするには、動作
可能なデータベースのデータベースユーザーアカウントが、アイドル状態のデータベース
から読み込まれる必要があります。
データベースに関する作業
以下のデータベース用にプッシュダウンの最適化を設定することができます。
¨ IBM DB2
¨ Microsoft SQL Server
¨ Netezza
¨ Oracle
¨ Sybase ASE
¨ Teradata
¨ ODBCドライバを使用するデータベース
データベースにトランスフォーメーションロジックをプッシュする場合、データベースが
Integration Serviceとは異なる出力を生成することがあります。 また、ODBCドライバで
はなくネイティブドライバを使用する場合は、通常Integration Serviceではより多くのト
ランスフォーメーションロジックをデータベースにプッシュできます。
Integration Serviceおよびデータベースの出力の比較
Integration Serviceとデータベースでは、同じトランスフォーメーションロジックを処理
した場合でも、異なる結果になる場合があります。 データを読み込む際、Integration
Serviceによって、データが別の形式に変換されることがあります。 Integration Service
とデータベースは、NULL値、大文字と小文字の区別、ソート順を異なる方法で処理するこ
とがあります。
以下の設定と変換が異なる場合、データベースとIntegration Serviceとでは異なる出力が
生成されます。
¨ 最高値または最低値として取り扱われるNULL。 NULL値の取り扱い方は、Integration
Serviceとデータベースとで異なる場合があります。たとえば、ソータトランスフォー
メーションをOracleデータベースにプッシュしたいとします。セッションで、NULLをソ
ート順の最低値として扱われるように設定します。Oracleの場合、NULL値がソート順の
最高値として扱われます。
¨ ソート順。 Integration Serviceとデータベースとで、使用されるソート順が異なる場
合があります。例えば、セッション内のトランスフォーメーションを、大文字小文字を
区別しないソート順を使用するように設定されたMicrosoft SQL Serverデータベースに
プッシュしたいとします。大文字小文字を区別するバイナリソート順を使用するように
セッションプロパティを設定します。返される結果は、トランスフォーメーションロジ
データベースに関する作業
67
ックがIntegration ServiceまたはMicrosoft SQL Serverデータベースのどちらで処理
されるかに応じて異なる可能性があります。
¨ 大文字と小文字の区別。Integration Serviceとデータベースは、異なる方法で大文字
と小文字の区別を扱うことがあります。 例えば、Integration Serviceでは大文字小文
字が使用されるのに対し、データベースでは使用されません。フィルタトランスフォー
メーションで使用されるフィルタ条件をIIF(col_varchar2 = ‘CA’, TRUE, FALSE)
とします。‘CA’に一致する行を返すデータベースが必要です。’ ただし、大文字と
小文字を区別しないMicrosoft SQL Serverデータベースにこのトランスフォーメーショ
ンロジックをプッシュする場合は、値「Ca」、「ca」、「cA」、および「CA」に一致す
る行が返されます。
¨ 文字値に変換される数値。 同じ数値を文字値に変換するにしても、Integration
Serviceとデータベースとで変換形式が異なる可能性があります。データベースでは、
数値を許容できない文字形式に変換されてしまう可能性があります。たとえば、テーブ
ルに数値1234567890が含まれているとします。Integration Serviceでこの数を文字値
に変換した場合、文字「1234567890」が挿入されます。 ただし、この数はデータベー
スで、「1.2E9」に変換されます。 これら文字列の2つのセットは同じ値を示していま
す。ただし、文字に形式「1234567890」を用いる必要がある場合は、プッシュダウンの
最適化を無効にすることができます。
¨ 精度。 Integration Serviceとデータベースとで、特定のデータタイプの精度が異なる
場合があります。 トランスフォーメーションデータ型によって、ネイティブデータ型
とは異なる可能性があるデフォルトの数値精度が使用されます。例えば、トランスフォ
ーメーションDecimalデータ型の精度は1~28です。 対応するTeradataのDecimalデー
タ型の精度は1~18です。 データベースで使用されている精度がIntegration Service
とは異なる場合、結果が変わる可能性があります。
ODBCドライバの使用
データベースにネイティブドライバを使用した場合、Integration Serviceによりネイティ
ブデータベースSQLが使用されてSQL文が生成されます。 ODBCドライバを使用した場合、
Integration Serviceでは、通常、データベースタイプが検出されません。 この結果、
Integration ServiceによってANSI SQLが使用され、SQL文が生成されます。 Integration
Serviceでは、ANSI SQLではなくネイティブ言語を使用してSQL文を生成する際に、より多
くの関数を生成できます。
注: Netezzaデータベースには、ODBCドライバを使用する必要があります。 Integration
ServiceではNetezzaにODBCドライバが使用されますが、トランスフォーメーションロジッ
クをNetezzaデータベースにプッシュする際にはIntegration Serviceによってデータベー
スがNetezzaであることが検出され、ネイティブデータベースSQLが生成されます。
場合によっては、ANSI SQLにデータベース構文との互換性がない場合があります。次のセ
クションでは、ODBCドライバを使用する場合に発生する可能性がある問題について説明し
ます。 可能な限り、ネイティブドライバを使用してこれらの問題を防止します。
68
章 4: プッシュダウンの最適化
IBM DB2
ODBCドライバをIBM DB2データベースと共に使用している場合、以下の問題が発生する可能
性があります。
¨ 識別ソートで、大文字小文字が区別されない場合、ソートキーの1つが文字列データ型
であるときは、ソータトランスフォーメーションを含むセッションが失敗します。
¨ ルックアップトランスフォーメーションを含むセッションは、ソース側のプッシュダウ
ンの最適化または完全なプッシュダウンの最適化について失敗します。
¨ 型のキャストを必須とするセッションは、Float/DoubleからStringに型をキャストする
場合、またはIBM DB2データベースで許可されていない他の型をキャストする必要があ
る場合、失敗します。
Microsoft SQL Server
ODBCドライバをMicrosoft SQL Serverデータベースと共に使用している場合、以下の問題
が発生する可能性があります。
¨ 識別ソートで、大文字小文字が区別されない場合、ソータトランスフォーメーションを
含むセッションは失敗します。
¨ プッシュダウンの最適化セッションは、ODBCドライバを使用してMicrosoft SQL Server
ターゲットに日時データをロードする場合、失敗します。Integration Serviceは、日
時データをODBCタイムスタンプデータ型に変換しますが、このデータ型は未サポートの
Microsoft SQL Serverデータ型です。
Sybase ASE
ODBCドライバをSybase ASEデータベースと共に使用している場合、以下の問題が発生する
可能性があります。
¨ セッションはデータ型変換を実行するときにSybase ASE 12.5またはそれ未満を使用し
た場合、失敗します。
¨ 完全な外部結合に設定されているジョイナトランスフォーメーションを使用した場合、
セッションは失敗します。
Teradata
ODBCドライバをTeradataデータベースと共に使用している場合、以下の問題が発生する可
能性があります。
¨ セッションは、精度が18より大きい数値データ型を変換する場合、失敗します。
¨ ソータトランスフォーメーションを含むセッションに完全なプッシュダウンの最適化を
使用した場合、セッションは失敗します。
¨ 識別キーに基づくソートを行うと、そのソートで大文字と小文字が区別されず1つのポ
ートが文字ポートである場合に、結果が一貫しないことがあります。
¨ Group Byポートが文字列データ型で、大文字小文字が区別されない場合、アグリゲータ
トランスフォーメーションを含むセッションの結果は、Integration Serviceとデータ
ベースとで異なる可能性があります。
データベースに関する作業
69
¨ ルックアップトランスフォーメーションを含むセッションが、ターゲット側のプッシュ
ダウンの最適化に設定されている場合、このセッションは失敗します。
¨ 日付-文字列データタイプ変換を含むセッションは失敗します。
¨ Integration Serviceは、文字列-日付または日付-文字列の変換をNetezzaにプッシュ
する際に、サポートされない日付形式を検出できません。
Netezzaに関するルールおよびガイドライン
Netezzaデータベースへのプッシュダウンの最適化には、以下のルールおよびガイドライン
を使用します。
¨ Netezzaデータベーステーブルに日付、時刻、またはタイプスタンプのカラムが含まれ
る場合、[85以前のタイムスタンプの互換性]セッションプロパティによって、
Netezza上でターゲット側のプッシュダウンの最適化を実行できるようにする必要があ
ります。 このオプションを無効にした場合、Integration Serviceによりターゲット操
作が処理されます。
¨ Netezzaには、接続されていないパッシブなルックアップトランスフォーメーションの
トランスフォーメーションロジックはプッシュできません。
プッシュダウン互換性
データベースへの複数の接続を持つトランスフォーメーションをプッシュするには、その
接続がプッシュダウン互換である必要があります。 接続が同じデータベース管理システム
のデータベースに接続されており、Integration Serviceで接続がアクセスするデータベー
ステーブルが特定できる場合、これらの接続はプッシュダウン互換です。
以下のトランスフォーメーションは、複数の接続を持つことができます。
¨ ジョイナ。ジョイナトランスフォーメーションは、複数のソース接続からデータを結合
できます。
¨ 共有体。共有体トランスフォーメーションは、複数のソース接続からからデータを統合
できます。
¨ ルックアップ。ルックアップトランスフォーメーションの接続は、ソース接続とは異な
る場合があります。
¨ ターゲット。ターゲット接続は、ソース接続とは異なる場合があります。
各接続オブジェクトは、オブジェクト自身に対してプッシュダウン互換です。 ソースおよ
びターゲット接続に対して、同じ接続オブジェクトを使用するようにセッションを設定し
た場合、Integration Serviceによりトランスフォーメーションロジックをソースまたはタ
ーゲットデータベースにプッシュできます。
リレーショナル接続が、同じデータベースタイプであり、同じデータベースユーザー名、
パスワード、特定の同一プロパティを持っている場合、リレーショナル接続の一部はプッ
シュダウン互換です。
70
章 4: プッシュダウンの最適化
以下の表に、各データベースタイプで同一でなければならない接続プロパティを一覧表示
します。
表 2. プッシュダウン交換接続のため、同一である必要のある接続プロパティ
データベースタイプ
同一でなければならない接続プロパティ
IBM DB2
接続文字列
コードページ
接続環境SQL
トランザクション環境SQL
Microsoft SQL
Server
コードページ
サーバー名
ドメイン名
信頼接続関係を用いる
接続環境SQL
トランザクション環境SQL
Oracle
接続文字列
コードページ
接続環境SQL
トランザクション環境SQL
Sybase ASE
コードページ
サーバー名
接続環境SQL
トランザクション環境SQL
Teradata
コードページ
データソース名
接続環境SQL
トランザクション環境SQL
注: Integration Serviceにより、大文字と小文字を区別した文字列の比較が実行され、
接続プロパティが同一であることが確認されます。
同じリレーショナルデータベース管理システム内のNetezzaデータベースは、プッシュダウ
ン互換です。 Netezzaデータベースは、Netezzaデータベース自身に対してのみプッシュダ
ウン互換です。
同じデータベースタイプの接続に対し、「プッシュダウン互換性」 (70ページの)の接続
プロパティが同一であるが、データベースユーザー名とパスワードが異なる場合、接続を
プッシュダウン互換にできる場合もあります。
データベース接続に互換性がないユーザー
互換性のない接続のデータベースユーザー名とパスワードが一致しない場合は、追加の情
報を提供して、接続に互換性を持たせる必要があります。
プッシュダウン互換性
71
接続をプッシュダウン互換にするには、以下のアクションを実行します。
1.
動作可能なデータベースのデータベースユーザーが、すべてのアイドル状態のデータ
ベースに対して読み取り権限があることを確認します。
2.
[ユーザー互換のない接続に対するプッシュダウンを許可]セッションプロパティを
有効にします。
3.
Microsoft SQL ServerおよびSybaseへの各アイドル状態の接続に対しても、接続プロ
パティのデータベース名および、すべてのルックアップおよびソースのためのテーブ
ルオーナーを指定する必要があります。
アイドル状態のデータベース内のテーブル名の修飾
Integration ServiceによりSQLが生成され動作可能なデータベースへトランスフォーメー
ションがプッシュされる場合、生成されたSQLではアイドル状態のデータベース内のテーブ
ルが最低でも1つ参照されます。
Integration Serviceがすべてのテーブルを特定できることを確認するには、以下の場合に
対して、アイドル状態のデータベース内のテーブル名を修飾する必要があります。
¨ アクティブな接続とアイドル状態の接続が同じ接続プロパティを持ち、データタイプが
同じで、データベースユーザー名とパスワードが異なる場合。
¨ ソース修飾子トランスフォーメーションにソースフィルタまたはユーザー定義結合が含
まれる場合。
注: その他の場合、Integration Serviceは、アイドル状態のデータベース内のテーブル
名を修飾します。
ソース修飾子トランスフォーメーションの[オーナー名]セッションプロパティ内のソー
ステーブル名を修飾します。 ルックアップトランスフォーメーションの[ルックアップテ
ーブル名]セッションプロパティ内のルックアップテーブル名を修飾します。
以下の構文を使用してテーブル名を修飾します。
72
データベースタイプ
構文
IBM DB2
<table owner>.<table name>
Microsoft SQL
Server
<database name>.<table owner>.<table name>
Netezza
サポートされていません。
Oracle
<table owner>.<table name>
Sybase ASE
<database name>.<table owner>.<table name>
Teradata
<database name>.<table name>
章 4: プッシュダウンの最適化
日付に関する作業
Integration Serviceとデータベースは、異なる方法で日付を処理することがあります。
日付変換をデータベースにプッシュするようにセッションを設定した場合、予期しない結
果を受け取るかセッションが失敗する可能性があります。
次の日付設定と変換が異なっている場合、データベースではIntegration Serviceと異なる
出力が生成される可能性があります。
¨ 文字値に変換される日付値。 Integration Serviceでは、トランスフォーメーション
Date/Timeデータ型が、データベース内のサブ秒精度をサポートしているネイティブデ
ータ型に変換されます。セッション内の日時形式をデータベースでサポートされていな
い形式に設定した場合、セッションが失敗します。例えば、Integration Serviceが日
付に対してROUND関数を実行する際、MM/DD/YYYY HH:MI:SS.USの形式が使用され、文字
カラムに日付値が格納されます。 しかし、この関数をデータベースで実行すると、そ
のデータベースのデフォルト日付形式で日付が格納されます。データベースがOracleの
場合、日付はデフォルトのDD-MON-YY形式で格納されます。日付をMM/DD/YYYY
HH:MI:SS.USの形式にする必要のある場合は、プッシュダウンの最適化を無効にしま
す。
¨ TO_CHARおよびTO_DATE関数の日付形式。Integration Serviceによって関数がデータベ
ースにプッシュされる際、Integration ServiceによってTO_CHARまたはTO_DATE関数内
の日付形式が使用されます。 データベースは各日付文字列を、そのデータベースでサ
ポートされている日時値に変換します。
例として、Integration Serviceでデータベースにプッシュされる式を次に挙げます。
TO_DATE( DATE_PROMISED, 'MM/DD/YY' )
データベースは指定された日付形式文字列MM/DD/YYにもとづいてDATE_PROMISEDポート
を解釈します。データベースは、各日付文字列(例えば01/22/98)を、サポートされて
いる日付値(例えばJan 22 1998 00:00:00)に変換します。
Integration Serviceは、IBM DB2、Microsoft SQL Server、またはSybaseデータベー
スにプッシュされた日付形式がそのデータベースでサポートされていなかった場合、プ
ッシュダウンの最適化を停止して、トランスフォーメーションを処理します。
Integration Serviceは、すべての日付を変換してから、トランスフォーメーションを
OracleデータベースまたはTeradataデータベースにプッシュします。データベースが日
付変換後に日付形式をサポートしない場合、セッションが失敗します。
¨ HH24日付形式。HH24日付形式は、Teradata用の日付形式文字列には使用できません。
Integration ServiceでTeradata用SQLが生成される際は、HH形式文字列が代わりに使
用されます。
¨ 日付形式文字列内の空白スペース。Teradata内の日付形式文字列には、空のスペースは
使用できません。 Integration ServiceでTeradata用SQLが生成される際は、スペース
が「B」で置き換えられます。
¨ ルックアップトランスフォーメーションでのサブ秒精度の処理ルックアップトランスフ
ォーメーションでサブ秒精度を有効にした場合、データベースおよびIntegration
Serviceでサブ秒精度を使用したルックアップ比較が実行されます。ただし、異なる結
果が返されます。 Integration Serviceとは異なり、データベースではルックアップ結
果をサブ秒精度に基づいて切り詰めません。例えば、サブ秒精度をミリ秒まで示すよう
にルックアップトランスフォーメーションを設定したと想定します。ルックアップ結果
日付に関する作業
73
が8:20:35.123456の場合、データベースからは8:20:35.123456が返されますが、
Integration Serviceからは8:20:35.123が返されます。
¨ SYSDATE組み込み変数。 SYSDATE組み込み変数を使用した場合、Integration Service
によってサービスプロセスを実行しているノードの現在の日付と時刻が返されます。
しかし、トランスフォーメーションロジックをデータベースに渡した場合、SYSDATE変
数は、データベースのホストマシンの現在の日付と時刻を返します。データベースをホ
ストしているマシンのタイムゾーンが、Integration Serviceを実行しているマシンの
タイムゾーンと同じでない場合、結果に相違が生じることがあります。
式に関する作業
プッシュダウンの最適化を使用する場合、Integration Serviceにより、データベース内の
同等の演算子、変数、および関数を決定することによって、トランスフォーメーションま
たはワークフローリンク内の式が変換されます。 等価な演算子、変数、または関数が存在
しない場合、Integration Serviceはトランスフォーメーションロジックを処理します。例
えば、Integration Serviceは集計関数STDDEV()をTeradataue上ではSTDDEV_SAMP()に変換
し、Microsoft SQL Server上ではSTDEV()に変換します。FIRST()集計関数はどのデータベ
ースでもサポートされていないため、この関数を使用するトランスフォーメーションは、
Integration Serviceによって処理されます。
注: Integration Serviceは式をデータベースにプッシュできない場合、ワークフローロ
グおよびプッシュダウンの最適化ビューアにメッセージを記録します。メッセージを使用
して、式をデータベースにプッシュできない原因を特定することができます。
この節の表に、データベース内でのPowerCenterの演算子、変数、および関数の可用性を要
約して示します。
演算子
以下の表に、データベース内でのPowerCenter演算子の可用性を要約して示します。 Xマー
クの付いた各カラムは、ソース側、ターゲット側、または完全なプッシュダウンの最適化
を使用して演算子をデータベースにプッシュできることを示しています。Sマークの付いた
各カラムは、ソース側のプッシュダウン最適化を使用して演算子をデータベースにプッシ
ュできることを示しています。
74
演算子
IBM
DB2
Micros
oft
SQL
Server
Netez
za
Oracl
e
Syba
se
ASE
Terad
ata
ODBC
+ - * /
X
X
X
X
X
X
X
%
X
X
X
X
X
X
-
||
S
S
X
X
S
S
-
章 4: プッシュダウンの最適化
演算子
IBM
DB2
Micros
oft
SQL
Server
Netez
za
Oracl
e
Syba
se
ASE
Terad
ata
ODBC
= > < >= <=
<>
X
X
X
X
X
X
X
!=
X
X
X
X
X
X
X
^=
X
X
X
X
X
X
X
not and or
X
X
X
X
X
X
X
変数
以下の表に、データベース内でのPowerCenter変数の可用性を要約して示します。 Xマーク
の付いたカラムには、ソース側、ターゲット側または完全なプッシュダウンの最適化を使
用して変数をデータベースにプッシュできるかどうかが示されます。
変数
IBM
DB2
Micros
oft
SQL
Server
Netez
za
Orac
le
Syba
se
ASE
Terad
ata
ODB
C
SESSSTARTTIME
X
X
X
X
X
X
X
SYSDATE
X
X
X
X
X
X
-
WORKFLOWSTARTTI
ME
-
-
-
-
-
-
-
関数
以下の表に、データベース内でのPowerCenter関数の可用性を要約して示します。 Xマーク
の付いた各カラムは、ソース側、ターゲット側、または完全なプッシュダウンの最適化を
使用して関数をデータベースにプッシュできることを示しています。Sマークの付いた各カ
ラムは、ソース側のプッシュダウン最適化を使用して関数をデータベースにプッシュでき
ることを示しています。
関数
IBM
DB2
Micros
oft
SQL
Server
Netez
za
Orac
le
Syba
se
ASE
Terad
ata
ODBC
ABORT()
-
-
-
-
-
-
-
ABS()
X
X
X
X
X
X
X
式に関する作業
75
関数
IBM
DB2
Micros
oft
SQL
Server
Netez
za
Orac
le
Syba
se
ASE
Terad
ata
ODBC
ADD_TO_DATE()
X
S
X
X
S
X
-
AES_DECRYPT()
-
-
-
-
-
-
-
AES_ENCRYPT()
-
-
-
-
-
-
-
ASCII()
X
X
X
X
X
-
-
AVG()
X
X
X
X
X
X
X
CEIL()
X
X
X
X
X
S
-
CHOOSE()
-
-
-
-
-
-
-
CHR()
X
X
X
X
X
-
-
CHRCODE()
-
-
-
-
-
-
-
COMPRESS()
-
-
-
-
-
-
-
CONCAT()
S
S
-
X
S
S
-
COS()
X
X
X
X
X
X
X
COSH()
X
S
X
X
S
X
-
COUNT()
X
X
X
X
X
X
X
CRC32()
-
-
-
-
-
-
-
CUME()
-
-
-
-
-
-
-
DATE_COMPARE()
S
S
X
S
S
S
S
DATE_DIFF()
-
-
-
-
-
-
-
DECODE()
X
X
X
X
X
X
X
DECODE_BASE64(
)
-
-
-
-
-
-
-
DECOMPRESS()
-
-
-
-
-
-
-
ENCODE_BASE64(
)
-
-
-
-
-
-
-
ERROR()
76
章 4: プッシュダウンの最適化
関数
IBM
DB2
Micros
oft
SQL
Server
Netez
za
Orac
le
Syba
se
ASE
Terad
ata
ODBC
EXP()
X
X
X
X
X
X
X
FIRST()
-
-
-
-
-
-
-
FLOOR()
X
X
X
X
X
S
-
FV()
-
-
-
-
-
-
-
GET_DATE_PART(
)
X
X
X
X
X
X
-
GREATEST()
-
-
-
X
-
-
-
IIF()
X
X
X
X
X
X
X
IN()
X
X
-
X
X
X
X
INDEXOF()
-
-
-
-
-
-
-
INITCAP()
-
-
-
X
-
-
-
INSTR()
S
X
-
X
S
S
-
IS_DATE()
-
-
-
-
-
-
-
IS_NUMBER()
-
-
-
-
-
-
-
IS_SPACES()
-
-
-
-
-
-
-
ISNULL()
X
X
X
X
X
X
X
LAST()
-
-
-
-
-
-
-
LAST_DAY()
-
-
-
X
-
-
-
LEAST()
-
-
-
X
-
-
-
LENGTH()
X
X
X
X
X
X
-
LN()
-
-
X
-
-
-
-
LOG()
X
S
X
X
S
S
-
LOOKUP
X
X
X
X
X
X
X
LOWER()
X
X
X
X
X
X
X
式に関する作業
77
78
関数
IBM
DB2
Micros
oft
SQL
Server
Netez
za
Orac
le
Syba
se
ASE
Terad
ata
ODBC
LPAD()
-
-
X
X
-
-
-
LTRIM()
X
X
X
X
X
X
-
MAKE_DATE_TIME
()
-
-
-
-
-
-
-
MAX()
X
X
X
X
X
X
X
MD5()
-
-
-
-
-
-
-
MEDIAN()
-
-
-
-
-
-
-
METAPHONE()
-
-
-
-
-
-
-
MIN()
X
X
X
X
X
X
X
MOD()
X
X
X
X
X
X
-
MOVINGAVG()
-
-
-
-
-
-
-
MOVINGSUM()
-
-
-
-
-
-
-
NPER()
-
-
-
-
-
-
-
PERCENTILE()
-
-
-
-
-
-
-
PMT()
-
-
-
-
-
-
-
POWER()
X
X
X
X
X
X
X
PV()
-
-
-
-
-
-
-
RAND()
-
-
-
-
-
-
-
RATE()
-
-
-
-
-
-
-
REG_EXTRACT()
-
-
-
-
-
-
-
REG_MATCH()
-
-
-
-
-
-
-
REG_REPLACE
-
-
-
-
-
-
-
REPLACECHR()
-
-
-
-
-
-
-
REPLACESTR()
-
-
-
-
-
-
-
章 4: プッシュダウンの最適化
関数
IBM
DB2
Micros
oft
SQL
Server
Netez
za
Orac
le
Syba
se
ASE
Terad
ata
ODBC
REVERSE()
-
-
-
-
-
-
-
ROUND(DATE)
-
-
-
X
-
-
-
ROUND(NUMBER)
X
X
X
X
X
S
-
RPAD()
-
-
X
X
-
-
-
RTRIM()
X
X
X
X
X
X
-
SET_DATE_PART(
)
-
-
-
-
-
-
-
SIGN()
X
X
X
X
X
S
-
SIN()
X
X
X
X
X
X
X
SINH()
X
S
X
X
S
X
SOUNDEX()
X
X
-
X
X
-
-
SQRT()
X
X
X
X
X
X
X
STDDEV()
X
X
-
X
-
X
-
SUBSTR()
S
S
X
X
S
S
-
SUM()
X
X
X
X
X
X
X
SYSDATE()
X
X
X
X
X
X
X
SYSTIMESTAMP()
X
X
X
X
X
X
X
TAN()
X
X
X
X
X
X
X
TANH()
X
S
X
X
S
X
-
TO_BIGINT
X
X
X
X
X
X
X
TO_CHAR(DATE)
X
X
X
X
X
S
-
TO_CHAR(NUMBER
)
X
X
X
X
X
X
-
TO_DATE()
X
X
X
X
X
X
-
TO_DECIMAL()
X
X
X
X
X
X
-X
式に関する作業
79
関数
IBM
DB2
Micros
oft
SQL
Server
Netez
za
Orac
le
Syba
se
ASE
Terad
ata
ODBC
TO_FLOAT()
X
X
X
X
X
X
-X
TO_INTEGER()
X
S
X
X
S
X
-
TRUNC(DATE)
-
-
X
X
-
-
-
TRUNC(NUMBER)
X
X
X
X
S
S
-
UPPER()
X
X
X
X
X
X
X
VARIANCE()
X
X
-
X
-
X
-
プッシュダウンの最適化の関数に関するルールおよび
ガイドライン
データベースに関数をプッシュする際には、以下のルールおよびガイドラインを使用しま
す。
¨ トランスフォーメーションロジック内でADD_TO_DATEを使用して日、時間、分、または
秒を変更した場合、この関数をTeradataデータベースにプッシュできません。
¨ LAST_DAY()をOracleにプッシュした場合、秒まで示された日付がOracleによって返され
ます。 入力日付にサブ秒が含まれている場合、Oracleでは日付が秒にトリミングしま
す。
¨ LTRIM、RTRIM、またはSOUNDEXをデータベースにプッシュした場合、引数(' ')はその
データベースではNULLとして扱われますが、Integration Serviceではスペースとして
扱われます。
¨ IBM DB2データベースとIntegration Serviceでは、STDDEVおよびVARIANCEの結果が異
なります。 IBM DB2では、STDDEVおよびVARIANCEの計算に、データベース以外の異なっ
たアルゴリズムが使用されます。
¨ SYSDATEまたはSYSTIMESTAMPをデータベースにプッシュした場合、データベースサーバ
ーによりタイムスタンプが、Integration Serviceでなくデータベースサーバーのタイ
ムゾーンで返されます。
¨ SYSTIMESTAMPをIBM DB2またはSybaseデータベースにプッシュし、SYSTIMESTAMPの形式
を指定した場合、データベースではその形式は無視され、完全なタイムスタンプが返さ
れます。
¨ SYSTIMESTAMP('SS')はNetezzaデータベースにプッシュできますが、
SYSTIMESTAMP('MS')とSYSTIMESTAMP('US')はプッシュできません。
¨ TO_CHAR(DATE)またはTO_DATE()をNetezzaにプッシュする場合、サブ秒精度の日付は
YYYY-MM-DD HH24:MI:SS.US形式である必要があります。 形式が異なる場合、この関数
はIntegration ServiceによってNetezzaにプッシュされません。
80
章 4: プッシュダウンの最適化
エラー処理、ロギング、およびリカバリ
Integration Serviceとデータベースでは、エラー処理、ロギング、およびリカバリが異な
る方法で処理されます。
エラー処理
Integration Serviceにより、トランスフォーメーションロジックがデータベースにプッシ
ュされる場合、そのデータベースで発生するエラーは追跡できません。 結果として、
Integration Serviceは、セッションのトランスフォーメーションを処理する場合とは別の
方法でエラーを処理します。Integration Serviceにより完全なプッシュダウンの最適化に
設定されたセッションが実行されている際にエラーが発生した場合、そのエラーはデータ
ベースで処理されます。 エラーがデータベースで処理された場合、Integration Service
では拒否された行は拒否ファイルに書き込まれません。
ロギング
Integration Serviceにより、トランスフォーメーションロジックがデータベースにプッシ
ュされる場合、データベースサーバー内で発生するすべてのイベントは追跡することがで
きません。 Integration Serviceが追跡できる統計は、プッシュダウンの最適化のタイプ
によって異なります。 トランスフォーメーションロジックをデータベースにプッシュした
場合、Integration Serviceで生成されるログのそれぞれに次のような差異が生じます。
¨ セッションログには、データベースで処理されたトランスフォーメーションの詳細情報
が含まれない。
¨ セッションが完全なプッシュダウンの最適化に設定されている場合、セッションログに
スレッドビジー率が含まれない。
¨ Integration Serviceにより完全なプッシュダウンの最適化が使用されており、すべて
のトランスフォーメーションロジックがデータベースにプッシュされる場合、ソースか
ら読み込まれた行数がセッションログに含まれない。
¨ Integration Serviceによりソース側でのプッシュダウンの最適化が使用されている場
合、最適化されたソースから読み込まれた行数がセッションログに含まれる。
リカバリ
セッションが完全なプッシュダウンのの最適化に設定されていて、セッションが失敗した
場合、トランスフォーメーションがデータベースによって処理されるため、Integration
Serviceでは増分リカバリ実行できません。代わりに、データベースによってトランザクシ
ョンがロールバックされます。データベースサーバーに障害が発生すると、データベース
サーバーはリスタート時にトランザクションをロールバックします。Integration Service
に障害が発生すると、データベースサーバーはトランザクションをロールバックします。
Integration Serviceで、一時シーケンスオブジェクトまたはビューをデータベース内に作
成しているとき、行をいっさい処理しないうちに障害が発生した場合、生成されたSQLがデ
ータベースに対して再度実行されます。
エラー処理、ロギング、およびリカバリ
81
すべての行の処理が未完了のうちに障害が発生した場合、次のタスクがIntegration
Serviceで実行されます。
1.
適用可能な場合、Integration Serviceは一時ビューまたはシーケンスオブジェクト
をデータベースから削除またはデータベース内に再作成して、重複値が生成されない
ようにします。
2.
Integration Serviceは、生成されたSQLをデータベースに対して再度実行します。
Integration Serviceで一時ビューまたはシーケンスオブジェクトをデータベースから削除
しているとき、すべての行の処理後に障害が発生した場合、一時オブジェクトの削除が再
度試みられます。
緩やかに変化する次元に関する作業
タイプ1およびタイプ3の緩やかに変化する次元ロジックをデータベースにプッシュできま
す。マッピング内の緩やかに変化する次元ロジックは、複数のトランスフォーメーション
から構成できます。各トランスフォーメーションのルールおよびガイドラインに応じて、
緩やかに変化する次元ロジックをどれだけデータベースにプッシュできるかが決定されま
す。
緩やかに変化する次元のトランスフォーメーションロジックをデータベースにプッシュす
るようにIntegration Serviceを設定する際には、次のルールおよびガイドラインを使用し
てください。
¨ タイプ1およびタイプ3の緩やかに変化する次元マッピングに含まれているトランスフォ
ーメーションは、OracleデータベースまたはIBM DB 2データベースにプッシュできま
す。
¨ ソースデータに重複行があってはなりません。複数の更新を同じ行に対して行った場
合、データベースがデッドロック状態になる可能性があります。
¨ 緩やかに変化する次元マッピングは、バージョン8.5以降の緩やかに変化する次元のウ
ィザードを使用して作成する必要があります。 緩やかに変化する次元ロジックは、以
前のバージョンの緩やかに変化する次元ウィザードで作成されたものである場合、デー
タベースにプッシュできません。
シーケンスおよびビューに関する作業
トランスフォーメーションロジックをデータベースにプッシュするために、Integration
Serviceでは一時シーケンスまたは一時ビューがデータベース内に作成されます。 データ
ベーストランザクションが完了した後は、Integration Serviceでプッシュダウンの最適化
用に作成されたシーケンスオブジェクトおよびビューオブジェクトが削除されます。
82
章 4: プッシュダウンの最適化
シーケンス
シーケンスジェネレータトランスフォーメーションロジックをデータベースにプッシュす
るには、セッションをシーケンスでプッシュダウンの最適化に設定する必要があります。
シーケンスジェネレータトランスフォーメーションロジックをデータベースにプッシュす
るようにセッションを設定した場合、Integration Serviceでは以下のタスクが実行されま
す。
1.
データベース内へのシーケンスオブジェクトの作成。 Integration Serviceにより、
シーケンスジェネレータトランスフォーメーションロジックに基づいてシーケンスオ
ブジェクトがデータベース内に作成されます。 Integration Serviceではシーケンス
オブジェクトごとに一意の名前が作成されます。一意のシーケンスオブジェクト名を
作成するために、ハッシュ関数によって生成された値に接頭語PM_Sが追加されます。
2.
SQLクエリの生成とデータベースに対するSQLクエリの実行。 Integration Serviceに
より、シーケンスジェネレータトランスフォーメーションロジックをデータベースに
プッシュするSQLクエリが生成され、実行されます。
3.
データベースからのシーケンスオブジェクトの削除。トランザクションが完了したと
きに、Integration Serviceによってデータベース内に作成されたシーケンスオブジ
ェクトが削除されます。
シーケンスの作成例
シーケンスジェネレータトランスフォーメーションを使用してリレーショナルターゲット
用プライマリキーを生成する、次のようなマッピングを作成します。
Integration Serviceが、トランスフォーメーションロジックをデータベースにプッシュす
る際、次のSQL文を実行してソースデータベース内にシーケンスオブジェクトを作成しま
す。
CREATE SEQUENCE PM_S6UHW42OGXTY7NICHYIOSRMC5XQ START WITH 1 INCREMENT BY 1 MINVALUE 0 MAXVALUE
9223372036854775807 NOCYCLE CACHE 9223372036854775807
Integration Serviceでシーケンスオブジェクトが作成された後、マッピング内に含まれる
トランスフォーメーションロジックを処理するSQLクエリがIntegration Serviceによって
実行されます。
INSERT INTO STORE_SALES(PRIMARYKEY, QUARTER, SALES, STORE_ID) SELECT
CAST(PM_S6UHW42OGXTY7NICHYIOSRMC5XQ.NEXTVAL AS FLOAT), CAST(CAST(SALES_BYSTOREQUARTER_SRC.QUARTER AS
FLOAT) AS VARCHAR2(10)), CAST(CAST(SALES_BYSTOREQUARTER_SRC.SALES AS NUMBER(10, 2)) AS NUMBER(25,
2)), CAST(SALES_BYSTOREQUARTER_SRC.STORE_ID AS NUMBER(0, 0)) FROM SALES_BYSTOREQUARTER_SRC
セッション完了後、Integration Serviceによってデータベースからシーケンスオブジェク
トが削除されます。セッションが失敗した場合、Integration Serviceはシーケンスオブジ
ェクトをいったん削除して再作成した後、リカバリタスクを実行します。
シーケンスおよびビューに関する作業
83
ビュー
Integration Serviceがデータベース内にビューオブジェクトを作成できるように、セッシ
ョンをビューとともにプッシュダウンの最適化に設定する必要があります。
Integration Serviceでは、次の条件下でビューオブジェクトが作成されます。
¨ SQLオーバーライドで設定されたソース修飾子またはルックアップトランスフォーメー
ション用にプッシュダウンの最適化を設定します。
¨ フィルタで設定されたルックアップトランスフォーメーション用にプッシュダウンの最
適化を設定します。
¨ コネクトされていないルックアップトランスフォーメーション用にプッシュダウンの最
適化を設定します。
Integration Serviceがソース修飾子またはルックアップトランスフォーメーションをデー
タベースにプッシュする際、トランスフォーメーション定義に基づいてビューが作成され
ます。たとえば、Integration Serviceがフィルタを使用するルックアップトランスフォー
メーションに基づいてビューを作成する場合、フィルタされていない行のみを含むビュー
が作成されます。Integration ServiceがSQLオーバーライドを使用するルックアップトラ
ンスフォーメーションをデータベースにプッシュすると、投影されたルックアップポート
だけではなく、すべてのルックアップポートに基づいてビューが作成されます。
Integration Serviceでは、SQLオーバーライドはパースまたは検証されません。 SQLオー
バライドを使用するソース修飾子トランスフォーメーションまたはルックアップトランス
フォーメーションをデータベースにプッシュするようにセッションを設定する場合は、SQL
オーバーライドをそのデータベースに対してテストしてから、セッションを実行してくだ
さい。
ソース修飾子トランスフォーメーションのロジックを一時ビューとともにTeradataにプッ
シュする場合、TeradataのデータディクショナリによりSQL文が失敗することがあります。
多数のプッシュダウン最適化セッションを使用する環境でビューの動的な作成および削除
を行うと、SQL文は失敗します。ソース修飾子トランスフォーメーションにソースフィル
タ、ユーザー定義の結合、SQLオーバーライドのいずれかが含まれている場合は、Teradata
に対するプッシュダウンの最適化の一時ビューの作成は無効にできます。Integration
Serviceが、ビューの代わりに派生テーブルを作成します。
セッションをビューとともにプッシュダウンの最適化に設定した場合、Integration
Serviceでは以下のタスクが実行されます。
84
1.
データベース内でのビューの作成。 Integration Serviceによって、ルックアップフ
ィルタ、接続されていないルックアップ、あるいはソース修飾子トランスフォーメー
ションまたはルックアップトランスフォーメーションでのSQLオーバーライドに基づい
て、データベース内にビューが作成されます。 一意のビュー名を作成するために、
Integration Serviceによって、ハッシュ関数から生成された値にプレフィックスPM_V
が追加されます。
2.
ビューに対するSQLクエリの実行。 Integration Serviceによってビューオブジェク
トが作成された後、データベース内に作成されたビューに対して、トランスフォーメ
ーションロジックをソースにプッシュするSQLクエリが実行されます。
3.
データベースからのビューの削除。トランザクションが完了した時に、Integration
Serviceによって、作成したビューが削除されます。
章 4: プッシュダウンの最適化
ビューの作成例
カスタマデータベース内の94117郵便番号を検索する、次のマッピングを作成します。
Johnsonという名前のバリエーション(Johnsen、Jonssen、Jonsonなど)に一致する名前
の顧客を返す検索を行います。名前の照合を実行するには、ソース修飾子トランスフォー
メーション用のSQLオーバーライドを入力します。
SELECT CUSTOMERS.CUSTOMER_ID, CUSTOMERS.COMPANY, CUSTOMERS.FIRST_NAME, CUSTOMERS.LAST_NAME,
CUSTOMERS.ADDRESS1, CUSTOMERS.ADDRESS2, CUSTOMERS.CITY, CUSTOMERS.STATE, CUSTOMERS.POSTAL_CODE,
CUSTOMERS.PHONE, CUSTOMERS.EMAIL FROM CUSTOMERS WHERE CUSTOMERS.LAST_NAME LIKE 'John%' OR
CUSTOMERS.LAST_NAME LIKE 'Jon%'
Integration Serviceは、このセッションのトランスフォーメーションロジックをデータベ
ースにプッシュする場合に、次のSQL文を実行してソースデータベースにビューを作成しま
す。
CREATE VIEW PM_V4RZRW5GWCKUEWH35RKDMDPRNXI (CUSTOMER_ID, COMPANY, FIRST_NAME, LAST_NAME, ADDRESS1,
ADDRESS2, CITY, STATE, POSTAL_CODE, PHONE, EMAIL) AS SELECT CUSTOMERS.CUSTOMER_ID,
CUSTOMERS.COMPANY, CUSTOMERS.FIRST_NAME, CUSTOMERS.LAST_NAME, CUSTOMERS.ADDRESS1,
CUSTOMERS.ADDRESS2, CUSTOMERS.CITY, CUSTOMERS.STATE, CUSTOMERS.POSTAL_CODE, CUSTOMERS.PHONE,
CUSTOMERS.EMAIL FROM CUSTOMERS WHERE CUSTOMERS.LAST_NAME LIKE 'John%' OR CUSTOMERS.LAST_NAME LIKE
'Jon%'
Integration Serviceでビューが作成された後、マッピング内のトランスフォーメーション
ロジックを実行するSQLクエリーが実行されます。
SELECT PM_V4RZRW5GWCKUEWH35RKDMDPRNXI.CUSTOMER_ID, PM_V4RZRW5GWCKUEWH35RKDMDPRNXI.COMPANY,
PM_V4RZRW5GWCKUEWH35RKDMDPRNXI.FIRST_NAME, PM_V4RZRW5GWCKUEWH35RKDMDPRNXI.LAST_NAME,
PM_V4RZRW5GWCKUEWH35RKDMDPRNXI.ADDRESS1, PM_V4RZRW5GWCKUEWH35RKDMDPRNXI.ADDRESS2,
PM_V4RZRW5GWCKUEWH35RKDMDPRNXI.CITY, PM_V4RZRW5GWCKUEWH35RKDMDPRNXI.STATE,
PM_V4RZRW5GWCKUEWH35RKDMDPRNXI.POSTAL_CODE, PM_V4RZRW5GWCKUEWH35RKDMDPRNXI.PHONE,
PM_V4RZRW5GWCKUEWH35RKDMDPRNXI.EMAIL FROM PM_V4RZRW5GWCKUEWH35RKDMDPRNXI WHERE
(PM_V4RZRW5GWCKUEWH35RKDMDPRNXI.POSTAL_CODE = 94117)
セッション完了後、Integration Serviceによってデータベースからビューが削除されま
す。セッションが失敗した場合、Integration Serviceはビューをいったん削除して再作成
した後、リカバリタスクを実行します。
孤立シーケンスおよびビューのトラブルシューティン
グ
Integration Service、セッション、または接続に障害が発生した場合、Integration
Serviceによってデータベースからシーケンスオブジェクトまたはビューオブジェクトは削
除されません。 この場合、これらのオブジェクトをデータベースから手動で削除してくだ
さい。
注: データベース内の孤立シーケンスオブジェクトおよびビューオブジェクトは、パフォ
ーマンスに影響を及ぼしません。
シーケンスおよびビューに関する作業
85
孤立シーケンスブジェクトまたはビューオブジェクトをデータベースから削除するには、
次の作業を完了します。
1.
データベース内の孤立オブジェクトの特定。データベースのセッションログまたはク
エリに基づいて、孤立オブジェクトを特定できます。 セッション実行から孤立オブジ
ェクトを特定する場合は、セッションログを解析します。特定時点でデータベース内
の孤立オブジェクトをすべて判別する場合は、データベースクエリーを実行します。
2.
データベースからの孤立オブジェクトの削除。特定した孤立オブジェクトは、SQL文を
実行して削除できます。
セッションログを使用した孤立したオブジェクトの特定
Integration Serviceによって、ビューオブジェクトまたはシーケンスオブジェクトの作成
および削除時に、イベントログが書き込まれます。 セッション実行中に、Integration
Service、セッション、または接続性に障害が発生した場合、セッションログを調べて、セ
ッション中に削除されたシーケンスオブジェクトまたはビューオブジェクトを指定するこ
とができます。
例えば、Integration ServiceでビューPM_V4RZRWが削除された場合、次のようなメッセー
ジがセッションログに表示されます。
MAPPING> TM_6356 SQLのプッシュダウンクリーンアップ(ソース: CUSTOMERS)を開始します。 : (Tue Feb 14 13:
23:46 2006)
MAPPING> TM_6358 SQLのプッシュダウンクリーンアップ(ソース: DROP VIEW PM_V4RZRW)を実行しています。
MAPPING> TM_6360 SQLのプッシュダウンクリーンアップ(ソース: CUSTOMERS)が正常に完了しました。 : (Tue
Feb 14 13:23:46 2006)]
SQLクエリを使用した孤立オブジェクトの特定
Integration Serviceでシーケンスオブジェクトまたはビューオブジェクトが削除されない
場合、データベースに対してSQLクエリを実行し、Integration Serviceで作成された孤立
シーケンスオブジェクトまたはビューオブジェクトをすべて特定できます。 Integration
Serviceで複数のセッションが実行された場合、または複数のIntegration Serviceで同じ
データベースアカウントに書き込まれた場合、実行され、シーケンスオブジェクトまたは
ビューオブジェクトを削除しなかった各セッションからすべての孤立オブジェクトがSQLク
エリによって返されます。
Integration Serviceでシーケンスオブジェクトまたはビューオブジェクトがデータベース
内に作成さされた場合、シーケンスオブジェクトの名前にプレフィックスPM_S、ビューオ
ブジェクトの名前にPM_Vが追加されます。 これらのオブジェクトは、そのオブジェクトを
特定するプレフィックスに基づいて検索できます。
以下のクエリに、Integration Serviceで作成されたシーケンスオブジェクトを検索する構
文を示します。
IBM DB2:
SELECT SEQNAME FROM SYSCAT.SEQUENCES
WHERE SEQSCHEMA = CURRENT SCHEMA
AND SEQNAME LIKE ‘PM\_S%’ ESCAPE ‘\\u2019
86
章 4: プッシュダウンの最適化
Oracle:
SELECT SEQUENCE_NAME FROM USER_SEQUENCES
WHERE SEQUENCE_NAME LIKE ‘PM\_S%’ ESCAPE ‘\\u2019
以下のクエリに、Integration Serviceで作成されたビューオブジェクトを検索する構文を
示します。
IBM DB2:
SELECT VIEWNAME FROM SYSCAT.VIEWS
WHERE VIEWSCHEMA = CURRENT SCHEMA
AND VIEW_NAME LIKE ‘PM\_V%’ ESCAPE ‘\\u2019
Oracle:
SELECT VIEW_NAME FROM USER_VIEWS
WHERE VIEW_NAME LIKE ‘PM\_V%’ ESCAPE ‘\\u2019
Microsoft SQL ServerまたはSybase ASE:
SELECT NAME FROM SYSOBJECTS
WHERE TYPE=‘V’ AND NAME LIKE ‘PM\_V%’ ESCAPE ‘\\u2019
Teradata:
SELECT TableName FROM DBC.Tables
WHERE CreatorName = USER
AND TableKind =‘V’
AND TableName LIKE ‘PM\_V%’ ESCAPE ‘\\u2019
孤立したオブジェクトの削除
Integration Serviceで作成されたシーケンスオブジェクトまたはビューオブジェクトのリ
ストを取得した後、SQL DROP文を実行して、シーケンスオブジェクトまたはビューオブジ
ェクトをデータベースから削除することができます。
以下のクエリは、任意のデータベース上のIntegration Serviceで作成されたシーケンスオ
ブジェクトを削除する構文を示しています。
DROP SEQUENCE <sequence name>
以下のクエリは、任意のデータベース上のIntegration Serviceで作成されたビューオブジ
ェクトを削除する構文を示しています。
DROP VIEW <view name>
$$PushdownConfigマッピングパラメータの使
用
データベース負荷に応じて、ソース側、ターゲット側、または完全なプッシュダウンの最
適化を時と場合によって使い分けることができます。例えば、1日のうちピーク時間ではソ
ース側またはターゲット側のプッシュダウン最適化を使用し、データベースアクティビテ
ィが低下する深夜0時から午前2時までは完全なプッシュダウンの最適化を使用します。
プッシュダウンの最適化を時と場合によって使い分けるには、$$PushdownConfigマッピン
グパラメータを使用します。このパラメータを使用して、セッションを様々なタイプのプ
$$PushdownConfigマッピングパラメータの使用
87
ッシュダウンの最適化で実行することができます。$$PushdownConfigパラメータの設定に
よって、セッションプロパティの最適化設定がオーバライドされます。
次の手順に従って、マッピングパラメータを設定します。
88
1.
Mapping Designerで$$PushdownConfigを作成します。
2.
Mapping Designerで$$PushdownConfigマッピングパラメータを追加する場合は、以下
の値を使います。
フィールド
値
名前
$$PushdownConfig
タイプ
パラメータ
データ型
String
精度または位取り
20
集計
なし
初期値
なし
説明
オプション
3.
セッションを設定するとき、プッシュダウンの最適化属性として$$PushdownConfigを
選択します。
4.
パラメータファイルのパラメータを定義します。
5.
パラメータファイルの$$PushdownConfigとして以下の値のいずれかを入力します。
値
説明
None
Integration Serviceによりセッションのすべてのトラン
スフォーメーションロジックが処理されます。
Source [Seq
View Conn]
Integration Serviceによりトランスフォーメーションロ
ジックが可能な限りソースデータベースへプッシュされま
す。
Target [Seq
View Conn]
Integration Serviceによりトランスフォーメーションロ
ジックが可能な限りターゲットデータベースへプッシュさ
れます。
Full [Seq
View Conn]
Integration Serviceによりトランスフォーメーションロ
ジックが可能な限りソースデータベースとターゲットデー
タベースへプッシュされます。Integration Serviceは、
データベースにプッシュできなかったトランスフォーメー
ションロジックを処理します。
章 4: プッシュダウンの最適化
オプションとして、以下のオプションを1つ以上指定します。
¨ Seq。Integration Serviceでデータベース内にシーケンスオブジェクトを作成で
きるようにします。
¨ View。Integration Serviceでデータベース内にビューオブジェクトを作成できる
ようにします。
¨ Conn。動作可能なデータベースのデータベースユーザーが、動作可能なデータベー
スにトランスフォーメーションロジックをプッシュするのに必要な、アイドル状態
のデータベースに対して読み取り権限を持っていることを示します。
例えば、「Full View Conn」と入力して完全なプッシュダウンの最適化を使用した場
合、動作可能なデータベース内にビューオブジェクトの作成が有効になり、動作可能
なデータベースにアイドル状態のデータベースに対する読み取り権限があることを示
します。
プッシュダウンの最適化のためのセッション
の設定
セッションプロパティでセッションをプッシュダウンの最適化に設定します。ただし、よ
り多くのトランスフォーメーションロジックをデータベースに渡すために、トランスフォ
ーメーション、マッピング、またはセッションの設定を編集することが必要になる場合が
あります。データベースに渡すことのできるトランスフォーメーションを、プッシュダウ
ンの最適化ビューアを使用して調べます。
プッシュダウンオプション
セッションプロパティで設定できるプッシュダウン最適化オプションは、次のとおりで
す。
¨ プッシュダウンの最適化。プッシュダウンの最適化のタイプ。 $$PushdownConfigマッ
ピングパラメータを使用する場合は、マッピングパラメータを設定したこと、およびそ
の値をパラメータファイル内に定義したことを確認します。
¨ プッシュダウンに対する一時ビューの許可。PowerCenter Integration Serviceにより
セッションがデータベースにプッシュされる場合に、PowerCenter Integration
Serviceでデータベースに一時ビューオブジェクトを作成できます。 セッションに、ソ
ース修飾子トランスフォーメーションまたはルックアップトランスフォーメーションの
SQLオーバーライド、フィルタリングされたルックアップ、あるいは接続されていない
ルックアップが含まれている場合、PowerCenter Integration Serviceによりデータベ
ースにビューが作成されます。
Teradataソースを使用し、ソースフィルタ、ユーザー定義の結合、SQLオーバーライド
のいずれかがソース修飾子トランスフォーメーションに含まれている場合、一時プッシ
ュダウンビューを許可する必要はありません。ソース修飾子トランスフォーメーション
のロジックを一時ビューとともにTeradataにプッシュする場合、Teradataのデータディ
クショナリによりSQL文が失敗することがあります。多数のプッシュダウン最適化セッ
プッシュダウンの最適化のためのセッションの設定
89
ションを使用する環境でビューの動的な作成および削除を行うと、SQL文は失敗しま
す。
¨ プッシュダウンに対する一時シーケンスの許可。PowerCenter Integration Serviceで
データベースに一時シーケンスオブジェクトを作成できるようにします。 セッション
にシーケンスジェネレータトランスフォーメーションが含まれている場合、
PowerCenter Integration Serviceがデータベースにシーケンスオブジェクトを作成す
る必要があります。
¨ ユーザー互換のない接続に対するプッシュダウンの許可。動作可能なデータベースのデ
ータベースユーザーが、アイドル状態のデータベースに対して読み取り権限があること
を示します。 動作可能なデータベースのデータベースユーザーが、アイドル状態のデ
ータベースに対して読み取り権限があることを示しているが、実際にはない場合、セッ
ションは失敗します。 アクティブ状態のデータベースのデータベースユーザーにアイ
ドル状態のデータベースの読み取り権限があることを示さない場合、トランスフォーメ
ーションロジックはデータベースにプッシュされません。
プッシュダウンの最適化ビューアを使用して、マッピング、トランスフォーメーション、
またはセッションの設定を編集して、より多くのトランスフォーメーションロジックをデ
ータベースにプッシュする必要があるかどうかを決定します。 プッシュダウンの最適化ビ
ューアには、ソース側、ターゲット側または完全なプッシュダウンの最適化を使用してト
ランスフォーメーションロジックをデータベースにプッシュできるかどうかが示されま
す。 トランスフォーメーションロジックをデータベースにプッシュできる場合は、データ
ベースにプッシュできるトランスフォーメーションの全一覧がプッシュダウンの最適化ビ
ューアに表示されます。
プッシュダウンの最適化ビューアでプッシュダウンオプションまたはプッシュダウングル
ープを選択し、指定の選択範囲に対して生成された対応するSQL文を表示することもできま
す。
注: プッシュダウンオプションまたはプッシュダウングループを選択した場合は、プッシ
ュダウンの設定を変更しません。設定を変更するには、セッションプロパティでプッシュ
ダウンオプションを更新する必要があります。
パーティション化
パーティションタイプがパススルーパーティション化またはキー範囲パーティション化の
場合、複数のパーティションを持つセッションをデータベースにプッシュできます。
パススルーパーティション化用のプッシュダウン最適化
パススルーパーティション化を使用するセッションをプッシュダウン最適化の設定にした
場合、データベースはパーティション間に行を再配分することなしにデータを処理しま
す。ある1つのパーティションに置かれた行はすべて、パススルーパーティションポイント
を通過した後も同じパーティションにとどまります。
トランスフォーメーションロジックをデータベースにプッシュするには、すべてのパーテ
ィションポイントをパススルーパーティション化の設定にする必要があります。たとえ
ば、セッションに4つのパーティションポイントがあるとします。最初の3つのパーティシ
ョンポイントをパススルーパーティション化の設定にし、最後のパーティションポイント
を自動ハッシュキーパーティション化の設定にします。トランスフォーメーョンロジック
(最後のパーティションポイント以降のトランスフォーメーション以外すべて)は、
90
章 4: プッシュダウンの最適化
Integration Serviceによってデータベースにプッシュされます。最後のパーティションポ
イント以降のトランスフォーメーションは、Integration Serviceによって処理されます。
キー範囲パーティション化用のプッシュダウン最適化
ソース修飾子トランスフォーメーションでキー範囲パーティション化を使用するセッショ
ンをプッシュダウン最適化の設定にした場合、Integration Serviceはすべての行を最初の
パーティションにマージし、後続の各パーティションに対しては空のデータを渡します。
Integration Serviceでは各パーティション用にSQL文が作成されます。 Integration
Serviceにより、一部のトランスフォーメーションロジックのみがデータベースにプッシュ
される場合、セッションの実行時にはパーティション間に行が再分散されません。
Integration Serviceですべてのトランスフォーメーションロジックをデータベースにプッ
シュできるようにするには、セッションが以下の基準を満たしている必要があります。
¨ すべての行を最初のパーティションにマージするには、各パーティションの終了キー範
囲が次のパーティションの開始範囲と等しくなければならない。終了キー範囲が、次の
パーティションと重なり合うことはできない。たとえば、1つめのパーティションの終
了レンジが3386の場合、2つめのパーティションの開始レンジは3386である必要があり
ます。
¨ ソース修飾子トランスフォーメーションでパーティションポイントをキー範囲パーティ
ション化が使用されるように設定し、後続のすべてのパーティションポイントをハッシ
ュ自動キーパーティション化またはパススルーパーティション化のどちらかが使用され
るように設定する必要があります。
複数のパーティションを持つセッションのプッシュダウンの最
適化の例
以下の図に、ソータトランスフォーメーションとハッシュ自動キーパーティション化を持
つマッピングを示します。
プッシュダウンの最適化のためのセッションの設定
91
1つめのキー範囲は1313 - 3340で、2つめのキー範囲は3340 - 9354です。次のSQL文は、
すべてのデータを1つめのパーティションに統合します。
SELECT ITEMS.ITEM_ID, ITEMS.ITEM_NAME, ITEMS.ITEM_DESC FROM ITEMS1 ITEMS WHERE (ITEMS.ITEM_ID >=
1313) AND (ITEMS.ITEM_ID < 9354) ORDER BY ITEMS.ITEM_ID
このSQL文は品目1313 - 9354を選択します。これにはキー範囲内のすべての値が含まれて
います。このSQL文は、両方のパーティションからのデータを1つめのパーティションに統
合します。
2つめのパーティションのSQL文は空データを渡します。
SELECT ITEMS.ITEM_ID, ITEMS.ITEM_NAME, ITEMS.ITEM_DESC FROM ITEMS1 ITEMS WHERE (1 = 0) ORDER BY
ITEMS.ITEM_ID
複数のパーティションを持つセッションに関するルールおよび
ガイドライン
複数のパーティションを使用するセッションをデータベースにプッシュするように
Integration Serviceを設定する際には、次のルールおよびガイドラインを使用してくださ
い。
Integration Serviceで複数のパーティションを使用するセッションをデータベースにプッ
シュできるのは、次の場合です。
¨ セッションにより、ソース修飾子トランスフォーメーションのパーティションポイント
および後続のすべてのパーティションポイントでパススルーパーティション化が使用さ
れる場合、Integration Serviceではソース側、ターゲット側、または完全なプッシュ
ダウンの最適化が使用されトランスフォーメーションロジックがデータベースにプッシ
ュされます。
¨ セッションにより、ソース修飾子トランスフォーメーションでキー範囲パーティション
化が使用され、ダウンストリームパーティションポイントにハッシュ自働キーパーティ
ションまたはパススルーパーティションが含まれる場合、Integration Serviceではソ
ース側または完全なプッシュダウンの最適化が使用されトランスフォーメーションロジ
ックがデータベースにプッシュされます。
プッシュダウンの最適化でトランスフォーメーションのパーティションからのデータが最
初のパーティションにマージされ、ダウンストリームトランスフォーメーションのトラン
スフォーメーションロジックがIntegration Serviceによって処理された場合、ダウンスト
リームトランスフォーメーション内のパーティション間に行が再配分されません。引き続
き最初のパーティションに行が渡され、他のパーティションに空のデータが渡されます。
ターゲットロードルール
ターゲットロードルールは、セッションをデータベースにプッシュできるかどうかに影響
を与える場合があります。
92
章 4: プッシュダウンの最適化
次の表に、各種のターゲットロードオプションに対応するプッシュダウンの最適化を示し
ます。
ターゲットオプション
ソース
ターゲット
完全
挿入
X
X
X
削除
X
X
X
更新(更新として)
X
X
X
更新(挿入として)
X
X
X
更新(でなければ挿入)
X
X
はい/いい
え
ターゲットロードロジックをデータベースにプッシュするようにIntegration Serviceを設
定する際には、以下のルールおよびガイドラインを使用します。
¨ 完全なプッシュダウンの最適化を使用してもパフォーマンス向上が達成されず、ソース
行を削除または更新として扱う場合は、ソース側のプッシュダウン最適化を使用してく
ださい。
¨ セッションに共有体トランスフォーメーションが含まれていて、Integration Service
によってトランスフォーメーションロジックがSybaseデータベースに渡される場合、完
全なプッシュダウンの最適化が使用できないため、ソース行を削除または更新として扱
うことになります。
プッシュダウングループの表示
セッションをプッシュダウンの最適化に設定した場合、Integration Serviceによりトラン
スフォーメーションロジックに基づいてSQL文が生成されます。 1つのSQL文として処理で
きるトランスフォーメーションのグループは、プッシュダウングループと呼ばれます。
トランスフォーメーションロジックをデータベースにプッシュする場合、パイプライン、
ソース、およびターゲットの数と使用するプッシュダウンの最適化のタイプに応じて、
Integration Serviceにより複数のプッシュダウングループが作成される場合があります。
セッションに複数のパーティションがある場合、Integration Serviceによりグループ内の
パーティションごとにSQL文が実行されます。 パイプラインを結合した場合、各パイプラ
インのトランスフォーメーションは1つのプッシュダウングループに統合されます。同じト
ランスフォーメーションが2つ以上のターゲットに渡されるトランスフォーメーションロジ
ックの一部である場合、そのトランスフォーメーションは、各ターゲットのプッシュダウ
ングループの一部です。
プッシュダウングループは、プッシュダウンの最適化ビューアを使用して表示できます。
プッシュダウンの最適化ビューアでプッシュダウングループを表示した場合、データベー
スにプッシュできるトランスフォーメーションと、Integration Serviceで処理されるトラ
ンスフォーメーションを特定できます。 プッシュダウンの最適化ビューアに表示されるメ
ッセージを基に、より多くのトランスフォーメーションロジックがデータベースにプッシ
ュされるようにトランスフォーメーションまたはマッピングを編集する方法を決めること
もできます。マッピング変数を使用する場合、またはグリッド上で実行されるようにセッ
プッシュダウンの最適化のためのセッションの設定
93
ションを設定する場合、プッシュダウンの最適化ビューアは、セッション内で実行される
SQLを表示できません。
生成されたSQLを表示したときに、一時ビューオブジェクトおよびシーケンスオブジェクト
の名前は、セッション中に生成されたビューオブジェクトおよびシーケンスオブジェクト
の名前とは異なっています。Integration Serviceではハッシュ関数が使用され、生成した
シーケンスオブジェクトおよびビューオブジェクトごとに一意の名前が作成されます。
以下の図に、プッシュダウンの最適化ビューアに表示されるマッピングを示します。 ソー
スデータベースとターゲットデータベースにプッシュできる2つのプッシュダウングループ
が含まれています。
パイプライン1とパイプライン2は異なるソースから発生しており、プッシュダウンの最適
化に有効なトランスフォーメーションを含んでいます。Integration Serviceによりターゲ
ットごとにプッシュダウングループが作成され、プッシュダウングループごとにSQL文が生
成されます。 これら2つのパイプラインは結合されているため、ジョイナトランスフォー
メーションに至るまでのトランスフォーメーション(ジョイナトランスフォーメーション
を含む)は両方のパイプラインの一部であり、両方のプッシュダウングループに含まれま
す。
プッシュダウングループを表示するには、プッシュダウンの最適化ビューアを開きます。
プッシュダウンの最適化ビューアでは、Integration Serviceでランタイム時に生成される
プッシュダウングループとSQL文がプレビューされます。
プッシュダウングループを表示する手順:
1.
Workflow Managerで、プッシュダウンの最適化に設定されたセッションを開きます。
2.
[マッピング]タブで、左ペインの[プッシュダウンの最適化]、または右ペインの
[プッシュダウンの最適化の表示]を選択します。
プッシュダウンの最適化ビューアにプッシュダウングループと、各プッシュダウング
ループを構成しているトランスフォーメーションが表示されます。パイプラインで複
数のパーティションを設定している場合、SQL文はパーティションごとに表示されま
す。プッシュダウングループおよびプッシュダウンオプションごとに生成されたメッ
セージとSQL文を表示できます。プッシュダウンオプションには、[None]、[To
Source]、[To Target]、[Full]、および[$$PushdownConfig]があります。
94
章 4: プッシュダウンの最適化
以下の図に、ソースデータベースにプッシュできる2つのパーティションを持つ1つの
パイプラインを含むマッピングを示します。
図 1. プッシュダウンの最適化ビューア
3.
プッシュダウンの最適化ビューアで、プッシュダウンオプションを選択して、SQL文を
プレビューします。
ビューアのプッシュダウンオプションによって、実行時に発生する最適化は影響を受
けません。セッションのプッシュダウンの最適化を変更するには、セッションプロパ
ティを編集します。
4.
接続変数を使用するようにセッションを設定する場合は、[接続プレビューの結果]
をクリックし、プレビューする接続値を選択します。
セッションが接続変数を使用する場合は、プッシュダウンの最適化ビューアを開くた
びに接続値を選択する必要があります。選択した値は、Workflow Managerで保存され
ないため、Integration Serviceでランタイム時には使用されません。
SQLオーバーライドに$$$SessStartTime変数が含まれている場合、プッシュダウンの
最適化をプレビューした際にプッシュダウンの最適化ビューアではこの変数は展開さ
れません。
プッシュダウンの最適化のためのセッションの設定
95
第 5 章
プッシュダウンの最適化トラ
ンスフォーメーション
この章では、以下の項目について説明します。
¨ プッシュダウンの最適化およびトランスフォーメーションの概要, 96 ページ
¨ アグリゲータトランスフォーメーション, 98 ページ
¨ 式トランスフォーメーション, 99 ページ
¨ フィルタトランスフォーメーション, 99 ページ
¨ ジョイナトランスフォーメーション, 100 ページ
¨ ルックアップトランスフォーメーション, 101 ページ
¨ ルータートランスフォーメーション, 104 ページ
¨ シーケンスジェネレータトランスフォーメーション, 104 ページ
¨ ソータトランスフォーメーション, 106 ページ
¨ ソース修飾子トランスフォーメーション, 107 ページ
¨ ターゲット, 109 ページ
¨ 共有体トランスフォーメーション, 110 ページ
¨ アップデートストラテジトランスフォーメーション, 110 ページ
プッシュダウンの最適化およびトランスフォ
ーメーションの概要
Integration Serviceでプッシュダウンの最適化を設定すると、各トランスフォーメーショ
ンがデータベースにプッシュされます。Integration Serviceがトランスフォーメーション
をデータベースにプッシュできるかどうかに影響する基準は、次のとおりです。
¨ トランスフォーメーションのタイプ
¨ マッピング内のトランスフォーメーションの位置
¨ トランスフォーメーションに対するマッピングおよびセッションの設定
¨ トランスフォーメーション内に格納されている式
96
この基準は、Integration Serviceで実行できるプッシュダウン最適化のタイプ、およびト
ランスフォーメーションをプッシュできるデータベースのタイプにも影響を及ぼす場合が
あります。
Integration Serviceでは、次のトランスフォーメーションのロジックをデータベースにプ
ッシュできます。
¨ アグリゲータ
¨ 式
¨ フィルタ
¨ ジョイナ
¨ ルックアップ
¨ ルータ
¨ シーケンスジェネレータ
¨ ソータ
¨ ソース修飾子
¨ ターゲット
¨ 共有体
¨ アップデートストラテジ
プッシュダウンの最適化とトランスフォーメーション
に関するルールおよびガイドライン
トランスフォーメーションのロジックをデータベースにプッシュするようにIntegration
Serviceを設定する際には、以下のルールおよびガイドラインを使用します。
以下の条件のいずれかに当てはまる場合、Integration Serviceによってトランスフォーメ
ーションロジックが処理されます。
¨ トランスフォーメーションロジックがマッピング変数を更新し、それをリポジトリデー
タベースに保存する。
¨ トランスフォーメーションに変数ポートが含まれている。
¨ トランスフォーメーションが以下の条件のすべてを満たしている。
- ソータトランスフォーメーション、共有体トランスフォーメーション、ターゲットの
どれでもない。
- Microsoft SQL Server、Sybase、またはTeradataにプッシュされる。
- ソータトランスフォーメーションからのダウンストリームである。これは、共有体ト
ランスフォーメーションからのダウンストリームである、または識別ソートを含んで
いる。
¨ 入力ポートまたは出力ポートのデフォルト値を上書きするようにセッションが設定され
ている。
¨ トランスフォーメーション内の式に使用されている等価演算子、変数または関数が、デ
ータベース内にない。
プッシュダウンの最適化およびトランスフォーメーションの概要
97
¨ マッピングに含まれているブランチが多すぎる。パイプラインをブランチに分岐する場
合、マッピングロジックを表すために必要なSQL文は複雑になります。Integration
Serviceは、64個を超える2方向へのブランチ、43個の3方向へのブランチ、または32個
の4方向へのブランチが含まれるマッピングのSQLを生成することはできません。 マッ
ピングのブランチがこれらの制限を超えている場合、Integration Serviceではダウン
ストリームトランスフォーメーションが処理されます。
次のいずれかの条件に該当する場合、マッピング内のすべてのトランスフォーメーション
がIntegration Serviceによって処理されます。
¨ セッションがデータプロファイルセッションまたはデバッグセッションである。
¨ セッションが行エラーをログ記録するように設定されている。
アグリゲータトランスフォーメーション
次の表に、アグリゲータトランスフォーメーションをプッシュできる各データベースのプ
ッシュダウンタイプを示します。
データベース
プッシュダウンタイプ
IBM DB2
ソース側、完全
Microsoft SQL Server
ソース側、完全
Netezza
ソース側、完全
Oracle
ソース側、完全
Sybase ASE
ソース側、完全
Teradata
ソース側、完全
ODBC
ソース側、完全
以下の条件のいずれかに当てはまる場合、Integration Serviceによってアグリゲータトラ
ンスフォーメーションが処理されます。
¨ セッションおよびマッピングが差分集計用に設定されている。
¨ トランスフォーメーションに、ネストされた集計関数が含まれている。
¨ トランスフォーメーションに、集計式の条件節が含まれている。
¨ トランスフォーメーションでポート式にFIRST()関数、LAST()関数、MEDIAN()関数、ま
たはPERCENTILE()関数が使用されている。
¨ 出力ポートは、集計ポートでないかまたはGroupByポートの一部ではない。
¨ トランスフォーメーションは、Microsoft SQL Server、Sybase、またはTeradataにプ
ッシュされ、ソータトランスフォーメーションからのダウンストリームである。
98
章 5: プッシュダウンの最適化トランスフォーメーション
式トランスフォーメーション
次の表に、式トランスフォーメーションをプッシュできる各データベースのプッシュダウ
ンタイプを示します。
データベース
プッシュダウンタイプ
IBM DB2
ソース側、ターゲット側、完全
Microsoft SQL Server
ソース側、ターゲット側、完全
Netezza
ソース側、ターゲット側、完全
Oracle
ソース側、ターゲット側、完全
Sybase ASE
ソース側、ターゲット側、完全
Teradata
ソース側、ターゲット側、完全
ODBC
ソース側、ターゲット側、完全
接続されていないストアドプロシージャを呼び出す場合、Integration Serviceによって式
トランスフォーメーションが処理されます。
フィルタトランスフォーメーション
PowerCenter Integration Serviceで処理するデータの量を減らすには、データベースに
フィルタトランスフォーメーションをプッシュします。フィルタ式をデータベースにプッ
シュできない場合、フィルタトランスフォーメーションはPowerCenter Integration
Serviceによって処理されます。例えば、データベースにプッシュできない演算子がフィル
タ式に含まれている場合、Integration Serviceはそのフィルタ式をデータベースにプッシ
ュしません。
次の表に、フィルタトランスフォーメーションをプッシュできるデータベースごとにプッシ
ュダウンタイプを示します。
データベース
プッシュダウンタイプ
IBM DB2
ソース側、完全
Microsoft SQL Server
ソース側、完全
Netezza
ソース側、完全
Oracle
ソース側、完全
式トランスフォーメーション
99
データベース
プッシュダウンタイプ
Sybase ASE
ソース側、完全
Teradata
ソース側、完全
ODBC
ソース側、完全
ジョイナトランスフォーメーション
データベースのインデックスおよび統計の使用を最適化するには、データベースにジョイ
ナトランスフォーメーションをプッシュします。
次の表に、ジョイナトランスフォーメーションをプッシュできるデータベースごとにプッシ
ュダウンタイプを示します。
データベース
プッシュダウンタイプ
IBM DB2
ソース側、完全
Microsoft SQL Server
ソース側、完全
Netezza
ソース側、完全
Oracle
ソース側、完全
Sybase ASE
ソース側、完全
Teradata
ソース側、完全
ODBC
ソース側、完全
以下の条件のいずれかに当てはまる場合、Integration Serviceによってジョイナトランス
フォーメーションが処理されます。
¨ Integration Serviceがジョイナトランスフォーメーションのマスタパイプラインおよ
び詳細パイプラインをデータベースにプッシュできない。
¨ 結合条件が、バイナリデータタイプのカラムに基づいている。
¨ ジョイナトランスフォーメーションの入力グループが異なるリレーショナルデータベー
ス管理システム上のデータベースから発生している。
¨ セッションがソース行をすべてアップデートとしてマークするように設定されており、
Teradataへのプッシュダウンの最適化が設定されている。
¨ トランスフォーメーションに外部結合が設定されており、マスタソースまたは詳細ソー
スが複数テーブル結合である。 複数テーブル結合に結合された外部結合を表すSQLを、
Integration Serviceで生成できない。
100
章 5: プッシュダウンの最適化トランスフォーメーション
¨ トランスフォーメーションに完全外部結合が設定されており、Sybaseへのプッシュダウ
ンの最適化が設定されている。
¨ マスタブランチ内のトランスフォーメーションに基づいてIntegration Serviceによっ
てビューまたはシーケンスが作成されており、マスタブランチと詳細ブランチが同じデ
ータベースから生じていない。
¨ トランスフォーメーションは、Microsoft SQL Server、Sybase、またはTeradataにプ
ッシュされ、アグリゲータトランスフォーメーションからのダウンストリームであるソ
ータトランスフォーメーションからのダウンストリームである。
¨ トランスフォーメーションはソータトランスフォーメーションからのダウンストリーム
であり、Microsoft SQL Server、Sybase、またはTeradataにプッシュされ、マスタテ
ーブルと詳細テーブルが、同じソース修飾子トランスフォーメーションインスタンスか
ら生じている。
ルックアップトランスフォーメーション
ルックアップトランスフォーメーションにプッシュダウンの最適化を設定した場合、デー
タベースは、データベースルックアップテーブルでルックアップを実行します。データベ
ースにルックアップトランスフォーメーションをプッシュすると、行ごとに追加のサブク
エリが必要になるため負荷が高くなります。ルックアップの回数が多いマッピングのパフ
ォーマンスを向上させるには、プッシュダウンの最適化を使用する代わりに、PowerCenter
でルックアップキャッシュを有効にします。
次の表に、ルックアップトランスフォーメーションをプッシュできるデータベースごとにプ
ッシュダウンタイプを示します。
データベース
プッシュダウンタイプ
IBM DB2
ソース側、ターゲット側、完全
Microsoft SQL Server
ソース側、完全
Netezza
ソース側、完全
Oracle
ソース側、ターゲット側、完全
Sybase ASE
ソース側、完全
Teradata
ソース側、完全
ODBC
ソース側、完全
ルックアップトランスフォーメーション
101
ルックアップトランスフォーメーションのロジックをデータベースにプッシュするように
Integration Serviceを設定する際には、次のルールおよびガイドラインを使用してくださ
い。
¨ データベースはトランスフォーメーションロジックの処理時にPowerCenterキャッシュ
を使用しません。
¨ 複数のルックアップトランスフォーメーションが別個のパイプラインブランチに存在し
ていて、ブランチがダウンストリームで統合されている場合、Integration Serviceは
パイプラインブランチの後のすべてのトランスフォーメーションを処理します。
¨ ターゲット側に対してプッシュダウン最適化を実行するように設定されたセッションが
データタイプ変換を必要とする場合、このセッションは失敗します。
¨ Integration Serviceと異なり、Netezzaデータベースは単一のルックアップに対して
複数の行を返すことができます。
¨ ルックアップトランスフォーメーションにSQLオーバーライドが含まれるか、フィルタ
が含まれるか、あるいはルックアップトランスフォーメーションが接続されていないル
ックアップトランスフォーメーションである場合は、ビューを使用してプッシュダウン
の最適化を設定します。
¨ マッピングにNetezzaに対するルックアップが含まれ、そのルックアップ一致ポリシー
が「すべての値に一致」に設定されていない場合、プッシュダウンの最適化はルックア
ップトランスフォーメーションで停止されます。
以下の条件のいずれかに該当する場合、ルックアップトランスフォーメーションは
Integration Serviceによって処理されます。
¨ トランスフォーメーションがパイプラインルックアップに設定されている。
¨ トランスフォーメーションに動的キャッシュが使用されている。
¨ 最初、最後、または任意のマッチング値を返すようにトランスフォーメーションが設定
されている。プッシュダウンの最適化を使用するには、複数の一致についてエラーがレ
ポートされるようにルックアップトランスフォーメーションを設定する必要がありま
す。
¨ トランスフォーメーションでは、データベース内でビューが作成され、ルックアップ入
力を提供するデータベースがビューの作成元データベースとは異なっていることが要求
される。
¨ トランスフォーメーションは、Microsoft SQL Server、Sybase、またはTeradataにプ
ッシュされ、アグリゲータトランスフォーメーションからのダウンストリームであるソ
ータトランスフォーメーションからのダウンストリームである。
¨ セッションがソース行をすべてアップデートとしてマークするように設定されており、
Teradataへのプッシュダウンの最適化が設定されている。
¨ ソース側のプッシュダウンの最適化を実行するようにセッションが設定され、ルックア
ップテーブルとソーステーブルが別々のリレーショナルデータベース管理システム内に
存在する。
¨ ターゲット側のプッシュダウンの最適化を実行するようにセッションが設定され、ルッ
クアップテーブルとターゲットテーブルが別々のリレーショナルデータベース管理シス
テム内に存在する。
¨ The Integration Serviceにより、Netezzaデータベースターゲットに対してトランス
フォーメーションのプッシュが試行される。
102
章 5: プッシュダウンの最適化トランスフォーメーション
接続されていないルックアップトランスフォーメーシ
ョン
接続されていないルックアップトランスフォーメーションをデータベースにプッシュする
ようにIntegration Serviceを設定する際には、次のルールおよびガイドラインを使用して
ください。
¨ コネクトされていないルックアップがセッションに複数含まれている場合は、データベ
ースの実行速度がIntegration Serviceよりも遅くなる可能性があります。
Integration Serviceでは、コネクトされていないルックアップを呼び出すたびにアウ
タージョインが作成されるため、生成されたSQLが複雑になる可能性があります。セッ
ションをプッシュダウン最適化ありまたはなしでテストして、パフォーマンスが良いの
はどちらのセッションかを確認します。
¨ セッションをビューと共にプッシュダウンの最適化に設定します。
以下の条件のいずれかに当てはまる場合、Integration Serviceによって接続されていない
ルックアップトランスフォーメーションが処理されます。
¨ ルックアップ接続に、ソース接続とのプッシュダウン互換がない。
¨ ターゲット側でのプッシュダウンの最適化を設定する。
¨ トランスフォーメーションがアグリゲータトランスフォーメーションからのダウンスト
リームトランスフォーメーションである。
¨ トランスフォーメーションがパッシブであり、Netezzaデータベースからルックアップ
している。
SQLオーバライドを使用するLookupトランスフォーメー
ション
SQLオーバライドを使用するLookupトランスフォーメーションのロジックをデータベースに
プッシュするようにIntegration Serviceを設定する際には、次のルールおよびガイドライ
ンを使用してください。
¨ ルックアップオーバライドでは、SQL文にORDER BY句を追加できません。ORDER BY句を
追加すると、セッションが失敗します。
¨ SQLオーバーライドが、ルックアップトランスフォーメーション内のポートの順序と同
じ順序でルックアップトランスフォーメーション内のすべてのポートを選択することを
確認します。
¨ SQLオーバーライド内のSELECT文がデータベースシーケンスを参照する場合、セッショ
ンが失敗します。
SQLオーバーライドを使用するルックアップトランスフォーメーションは、SQLオーバーラ
イドのInformaticaアウタージョイン構文を含む場合、によって処理されます。SQLオーバ
ーライドにANSIアウタージョイン構文を使用して、トランスフォーメーションをデータベ
ースにプッシュします。
ルックアップトランスフォーメーション
103
ルータートランスフォーメーション
次の表に、ルータートランスフォーメーションをプッシュできるデータベースごとのプッ
シュダウンタイプを示します。
データベース
プッシュダウンタイプ
IBM DB2
ソース側、完全
Microsoft SQL Server
ソース側、完全
Netezza
ソース側、完全
Oracle
ソース側、完全
Sybase ASE
ソース側、完全
Teradata
ソース側、完全
ODBC
ソース側、完全
ソースデータベースにプッシュできる単一のトランスフォーメーションに出力グループを
すべてマージできる場合は、ソース側プッシュダウンを使用することができます。
ルータ式をデータベースにプッシュできない場合、ルータトランスフォーメーションは
Integration Serviceによって処理されます。例えば、データベースにプッシュできない演
算子が式の中に含まれている場合、Integration Serviceではその式はデータベースにプッ
シュされません。
シーケンスジェネレータトランスフォーメー
ション
次の表に、シーケンスジェネレータトランスフォーメーションをプッシュできるデータベ
ースごとにプッシュダウンタイプを示します。
104
データベース
プッシュダウンタイプ
IBM DB2
ソース側、ターゲット側、完全
Microsoft SQL Server
サポートされていません。
Netezza
サポートされていません。
Oracle
ソース側、ターゲット側、完全
章 5: プッシュダウンの最適化トランスフォーメーション
データベース
プッシュダウンタイプ
Sybase
サポートされていません。
Teradata
サポートされていません。
ODBC
サポートされていません。
以下の条件のいずれかに当てはまる場合、Integration Serviceによってシーケンスジェネ
レータトランスフォーメーションが処理されます。
¨ トランスフォーメーションが再利用可能である。
¨ トランスフォーメーションが複数のターゲットに接続されている。
¨ トランスフォーメーションがCURRVALポートに接続する。
¨ トランスフォーメーションは、別個の行を選択するように設定されたソース修飾子トラ
ンスフォーメーションからのトランスフォーメーションダウンストリームに対してシー
ケンス値を提供します。
¨ Integration Serviceがシーケンスジェネレータトランスフォーメーションのロジック
を必ずしもすべてデータベースにプッシュできるとは限らない。たとえば、パイプライ
ンの2つのブランチに提供されるシーケンス値をシーケンスジェネレータトランスフォ
ーメーションによって作成するとします。プッシュダウンの最適化を設定した場合、デ
ータベースは1つのパイプラインブランチ用にしかシーケンス値を作成できません。
Integration Serviceで必ずしもすべてのシーケンスジェネレータロジックをデータベ
ースにプッシュできない場合、次のメッセージが表示されます。
Pushdown optimization stops at the transformation <transformation name> because the upstream
Sequence Generator <Sequence Generator transformation name> cannot be pushed entirely to the
database.
¨ パイプラインはシーケンスジェネレータトランスフォーメーションの前でいったん分岐
してから、シーケンスジェネレータトランスフォーメーションの後で元どおり1つに結
合します。
¨ パイプラインはシーケンスジェネレータトランスフォーメーションの後で分岐してから
は、元どおり1つに結合しません。
¨ シーケンス値は、アグリゲータ、フィルタ、ジョイナ、ソータ、または共有体の各トラ
ンスフォーメーションをパススルーします。
¨ シーケンスオブジェクトを作成するデータベースは、動作可能なデータベースまたは動
作可能なデータベースと同じデータベースタイプである必要があります。
シーケンスジェネレータトランスフォーメーションからのトランスフォーメーションダウ
ンストリームがIntegration Serviceによって処理されるのは、このトランスフォーメーシ
ョンがCASE式にシーケンスジェネレータトランスフォーメーションのNEXTVALポートを使用
していて、しかもIBM DB2に対してプッシュダウンの最適化を実行するように設定されてい
る場合です。
シーケンスジェネレータトランスフォーメーション
105
ソータトランスフォーメーション
次の表に、ソータトランスフォーメーションをプッシュできる各データベースのプッシュ
ダウンタイプを示します。
データベース
プッシュダウンタイプ
IBM DB2
ソース側、完全
Microsoft SQL Server
ソース側、完全
Netezza
ソース側、完全
Oracle
ソース側、完全
Sybase ASE
ソース側、完全
Teradata
ソース側、完全
ODBC
ソース側、完全
Sorterトランスフォーメーションのロジックをデータベースにプッシュするように
Integration Serviceを設定する際には、次のルールおよびガイドラインを使用してくださ
い。
¨ ソータトランスフォーメーションが異なるソート用に設定され、Microsoft SQL
Server、Sybase、またはTeradataデータベースにプッシュされる場合、Integration
Serviceは、ソータトランスフォーメーションをデータベースにプッシュし、ダウンス
トリームのトランスフォーメーションを処理します。
¨ マッピングに複数の連続するソータトランスフォーメーションが含まれている場合、少
なくとも1つのソータトランスフォーメーションが異なるソート用に設定されている場
合、次のような結果になります。
- ソータトランスフォーメーションの1つがすべての出力ポートを投影しない場合、プッ
シュダウンの最適化は、異なるソートをチェーンの最後のソータランスフォーメーシ
ョンに適用します。
- プッシュダウンの最適化は、すべての出力ポートを投影しない最初のソータトランス
フォーメーションに異なるソートを適用します。
以下の条件のいずれかに該当する場合、ソータトランスフォーメーションはIntegration
Serviceによって処理されます。
¨ ソータトランスフォーメーションがUnionトランスフォーメーションからのダウンスト
リームであり、ソータトランスフォーメーション内でソートキーとして使用されている
ポートがUnionトランスフォーメーションからソータトランスフォーメーションに投影
されない場合
¨ ソータトランスフォーメーションがすべての出力ポートを投影せず、それがマッピング
内の複数の連続するソータトランスフォーメーションである場合。
106
章 5: プッシュダウンの最適化トランスフォーメーション
¨ ソータトランスフォーメーションがすべての出力ポートを投影せず、次のいずれかの文
に当てはまる場合。
- ソータトランスフォーメーションが異なるソート用に設定されている。
- ソータトランスフォーメーションが1つ以上のソータトランスフォーメーション(いず
れかが異なるソート用に設定されている)によって直ちに処理される。
ソース修飾子トランスフォーメーション
次の表に、ソース修飾子トランスフォーメーションをプッシュできるデータベースごとに
プッシュダウンタイプを示します。
データベース
プッシュダウンタイプ
IBM DB2
ソース側、完全
Microsoft SQL Server
ソース側、完全
Netezza
ソース側、完全
Oracle
ソース側、完全
Sybase ASE
ソース側、完全
Teradata
ソース側、完全
ODBC
ソース側、完全
ソース修飾子トランスフォーメーションのロジックをデータベースにプッシュするように
PowerCenter Integration Serviceを設定する際には、以下のルールおよびガイドライン
を使用します。
¨ シーケンスジェネレータトランスフォーメーションが、ダウンストリーム共有体トラン
スフォーメーション、ジョイナトランスフォーメーション、またはターゲットで接続が
アイドル状態になっている場合、および異なるデータベースタイプの接続時に、ソース
フィルタまたはユーザー定義結合に入力するテーブル名を修飾します。 この場合にテ
ーブル名を修飾しない場合、PowerCenter Integration Serviceではすべてのトランス
フォーメーションはデータベースにプッシュされません。
¨ ソース修飾子トランスフォーメーションでショートカットオブジェクトにユーザー定義
結合を設定し、かつプッシュダウンの最適化を有効にすると、セッションが失敗しま
す。
ソース修飾子トランスフォーメーション
107
以下の条件のいずれかに当てはまる場合、PowerCenter Integration Serviceによってソ
ース修飾子トランスフォーメーションのロジックが処理されます。
¨ トランスフォーメーションには、SQLオーバーライドまたはユーザー定義結合の
Informatica外部結合構文が含まれている。SQLオーバーライドにANSI外部結合構文を使
用して、PowerCenter Integration Serviceでソース修飾子トランスフォーメーション
をデータベースにプッシュできるようにします。
¨ ソースが、データベースパーティション化の設定になっている。
¨ ソースが、XMLTypeデータタイプを使用するOracleソースである。
関連項目:
¨ 「アイドル状態のデータベース内のテーブル名の修飾」
(72ページの)
SQLオーバーライドを使用したソース修飾子トランスフ
ォーメーション
SQLオーバライドを使用するソース修飾子トランスフォーメーションを含むセッション用に
プッシュダウンの最適化を設定する際には、次のルールおよびガイドラインを使用してく
ださい。
¨ ポート名は、トランスフォーメーション内での出現順序どおりに、カスタムSQLクエリ
のSELECT文中にリストする必要があります。ポートが正しい順序でない場合、セッショ
ンは失敗するか、または予期しない結果を出力する可能性があります。
¨ セッションをビューと共にプッシュダウンの最適化に設定します。
¨ SQLオーバライド内のSELECT文がデータベースシーケンスを参照する場合、セッション
が失敗します。
¨ SQLオーバーライドにORDER BY句が含まれている場合、ソース修飾子トランスフォーメ
ーションのロジックをIBM DB2、Microsoft SQL Server、Sybase ASE、またはTeradata
データベースにプッシュするときに、セッションが失敗します。
¨ ソース修飾子トランスフォーメーションが個別の値を選択するように設定されていて、
SQLオーバーライドが含まれている場合は、Integration Serviceにより、個別の設定が
無視されます。
¨ セッションに複数のパーティションが含まれている場合は、すべてのパーティションに
対してSQLオーバーライドを指定します。
¨ ソース修飾子トランスフォーメーションにSQLオーバーライドが含まれている場合は、
Teradataのプッシュダウン最適化に対して一時ビューの作成を無効にする必要がありま
す。PowerCenter Integration Serviceで、ビューの代わりに派生テーブルが作成され
ます。
¨ SQLオーバーライドの構文はPowerCenterでは検証されないので、SQLオーバーライドク
エリーを先にソースデータベースに対してテストしてから、データベースにプッシュし
てください。SQL構文にソースソースとの互換性がない場合、セッションが失敗しま
す。
108
章 5: プッシュダウンの最適化トランスフォーメーション
ターゲット
次の表に、ターゲットロジックをプッシュできるデータベースごとのプッシュダウンタイ
プを示します。
データベース
プッシュダウンタイプ
IBM DB2
ターゲット側、完全
Microsoft SQL Server
ターゲット側、完全
Netezza
ターゲット側、完全
Oracle
ターゲット側、完全
Sybase ASE
ターゲット側、完全
Teradata
ターゲット側、完全
ODBC
ターゲット側、完全
完全なプッシュダウンの最適化を実行するようにセッションを設定し、以下の条件のいず
れかに当てはまる場合、ターゲットロジックがIntegration Serviceによって処理されま
す。
¨ ターゲットに、ターゲット更新オーバーライドが含まれている。
¨ セッションは制約に基づくロード用に設定されていて、ターゲットロード順グループに
複数のターゲットが含まれている。
¨ セッションに外部ローダが使用されている。
¨ アイドル状態のデータベースでビューまたはシーケンスジェネレータが生成された。
完全なプッシュダウンの最適化を設定し、ターゲット接続とソース接続に互換性がない場
合、Integration Serviceはトランスフォーメーションロジックをすべて1つのデータベー
スにプッシュできません。 代わりに、できるだけ多くのトランスフォーメーションロジッ
クをソースデータベースにプッシュし、可能であれば残りのトランスフォーメーションロ
ジックをターゲットデータベースにプッシュします。
ターゲット側のプッシュダウンの最適化を実行するようにセッションを設定し、以下の条
件のいずれかに当てはまる場合、ターゲットロジックがIntegration Serviceによって処理
されます。
¨ ターゲットに、ターゲット更新オーバーライドが含まれている。
¨ ターゲットがデータベースパーティション化の設定になっている。
¨ セッションがバルクロード用に設定されており、ターゲットがIBM DB2、Microsoft SQL
Server、Oracle、またはSybase ASEである。
¨ セッションに外部ローダが使用されている。Integration Serviceがトランスフォーメ
ーションロジックをソースデータベースにプッシュできるようにするには、外部ローダ
でソース側プッシュダウンの最適化を使用してください。
ターゲット
109
共有体トランスフォーメーション
次の表に、共有体トランスフォーメーションをプッシュできる各データベースのプッシュ
ダウンタイプを示します。
データベース
プッシュダウンタイプ
IBM DB2
ソース側、完全
Microsoft SQL Server
ソース側、完全
Netezza
ソース側、完全
Oracle
ソース側、完全
Sybase ASE
ソース側、完全
Teradata
ソース側、完全
ODBC
ソース側、完全
以下の条件のいずれかに該当する場合、共有体トランスフォーメーションのロジックは
Integration Serviceによって処理されます。
¨ Integration Serviceが入力グループをすべてソースデータベースにプッシュできると
は限らない。
¨ 入力グループが同一のリレーショナルデータベース管理システムから発生していない。
¨ 共有体トランスフォーメーションの入力パイプラインの1つには、個別の共有体または
ソータが含まれる。
¨ トランスフォーメーションが、ビューまたはシーケンスジェネレータがデータベース内
で作成され、各接続が個別のデータベース上に存在することを要求するトランスフォー
メーションからのダウンストリームである。
アップデートストラテジトランスフォーメー
ション
次の表に、アップデートストラテジトランスフォーメーションをプッシュできる各データ
ベースのプッシュダウンタイプを示します。
110
データベース
プッシュダウンタイプ
IBM DB2
完全
Microsoft SQL Server
完全
章 5: プッシュダウンの最適化トランスフォーメーション
データベース
プッシュダウンタイプ
Netezza
完全
Oracle
完全
Sybase ASE
完全
Teradata
完全
ODBC
完全
アップデートストラテジトランスフォーメーションのロジックをデータベースにプッシュ
するようにIntegration Serviceを設定する際には、次のルールおよびガイドラインを使用
してください。
¨ 更新操作でアップデートストラテジトランスフォーメーション用に生成されたSQLは、
複雑になる可能性があります。セッションをプッシュダウン最適化ありまたはなしで実
行して、どちらの設定の方が高速かを確認します。
¨ 同一行に対して複数の操作が存在している場合、Integration Serviceとデータベース
とで異なる操作が実行される可能性があります。新しい行をデータベースにプッシュし
たときに削除または更新されないようにするには、トランザクション削除、トランザク
ション更新、トランザクション挿入の順序でソース行を処理します。
¨ トランスフォーメーションに複数の挿入、更新、または削除操作が含まれる場合、
Integration Serviceにより連続して、挿入、更新、削除のSQL文が生成、実行されま
す。 これら3つの文は必要でない場合でもIntegration Serviceによって実行されま
す。この結果、パフォーマンスが低下する可能性があります。
¨ 完全なプッシュダウン最適化が使用されているときは、リジェクト行がIntegration
Serviceに無視されます。リジェクト行は拒否ファイルに書き込まれません。
以下の条件のいずれかに当てはまる場合、Integration Serviceによってアップデートスト
ラテジトランスフォーメーションが処理されます。
¨ Integration Serviceで更新方式の式がデータベースにプッシュできない場合。 例え
ば、データベースにプッシュできない演算子が式の中に含まれている場合、
Integration Serviceではその式はデータベースにプッシュされません。
¨ トランスフォーメーションに挿入操作以外の操作が使用されていて、Integration
Serviceが必ずしもすべてのトランスフォーメーションをデータベースにプッシュでき
るとは限らない。
¨ アップデートストラテジ式が、数値でもブールでもない値を返す。
アップデートストラテジトランスフォーメーション
111
第 6 章
リアルタイム処理
この章では、以下の項目について説明します。
¨ リアルタイム処理の概要, 112 ページ
¨ リアルタイムデータについて, 113 ページ
¨ リアルタイムセッションの設定, 115 ページ
¨ 終了条件, 116 ページ
¨ フラッシュ待ち時間, 117 ページ
¨ コミットタイプ , 118 ページ
¨ メッセージリカバリ, 118 ページ
¨ リカバリファイル, 120 ページ
¨ リカバリテーブル, 121 ページ
¨ リカバリキューおよびリカバリトピック, 123 ページ
¨ リカバリ無視リスト, 124 ページ
¨ リアルタイムセッションの停止, 124 ページ
¨ リアルタイムセッションのリスタートおよびリカバリ, 125 ページ
¨ リアルタイムセッションに関するルールおよびガイドライン, 127 ページ
¨ メッセージリカバリに関するルールおよびガイドライン, 127 ページ
¨ リアルタイム処理の例, 128 ページ
¨ Informaticaリアルタイム製品, 130 ページ
リアルタイム処理の概要
この章では、リアルタイム処理の概要について説明します。リアルタイム処理の動作は、
リアルタイムソースに依存します。例外については、この章に注意書きされているほか、
対応する製品のマニュアルにも説明が記載されています。
PowerCenterを使用して、リアルタイムでデータを処理することができます。リアルタイム
処理は、リアルタイムソースからのデータのオンデマンド処理です。 リアルタイムセッシ
ョンでは、ターゲットに対するデータの読み込み、処理、および書き込みが連続して実行
112
されます。セッションをリアルタイム処理に設定しない場合、デフォルトで、セッション
はスケジュールされた間隔でデータを一括で読み書きします。
データをリアルタイムで処理するには、そのデータの発生元がリアルタイムソースでなけ
ればなりません。リアルタイムソースには、JMS、WebSphere MQ、TIBCO、webMethods、
MSMQ、SAP 、Webサービスなどがあります。財務データなどの動的データに即時にアクセス
しなければならない処理にリアルタイム処理を使用することができます。
PowerCenterでのリアルタイム処理を理解するには、次の概念をよく把握する必要がありま
す。
¨ リアルタイムデータ。 リアルタイムデータには、メッセージとメッセージキュー、Web
サービスメッセージ、およびPowerExchange変更データキャプチャソースからの変更が
含まれます。リアルタイムデータは、リアルタイムソースから派生します。
¨ リアルタイムセッション。 リアルタイムセッションとは、リアルタイムソースデータ
を処理するセッションのことです。Integration Serviceがフラッシュ待ち時間の設定
に基づいてリアルタイムフラッシュを生成し、すべてのトランスフォーメーションがそ
のフラッシュをターゲットにプロパゲートする場合、セッションはリアルタイムになり
ます。待ち時間とは、ソースでソースデータが変更されてからセッションがそのデータ
をターゲットに書き込むまでの時間です。
¨ リアルタイムプロパティ。 リアルタイムプロパティは、Integration Serviceがどのよ
うな場合にデータを処理し、データをターゲットにコミットするかを決定します。
- 終了条件。終了条件は、Integration Serviceでどのような場合にソースからのデー
タの読み込みを停止するかを決定します。また、セッションを継続的に実行しないと
きは、どのような場合にセッションを終了するかを決定します。
- フラッシュ待ち時間。フラッシュ待ち時間は、Integration Serviceでソースからリ
アルタイムデータをフラッシュする頻度を決定します。
- コミットタイプ。コミットタイプは、Integration Serviceでどのような場合にリア
ルタイムデータをターゲットにコミットするかを決定します。
¨ メッセージリカバリ。 リアルタイムセッションが失敗した場合、メッセージをリカバ
リすることができます。リアルタイムセッションでメッセージのリカバリを有効にした
場合、Integration ServiceはソースのメッセージまたはメッセージIDをリカバリファ
イルまたはリカバリテーブルに格納します。セッションが失敗した場合、リカバリモー
ドでセッションを実行して、Integration Serviceが処理できなかったメッセージを回
復することができます。
リアルタイムデータについて
以下のタイプのリアルタイムデータを処理できます。
¨ メッセージとメッセージキュー。WebSphere MQ、JMS、MSMQ、SAP、TIBCO、および
webMethodsソースのメッセージとメッセージキューを処理します。 メッセージとメッ
セージキューからの読み込みが可能です。メッセージ、メッセージングアプリケーショ
ン、およびメッセージキューへの書き込みが可能です。
リアルタイムデータについて
113
¨ Webサービスメッセージ。WebServiceクライアントからWeb Services Hubを介してメッ
セージを受信し、データを変換します。 データをターゲットに書き込むことも、ある
いはWebServiceクライアントにメッセージを送り返すこともできます。
¨ PowerExchange変更データキャプチャソースからの変更データ。 リレーショナルデータ
ベースまたはファイルソースへの変更を示す変更データを変更ストリームから抽出し、
ターゲットに書き込みます。
メッセージとメッセージキュー
Integration Serviceは、メッセージとキューのアーキテクチャを使用してリアルタイムデ
ータを処理します。メッセージキューからメッセージを読み込み、メッセージデータを処
理し、メッセージをメッセージキューに書き込むこともできます。
メッセージをその他のメッセージングアプリケーションに書き込むこともできます。たと
えば、Integration ServiceはJMSソースからメッセージを読み込み、TIBCOターゲットに
データを書き込むことができます。
メッセージングアプリケーションおよびIntegration Serviceは、メッセージキューからの
メッセージを処理するために次のタスクを完了します。
1.
メッセージングアプリケーションがメッセージをキューに追加します。
2.
Integration Serviceがキューからメッセージを読み込み、データを抽出します。
3.
Integration Serviceがデータを処理します。
4.
Integration Serviceが応答メッセージをキューに書き込みます。
Webサービスメッセージ
Webサービスメッセージとは、WebServiceクライアントからのSOAP要求またはWeb
Services HubからのSOAPレスポンスです。Integration ServiceはWeb Services Hubを介
して受信したメッセージ要求を処理することにより、WebServiceクライアントからのリア
ルタイムデータを処理します。Integration Serviceは、Web Services Hubを介して
WebServiceクライアントに応答を返信するか、またはデータをターゲットに書き込むこと
ができます。
WebServiceクライアント、Web Services HubおよびIntegration Serviceは、Webサービス
を処理するために次のタスクを実行します。
114
1.
WebServiceクライアントは、SOAP要求をWeb Services Hubに送信します。
2.
Web Services HubはSOAP要求を処理し、この要求をIntegration Serviceに渡します。
3.
Integration Serviceは、このサービス要求を実行します。Integration Serviceは
Web Services Hubに応答を送信するか、またはデータをターゲットに書き込みます。
4.
Integration ServiceがWeb Services Hubにレスポンスを送信した場合、Web
Services HubはSOAPメッセージ応答を生成し、この応答をWebServiceクライアントに
渡します。
章 6: リアルタイム処理
PowerExchange変更データキャプチャソースからの変更
データ
PowerExchange変更データキャプチャソースからの変更データは、ファイルまたはリレーシ
ョナルデータベースへの変更を示します。PowerExchangeは、変更データをキャプチャし、
それを変更ストリームに格納します。PowerExchange Client for PowerCenterを使用し
て、PowerExchange変更ストリームから変更を抽出します。PowerExchange Client for
PowerCenterはPowerExchangeに接続し、直前のセッション以降に変更されたデータを抽出
します。Integration Serviceは変更データを処理し、それをターゲットに書き込みます。
PowerExchange Client for PowerCenter、PowerExchange、およびIntegration Service
は、変更データを処理するために次のタスクを完了します。
1.
PowerExchange Client for PowerCenterはPowerExchangeに接続します。
2.
PowerExchangeは変更ストリームから変更データを抽出します。
3.
PowerExchangeが、変更データをPowerExchange Client for PowerCenter経由で
Integration Serviceに渡します。
4.
Integration Serviceはデータを変換し、それをターゲットに書き込みます。
リアルタイムセッションの設定
リアルタイムでデータを処理するようにセッションを設定した場合は、セッションがソー
スからの読み込みを停止するタイミングを制御するセッションプロパティを設定すること
もできます。設定した期間にわたってセッションがメッセージの受信を停止した後、セッ
ションがメッセージカウント制限に達したとき、あるいは設定した期間にわたってセッシ
ョンがメッセージを読み込んだときに、ソースからの読み込みを停止するセッションを設
定できます。また、Integration Serviceがターゲットにデータをコミットする方法を設定
し、失敗したセッションでのメッセージのリカバリを有効にすることもできます。
リアルタイムセッション用に、次のプロパティを設定できます。
¨ 終了条件。 Integration Serviceでどのような場合にソースからの読み込みを停止しセ
ッションを終了するかを決定する、終了条件を定義します。
¨ フラッシュ待ち時間。 リアルタイムデータの読み込みおよび書き込みを行うためにフ
ラッシュ待ち時間を使用するセッションを定義します。フラッシュ待ち時間は、セッシ
ョンがデータをターゲットにコミットする頻度を決定します。
¨ コミットタイプ。 リアルタイムセッション用に、ソースベースまたはターゲットベー
スのコミットタイプを設定できます。ソースベースのコミットを使用すると、
Integration Serviceは、コミット間隔とフラッシュ待ち時間に基づいてメッセージを
コミットします。ターゲットベースのコミットを使用する場合、Integration Service
は、フラッシュ待ち時間の間隔に基づいてメッセージをコミットします。
¨ メッセージリカバリ。 失敗したセッションからのメッセージをリカバリするために、
リカバリをリアルタイムセッションで有効にします。
リアルタイムセッションの設定
115
終了条件
終了条件は、Integration Serviceでどのような場合にリアルタイムソースからのメッセー
ジ読み込みを停止し、セッションを終了するかを決定します。Integration Serviceは終了
条件に達すると、リアルタイムソースからの読み込みを停止し、読み込んだメッセージを
処理して、データをターゲットにコミットします。その後、セッションが終了します。
以下の終了条件を設定することができます。
¨ アイドル時間
¨ メッセージカウント
¨ Reader制限時間
複数の終了条件が設定されている場合、Integration Serviceは最初の条件を満たしたとき
にソースからの読み込みを停止します。Integration Serviceではデフォルトでメッセージ
が連続的に読み込まれ、ソースからデータをフラッシュするタイミングがフラッシュ待ち
時間を使用して決定されます。Integration Serviceはフラッシュ後に、終了条件カウンタ
をリセットします。
アイドル時間
アイドル時間は、ソースからの読み込みを停止するまでにIntegration Serviceがメッセー
ジの受信を待機する時間の長さ(秒単位)です。-1は無期限を示します。
たとえば、JMSセッションのアイドル時間を30秒に設定した場合、Integration Serviceは
JMSからの読み込み後、30秒間待機します。30秒以内に新しいメッセージがJMSに到着しな
かった場合、Integration ServiceはJMSからの読み込みを停止します。メッセージ処理
後、セッションが終了します。
メッセージカウント
メッセージカウントは、Integration Serviceがリアルタイムソースからの読み込みを停止
する前にソースから読み込むメッセージ数です。-1は不特定数のメッセージを示します。
たとえば、JMSセッションのメッセージカウントを100に設定した場合、Integration
Serviceは100件のメッセージを読み込んだ後、ソースからの読み込みを停止します。メッ
セージ処理後、セッションが終了します。
注: メッセージカウント終了条件の名前は、Informatica製品ごとに異なります。例え
ば、SAP NetWeaver対応のPowerExchange用のメッセージカウントはパケットカウントと呼
ばれます。 PowerExchange Client for PowerCenter用のメッセージカウントはUOWカウン
トと呼ばれます。
Reader制限時間
Reader制限時間は、Integration Serviceがソースからの読み込みを停止するまでにリア
ルタイムソースからソースメッセージを読み込んだ時間数(秒単位)です。 reader制限時
間を使用して、指定した期間にわたってリアルタイムソースからメッセージを読み込みま
す。0は無期限を示します。
116
章 6: リアルタイム処理
例えば、タイムリミットに10秒を使用した場合、Integration Serviceは10秒後にメッセ
ージングアプリケーションからの読み込みを停止します。メッセージ処理後、セッション
が終了します。
フラッシュ待ち時間
フラッシュ待ち時間を使用してセッションをリアルタイムで実行します。フラッシュ待ち
時間は、Integration Serviceでソースからデータをフラッシュする頻度を決定します。た
とえば、フラッシュ待ち時間を10秒に設定すると、Integration Serviceは10秒ごとにソ
ースからデータをフラッシュします。
PowerExchange変更データキャプチャソースからの変更データの場合、フラッシュ待ち時間
間隔は、フラッシュ待ち時間および作業単位(UOW)カウントの属性によって決まります。
詳細については、『PowerCenter用のPowerExchangeインタフェース 』を参照してくださ
い。
Integration Serviceがリアルタイムソースからデータを読み込み、セッションがフラッシ
ュ待ち時間を使用して設定されていると、Integration Serviceは次の処理を実行します。
1.
Integration Serviceは、ソースからデータを読み込みます。
フラッシュ待ち時間間隔は、Integration Serviceがソースから最初のメッセージを
読み込んだ時点から開始します。
2.
フラッシュ待ち時間が経過すると、Integration Serviceは、ソースからのデータの
読み込みを停止します。
3.
Integration Serviceはメッセージを処理し、それをターゲットに書き込みます。
4.
Integration Serviceは、次のフラッシュ待ち時間に達するまで再度ソースからデー
タを読み込みます。
フラッシュ待ち時間は、秒数で設定します。デフォルト値は0です。0値を指定すると、フ
ラッシュ待ち時間は無効となり、セッションはリアルタイムで実行されません。
フラッシュ待ち時間間隔は、データの動的レベル、およびユーザーに必要なデータアクセ
ス速度によって決定されます。財務取引情報のようにデータがすぐに陳腐化する場合は、
変更が発生したときにできるだけ早くターゲットテーブルが更新されるように、フラッシ
ュ待ち時間間隔を短めに設定してください。たとえば、財務データはユーザーが数分ごと
に更新する必要があるとします。一方、顧客アドレス変更内容は、更新が1日に一度で済み
ます。フラッシュ待ち時間間隔は、財務データに対しては短めに、アドレス変更内容に対
しては長めに設定してください。
フラッシュ待ち時間を設定する場合には、以下の規則およびガイドラインに従ってくださ
い。
¨ Integration Serviceは、メッセージをフラッシュ待ち時間の間隔よりも長い時間にわ
たってバッファに入れることはしません。
¨ フラッシュ待ち時間の間隔を短く設定すると、Integration Serviceがターゲットにメ
ッセージをコミットする頻度が増えます。
¨ フラッシュ待ち時間の間隔を短く指定すると、セッションでさらに多くのシステムリソ
ースが消費される可能性があります。
フラッシュ待ち時間
117
コミット間隔が設定されている場合、フラッシュ待ち時間とコミット間隔の設定によっ
て、データをターゲットにコミットするタイミングが決定されます。
コミットタイプ
Integration Serviceは、フラッシュ待ち時間とコミットタイプに基づいてターゲットにデ
ータをコミットします。以下のコミットタイプを使用するセッションを設定することがで
きます。
¨ ソースベースのコミット。ソースベースのコミットを設定する場合、Integration
Serviceではコミット間隔とフラッシュ待ち時間の間隔の組み合わせを使用してターゲ
ットにデータがコミットされます。 Integration Serviceが満たした最初の条件によっ
て、フラッシュ待ち時間の終了がトリガされます。フラッシュ後に、カウンタがリセッ
トされます。
たとえば、フラッシュ待ち時間を5秒に設定し、ソースベースのコミットの間隔を1,000
メッセージに設定したとします。Integration Serviceがソースから1,000件のメッセー
ジを読み込んだ後、または5秒後に、メッセージがターゲットにコミットされます。
¨ ターゲットベースのコミット。ターゲットベースのコミットを設定する場合、
Integration Serviceではコミット間隔が無視され、フラッシュ待ち時間の間隔に基づ
いてターゲットにデータがコミットされます。
リアルタイムセッションでターゲットに書き込む際、Integration Serviceではコミットが
順次に処理され、データがリアルタイムでターゲットにコミットされます。データはDTMバ
ッファメモリ内には格納されません。
関連項目:
¨ 「コミットポイント」
(132ページの)
メッセージリカバリ
リアルタイムセッションでメッセージリカバリを有効にすると、Integration Serviceは、
失敗したセッションからの未処理のメッセージをリカバリできるようになります。
Integration Serviceでは、リカバリファイル、リカバリテーブル、リカバリキュー、また
はリカバリトピックにソースメッセージまたはメッセージIDが格納されます。 セッション
が失敗した場合、リカバリモードでセッションを実行して、Integration Serviceが処理し
なかったメッセージをリカバリできます。
メッセージまたはメッセージIDは、リアルタイムソースまたはターゲットタイプに応じ
て、次のストレージタイプで格納されます。
¨ リカバリファイル。 メッセージまたはメッセージIDは、指定したローカルリカバリフ
ァイルに格納されます。リアルタイムソース、および非リレーショナルターゲットまた
は非キューターゲットを使用するセッションには、リカバリファイルが使用されます。
118
章 6: リアルタイム処理
¨ リカバリテーブル。メッセージIDは、ターゲットデータベースのリカバリテーブルに格
納されます。 JMSソースまたはWebSphere MQソース、およびリレーショナルターゲット
を使用するセッションには、リカバリテーブルが使用されます。
¨ リカバリキューおよびリカバリトピック。メッセージIDは、リカバリキューまたはリカ
バリトピックに格納されます。 JMSソースまたはWebSphere MQソース、およびJMSター
ゲットまたはWebSphere MQターゲットを使用するセッションには、リカバリキューが使
用されます。 JMSソースまたはWebSphere MQソース、およびトピックターゲットを使用
するセッションには、リカバリトピックが使用されます。
セッションでは、ストレージタイプの組み合わせを使用できます。たとえば、JMSソースお
よびTIBCOソースを使用するセッションには、リカバリファイルおよびリカバリテーブルが
使用されます。
Integration Serviceでリアルタイムセッションをリカバリすると、中断箇所から操作の状
態がリストアされます。リカバリファイル、リカバリテーブル、リカバリキュー、または
リカバリトピックからメッセージが読み込まれ、処理されます。その後、セッションが終
了します。
リカバリ中、終了条件はIntegration Serviceがリカバリファイル、リカバリテーブル、リ
カバリキュー、またはリカバリトピックから読み込むメッセージには影響しません。たと
えば、セッションのメッセージカウントとアイドル時間を指定した場合、これらの条件
は、Integration Serviceがソースから読み込むメッセージには適用されますが、
Integration Serviceがリカバリファイル、リカバリテーブル、リカバリキュー、またはリ
カバリトピックから読み込むメッセージには適用されません。
セッションが特定の条件下で失敗した場合、Integration Serviceでは、上記のストレージ
タイプの他に、リカバリ無視リストが使用されます。
MSMQソース、Webサービスメッセージ、またはPowerExchange変更データキャプチャソース
からの変更データを使用するセッションには、別のリカバリ戦略が使用されます。
前提条件
JMSソースまたはWebSphere MQソース、およびJMSターゲットまたはWebSphere MQターゲッ
トを使用するセッションに対し、メッセージのリカバリを有効にする前に、以下の前提条
件を満たします。
¨ JMSプロバイダまたはWebSphere MQにリカバリキューを作成します。 または、JMSプロ
バイダにリカバリトピックを作成します。
¨ コミットスコープが一致するように、メッセージキューと同じキューマネージャを使用
してリカバリキューを作成します。
¨ リカバリキューが永続的になるように設定します。リカバリキューが永続的でない場
合、データの重複が発生することがあります。
これらの必要条件を満たしていない場合、Integration Serviceではリカバリ情報をリカバ
リファイルに格納し、リカバリキューまたはリカバリトピックは使用しません。
メッセージリカバリ
119
メッセージのリカバリを有効にする手順
セッションでメッセージのリカバリを有効にするには、次の手順を実行します。
1.
セッションプロパティで、リカバリ戦略プロパティに[最後のチェックポイントから
再開]を選択します。
2.
各パーティションポイントについて、セッションプロパティのリカバリキャッシュデ
ィレクトリを指定します。
Integration Serviceは、リカバリキャッシュディレクトリによって指定された場所に、メ
ッセージを格納します。リカバリキャッシュディレクトリのデフォルト値は、$PMCacheDir
です。
リカバリファイル
Integration Seriveは、リカバリが有効で、次のタイプのソースとターゲットを含めたリ
アルタイムセッションのリカバリファイルに、メッセージまたはメッセージIDを格納しま
す。
¨ 非リレーショナルターゲット、非JMSターゲット、または非WebSphere MQターゲットを
使用するJMSソース
¨ 非リレーショナルターゲット、非JMSターゲット、または非WebSphere MQターゲットを
使用するWebSphere MQソース
¨ SAP R/3ソースおよびすべてのターゲット
¨ webMethodsソースおよびすべてのターゲット
¨ TIBCOソースおよびすべてのターゲット
Integration Serviceは、セッションプロパティで設定したローカルのリカバリファイルに
メッセージまたはメッセージIDを一時的に格納します。リカバリ中、Integration Service
は、このリカバリファイル内のメッセージを処理し、データが失われることがないように
します。
メッセージの処理
Integration Serviceは、リカバリファイルを使用してメッセージを処理するために次のタ
スクを実行します。
120
1.
Integration Serviceは、ソースからメッセージを読み込みます。
2.
JMSソースおよびWebSphere MQソースを使用したセッションの場合、Integration
Serviceがリカバリファイルに書き込むのはメッセージIDです。それ以外のセッション
の場合は、メッセージがリカバリファイルに書き込まれます。
3.
SAP R/3、webMethods、またはTIBCOソースを使用するセッションの場合、
Integration Serviceは、メッセージの読み込みを確認するためにソースに受信確認
メッセージを送信します。ソースはメッセージを削除します。
4.
Integration Serviceではフラッシュ待ち時間が満了するまで、ステップ1~3が繰り
返し実行されます。
章 6: リアルタイム処理
5.
Integration Serviceはメッセージを処理し、それをターゲットに書き込みます。
6.
ターゲットがメッセージをコミットします。
7.
JMSおよびWebSphere MQソースを使用するセッションの場合、Integration Service
は、メッセージの読み込みを確認するためにソースに一括の受信確認メッセージを送
信します。ソースはメッセージを削除します。
8.
Integration Serviceはリカバリファイルをクリアします。
メッセージリカバリ
リアルタイムセッションをリカバリすると、Integration Serviceはキャッシュされたメッ
セージを読み込み、処理します。Integration Serviceは、キャッシュされたすべてのメッ
セージを読み込んだ後、セッションを終了します。
JMSおよびWebSphere MQソースを使用するセッションの場合、Integration Serviceはリカ
バリファイルのメッセージIDを使用して、ソースからメッセージを取得します。
フラッシュ待ち時間が経過し、セッションが成功した時点で、Integration Serviceはリカ
バリファイルをクリアします。Integration Serviceがメッセージをターゲットにコミット
してからリカバリファイルからメッセージを削除するまでの間にセッションが失敗する
と、リカバリ中にターゲットで行が重複して受け取られる可能性があります。
セッションリカバリデータのフラッシュ
リカバリデータのフラッシュは、Integration Serviceがオペレーティングシステムバッフ
ァ内のセッションリカバリデータをリカバリファイルにフラッシュする際に使用する処理
です。Integration Serviceでリカバリデータをリカバリファイルに書き込めない場合に、
データの喪失を防止できます。オペレーティングシステム障害、ハードウェア障害、また
はファイルシステムの故障が発生した場合、Integration Serviceはリカバリデータの書き
込みに失敗する可能性があります。リカバリデータのフラッシュは、JMSソースまたは
WebSphere MQソース、および非リレーショナルターゲット、非JMSターゲット、または非
WebSphere MQターゲットを含むセッションに適用されます。
Administratorツールで、Integration Serviceプロパティの[セッションリカバリデータ
のフラッシュ]を[自動]または[はい]に設定することにより、リカバリデータがオペ
レーティングシステムバッファからリカバリファイルにフラッシュされるように
Integration Serviceを設定できます。
リカバリテーブル
Integration Seriveでリカバリが有効化されているリアルタイムセッションのリカバリテ
ーブルにメッセージIDが格納されるのは、そのリアルタイムセッションに次のタイプのソ
ースおよびターゲットが含まれる場合です。
¨ リレーショナルターゲットを用いたJMSソース
¨ リレーショナルターゲットを用いたWebSphere MQソース
リカバリテーブル
121
Integration Serviceは、メッセージIDとコミット番号を各ターゲットデータベースのリカ
バリテーブルに一時的に格納します。コミット番号は、Integration Serviceからターゲッ
トへのコミット数を示します。リカバリ中、Integration Serviceは、コミット番号を使用
して、すべてのターゲットに同じ数のメッセージを書き込んだかどうかを判断します。メ
ッセージIDとコミット番号をリカバリテーブルと照合して、データの喪失や重複がないこ
とを確認します。
注: これらのソースは、一意のメッセージIDを使用し、そのメッセージIDを介してメッセ
ージにアクセスできるようにする必要があります。
PM_REC_STATEテーブル
Integration Serviceは、リカバリテーブルを使用し、リカバリを有効にしたリアルタイム
セッションを実行する場合、メッセージIDとコミット番号を格納するためにターゲットデ
ータベースにリカバリテーブルPM_REC_STATEを作成します。Integration Seriveは、セッ
ションをリカバリする場合、リカバリテーブル内の情報を使用して、ターゲットテーブル
へのメッセージの書き込みが必要かどうかを判断します。
メッセージの処理
Integration Serviceは、リカバリテーブルを使用したメッセージ処理を行うために以下の
タスクを実行します。
1.
Integration Serviceは、フラッシュ待ち時間に達するまで一度に1つずつメッセージ
を読み込みます。
2.
Integration Serviceは、ソースからの読み込みを停止します。Integration Service
はメッセージを処理、それらをターゲットに書き込みます。
3.
Integration ServiceはメッセージID、コミット番号、およびトランスフォーメーシ
ョン状態をターゲットデータベースのリカバリテーブルに書き込み、それと同時にメ
ッセージをターゲットに書き込みます。
4.
ターゲットがメッセージをコミットすると、Integration Serviceはすべてのメッセ
ージが処理され、ターゲットに書き込まれたことを確認するために受信確認メッセー
ジをリアルタイムソースに送り返します。
5.
Integration Serviceは、ソースからのメッセージの読み込みを続行します。
セッションで複数のパーティションが使用される場合、これらのタスクはパーティション
ごとに適用されます。
メッセージリカバリ
Integration Serviceでリアルタイムセッションをリカバリした場合、リカバリファイル内
のメッセージIDとコミット番号を使用してすべてのターゲットにメッセージがコミットさ
れたかどうかが確認されます。
Integration Serviceですべてのターゲットにメッセージがコミットされるのは、リカバリ
テーブル内にメッセージIDが存在していて、しかもすべてのターゲットのコミット番号が
同じ場合です。Integration Serviceはリカバリ中に、ソースに対してメッセージ処理完了
の確認応答を送ります。
122
章 6: リアルタイム処理
ターゲットのコミット番号が異なる場合、メッセージはすべてのターゲットにコミットさ
れるとは限りません。リカバリ中、Integration Serviceはリカバリテーブルからメッセー
ジIDとトランスフォーメーション状態を読み込みます。その後、メッセージを処理し、そ
れらのメッセージがなかったターゲットにメッセージを書き込みます。Integration
Serviceにより、リカバリテーブルからすべてのメッセージが読み込まれたときに、セッシ
ョンは終了します。
Integration Serviceによりすべてのターゲットにメッセージがコミットされる前にセッシ
ョンが失敗し、セッションをコールドスタートモードでリスタートした場合、ターゲット
が重複行を受け取る可能性があります。
リカバリキューおよびリカバリトピック
Integration Seriveでリカバリが有効化されているリアルタイムセッションのリカバリキ
ューまたはリカバリトピックにメッセージIDが格納されるのは、そのリアルタイムセッシ
ョンに以下のタイプのソースおよびターゲットが含まれる場合です。
¨ JMSターゲットまたはWebSphere MQターゲットを使用するJMSソース
¨ JMSターゲットまたはWebSphere MQターゲットを使用するWebSphere MQソース
Integration Serviceは、JMSプロバイダまたはWebSphere MQに作成したリカバリキューま
たはリカバリトピックに一時的にメッセージIDとコミット番号を格納します。 コミット番
号は、Integration Serviceからターゲットへのコミット数を示します。リカバリ中、
Integration Serviceは、コミット番号を使用して、すべてのターゲットに同じ数のメッセ
ージを書き込んだかどうかを判断します。メッセージIDとコミット番号は、リカバリキュ
ーまたはリカバリトピックと照合して、データの喪失や重複がないことが確認されます。
Integration Serviceは、各セッションのすべてのキューターゲットに対して同じリカバリ
キューまたはリカバリトピックを使用します。セッションに対して複数のリカバリキュー
またはリカバリトピックを作成すると、パフォーマンスが向上します。
セッションプロパティまたはJMS接続オブジェクトでリカバリキュー名またはリカバリトピ
ック名を指定しない場合、Integration Serviceにより、リカバリ情報がリカバリファイル
に格納されます。最適なパフォーマンス得るために、リカバリファイルではなく、リカバ
リキュー名またはリカバリトピック名を設定します。
メッセージの処理
Integration Serviceでリカバリキューまたはリカバリトピックを使用してメッセージを処
理する方法は、リカバリテーブルを使用してメッセージを処理する方法と似ています。
Integration Serviceは、リカバリテーブルの代わりに、リカバリキューまたはリカバリト
ピックにリカバリ情報を書き込みます。
メッセージリカバリ
Integration Serviceでリカバリキューまたはリカバリトピックからメッセージをリカバリ
する方法は、リカバリテーブルからメッセージをリカバリする方法と似ています。
Integration Serviceは、リカバリテーブルの代わりに、リカバリキューまたはリカバリト
ピックからリカバリ情報を取得します。
リカバリキューおよびリカバリトピック
123
リカバリ無視リスト
Integration Serviceは、JMSソースまたはWebSphere MQソースを使用するセッションが失
敗した場合、リカバリ情報をリカバリ無視リストに書き込みます。 Integration Service
では、ソースが受信確認メッセージを受信しなかった可能性がある場合に、リカバリ情報
をこのリストに書き込みます。例えば、Integration Serviceによってメッセージがターゲ
ットに書き込まれた後、受信確認メッセージがソースに送信される前に、セッションが失
敗したとします。 この場合、ソースでは現在のトランザクションをロールバックできます
が、そのトランザクション内のメッセージは即座に利用できないことがあります。メッセ
ージがリカバリセッションに含まれる場合、データの重複が発生することがあります。
Integration Serviceでは、データの重複を避けるためにリカバリ無視リストが作成されま
す。
リカバリ無視リストでは、失敗したセッションについてIntegration Serviceがターゲット
に書き込んだメッセージIDが格納されます。Integration Serviceにより、そのセッション
に使用されるストレージタイプ(リカバリファイル、リカバリテーブル、リカバリキュ
ー、またはリカバリトピックなど)にリカバリ無視リストが作成されます。 リカバリ中、
Integration Serviceによりリカバリ無視リストとストレージタイプが使用され、メッセー
ジがターゲットに書き込まれたかどうかが判別されます。 また、リカバリ無視リストとス
トレージタイプでメッセージIDが照合され、データの重複がないことが確認されます。
セッションが失敗すると、Integration Serviceはリカバリ無視リストにメッセージを書き
込み、タイムスタンプを追加します。 デフォルトでは、Integration Serviceはタイムス
タンプの1時間後にリカバリ無視リストからメッセージを削除します。 Integration
Serviceは、デフォルトの期間内にソースでメッセージを検出すると、リカバリ無視リスト
からメッセージを削除します。
停止したセッションまたは失敗したセッションをコールドスタートモードでリスタートす
ると、ターゲットで重複行を受け取ることがあります。データの重複を避けるためには、
リカバリ付きでセッションをリスタートしてください。または、リカバリ無視リスト内の
メッセージがソースから削除されたことが確実な場合は、セッションをコールドスタート
モードをリスタートします。メッセージIDを確認するには、セッションログを使用しま
す。冗長データの追跡を設定している場合、Integration Serviceはリカバリ無視リスト内
のメッセージIDをセッションログに書き込みます。
リアルタイムセッションの停止
セッションが失敗したり、セッションを手動で停止しないかぎり、リアルタイムセッショ
ンは継続して実行されます。 pmcmdまたはWorkflow Monitorでstopコマンドを発行すること
で、セッションを停止することができます。定期的にメンテナンスを実行するためにセッ
ションを停止する必要がある場合もあります。
リアルタイムセッションを停止すると、Integration Serviceは以下のリアルタイムソース
に基づいてパイプライン内のメッセージを処理します。
¨ JMSとWebSphere MQ。 Integration Serviceはstopが発行されるまでメッセージを読み
込み、メッセージをターゲットに書き込みます。
124
章 6: リアルタイム処理
¨ MSMQメッセージ、SAPメッセージ、TIBCOメッセージ、webMethodsメッセージ、および
Webサービスメッセージ。 Integration Serviceでターゲットにメッセージ全体が書き
込まれないうちにユーザーがセッションを終了した場合、そのメッセージは処理されま
せん。
JMSソースまたはWebSphere MQソースを使用するリアルタイムセッションを停止すると、
Integration Serviceは次のタスクを実行します。
1.
Integration Serviceは、ソースからのメッセージの読み込みを停止します。
リアルタイムリカバリセッションを停止すると、Integration Serviceはすべてのメ
ッセージをリカバリした後にソースからの読み込みを停止します。
2.
Integration Serviceはパイプライン内のメッセージを処理し、それをターゲットに
書き込みます。
3.
Integration Serviceはソースに受信確認メッセージを送信します。
4.
セッションをリスタートしたときのデータの重複を回避するために、Integration
Serviceはリカバリファイルまたはリカバリをクリアします。
セッションをリスタートすると、Integration Serviceはソースからの読み込みを開始しま
す。中断した時点からセッションを再開するためのセッションおよび操作のトランスフォ
ーメーション状態をリストアします。
注: リアルタイムセッションを停止した後にそのセッションがハングする場合、セッショ
ンが停止状態に留まる可能性があります。 リアルタイムセッションが停止モードに留まっ
ている際には、そのセッションを強制終了することができます。 Integration Service
は、stopが発行される前に読み込んだメッセージを処理します。
リアルタイムセッションのリスタートおよび
リカバリ
停止または失敗したリアルタイムセッションは、再開することができます。セッションを
再開するには、セッションをリスタートするか、リカバリする必要があります。セッショ
ンの自動タスクリカバリを有効にした場合、Integration Serviceによるセッションの自動
リカバリが可能になります。
次の節では、リアルタイムセッション固有のリカバリ情報について説明します。
リアルタイムセッションのリスタート
セッションをリスタートすると、Integration Serviceはリアルタイムソースに基づいてセ
ッションを再開します。リアルタイムソースに応じてリカバリありまたはなしで、セッシ
ョンをリスタートします。
タスクまたはワークフローをコールドスタートモードでリスタートできます。タスクまた
はワークフローをコールドスタートモードでリスタートすると、Integration Serviceによ
りリカバリ情報が破棄され、タスクまたはワークフローがリスタートされます。
リアルタイムセッションのリスタートおよびリカバリ
125
リアルタイムセッションのリカバリ
セッションのリカバリを有効にすると、失敗または強制終了したセッションのリカバリが
可能になります。セッションをリカバリすると、Integration Serviceは中断した地点から
メッセージの処理を続行します。Integration Serviceはリアルタイムソースに従ってメッ
セージをリカバリします。
Integration Serviceでは、以下のタイプのセッションリカバリが使用されます。
¨ 自動リカバリ。終了したタスクを自動的にリカバリするようにワークフローを設定した
場合、Integration Serviceによってセッションが再開されます。 Integration
Serviceでは、未処理のデータがすべてリカバリされ、リアルタイムソースに関係なく
セッションが再開されます。
¨ 手動リカバリ。Workflow MonitorまたはWorkflow Managerのメニューコマンド、または
pmcmdコマンドを使用して、セッションをリカバリします。 リアルタイムソースによっ
ては、セッションをリカバリしてから再開する必要があります。そうしないと、失敗し
たセッションからのメッセージがIntegration Serviceで処理されません。
リスタートコマンドおよびリカバリコマンド
Workflow Manager、Workflow Monitor、または pmcmdを使用してセッションをリスタート
またはリカバリできます。Integration Serviceはリアルタイムソースに基づいてセッショ
ンを再開します。
以下の表に、次のコマンドを使用してセッションをリスタートまたはリカバリしたときの
動作を示します。
126
コマンド
説明
- タスクのリスタート
- ワークフローのリスタート
- タスクからワークフローを
リスタートする
タスクまたはワークフローをリスタートしま
す。JMSセッションおよびWebSphere MQセッシ
ョンでは、Integration Serviceはタスクまた
はワークフローをリカバリしてからリスタート
します。
注: JMSソース、WebSphere MQソース、および
別のリアルタイムソースがセッションに含まれ
ている場合、Integration Serviceはすべての
リアルタイムソースに対してリカバリを実行し
てから、タスクまたはワークフローをリスター
トします。
- タスクのリカバリ
- ワークフローのリカバリ
- このタスクのリカバリによ
るワークフローのリスター
ト
タスクまたはワークフローをリカバリします。
- タスクのコールドスタート
- ワークフローのコールドス
タート
- タスクからワークフローを
コールドスタート
リカバリ情報を破棄し、タスクまたはワークフ
ローをリスタートします。
章 6: リアルタイム処理
リアルタイムセッションに関するルールおよ
びガイドライン
リアルタイムセッションを実行する場合、次のルールおよびガイドラインに従ってくださ
い。
¨ マッピングにトランザクション制御トランスフォーメーションが入っていると、セッシ
ョンが失敗します。
¨ トランザクションの生成が有効となっている任意のトランスフォーメーションがマッピ
ングに入っていると、セッションが失敗します。
¨ すべての入力に対して設定されたトランスフォーメーション範囲を持つ任意のトランス
フォーメーションがマッピングに入っていると、セッションが失敗します。
¨ 行トランスフォーメーション範囲を持ち、複数のトランザクション制御ポイントから入
力を受信する任意のトランスフォーメーションがマッピングに入っていると、セッショ
ンが失敗します。
¨ ターゲット用にロード範囲が[すべての入力]に設定されている場合、セッションが失
敗します。
¨ セッションをデバッグモードで実行する場合、Integration Serviceはフラッシュ待ち
時間を無視します。
¨ マッピングにリレーショナルターゲットが含まれる場合、ターゲットのロードタイプを
ノーマルに設定します。
¨ マッピングのターゲットがフラットファイルの場合、セッションは失敗します。
¨ マッピングにXMLターゲット定義が含まれる場合は、ターゲット定義の[コミット時]
オプションで[ドキュメントへの書き込み]を選択します。
¨ Integration Serviceは、WebSphere MQおよびJMSへの接続失敗に対する復元性がありま
す。 他のメッセージシステムに対する復元性はありません。
¨ Webサービスなどで、リアルタイムセッションに要求と応答が含まれる場合、セッショ
ンログにはその要求と応答の開始時間と終了時間が含まれます。 リアルタイムセッシ
ョンにパブリッシュ/サブスクライブまたはP2Pアーキテクチャが含まれる場合、セッシ
ョンログにはIntegration Serviceによって、行がターゲットに対していつコミットさ
れるかを説明する統計が含まれます。
メッセージリカバリに関するルールおよびガ
イドライン
メッセージのリカバリが有効で、以下のいずれかの条件に一致するセッションは失敗しま
す。
¨ ソース定義がジョイナトランスフォーメーションのマスターソースである。
¨ 複数のソース定義を、同じターゲットロード順のグループに対して同時に実行されるよ
うに設定する。
リアルタイムセッションに関するルールおよびガイドライン
127
¨ マッピングにXMLターゲット定義が含まれている。
¨ セッションをリスタートする前にリカバリファイルを編集し、リスタートまたは再開の
リカバリ戦略を使用するセッションを実行する。
¨ Integration Serviceは、リカバリキューまたはリカバリトピックに接続できない。
¨ Integration Serviceは、リカバリメッセージをリカバリキューまたはリカバリトピッ
クに書き込まない。
Integration Serviceがメッセージキューに対して読み込む、または書き込むメッセージの
数がメッセージサイズの制限を超えた場合は、メッセージサイズの制限を上げるか、また
はフラッシュ待ち時間を短縮してください。
リアルタイム処理の例
以下の例に、IBM WebSphere MQ対応のPowerExcahngeおよびPowerCenterを使用するリアル
タイムデータの処理方法を示します。
リアルタイムに購入注文を処理することを考えています。購入注文には、複数のサプライ
ヤからの複数の品目が含まれていることがあります。ただし、購入注文にはサプライヤま
たは品目原価は含まれません。購入注文を受けたら、サプライヤごとに総額を計算する必
要があります。使用しているマスターデータベースには、サプライヤおよびそれに対応す
る品目と品目原価が含まれています。PowerCenterを使用して、品目IDに基づいてサプライ
ヤと品目原価を調べます。また、PowerCenterを使用して、サプライヤの総額をリレーショ
ナルデータベースに書き込みます。
データベース管理者からは、ターゲットの更新時には1回のコミットで最大1,000メッセー
ジを扱うことを勧められています。また、ターゲットが常に最新の状態になるように、
2,000ミリ秒ごとにターゲットを更新したいと考えています。
リアルタイムに購入注文を処理するには、マッピングを作成して設定します。
128
章 6: リアルタイム処理
以下の図に、リアルタイムに購入注文を処理するマッピングを示します。
マッピングの例には、以下のコンポーネントが含まれます。
¨ ソース。WebSphere MQ。 各メッセージはXML形式で、それぞれに1つの購入注文が含ま
れます。
¨ XMLパーサートランスフォーメーション。MQソース修飾子トランスフォーメーションか
ら購入注文情報を受け取ります。 XMLファイルから購入注文IDおよび数量をパースしま
す。
¨ ルックアップトランスフォーメーション。購入注文IDに対応するサプライヤの詳細を検
索します。 サプライヤ情報、購入品目ID、および品目原価を式トランスフォーメーシ
ョンに渡します。
¨ 式トランスフォーメーション。 サプライヤの発注費を計算します。
¨ ターゲット。Oracleリレーショナルデータベース。 サプライヤ情報およびサプライヤ
の総額が含まれます。
以下のプロパティを使用して、セッションおよびワークフローを作成して設定します。
プロパティ
値
メッセージカウント
1,000
フラッシュ待ち時間間隔
2,000ミリ秒
コミットタイプ
ソースベースのコミット
ワークフロースケジュール
継続的に実行
リアルタイム処理の例
129
以下の手順は、Integration Serviceがリアルタイムでセッションを処理する方法を示しま
す。
1.
Integration Serviceは、1,000メッセージに達するか、または2,000ミリ秒が経過す
るまで、WebSphere MQキューからメッセージを読み込みます。どちらかの条件が満た
されたら、WebSphere MQキューからの読み込みを停止します。
2.
Integration Serviceでは、サプライヤ情報を調べて発注費を計算します。
3.
Integration Serviceによって、サプライヤ情報および発注費がOracleリレーショナ
ルターゲットに書き込まれます。
4.
Integration Serviceでは、WebSphere MQキューからのメッセージの読み込みを再開
します。
5.
ワークフローを継続的に実行するように設定しているため、Integration Serviceは手
順1 - 4 を繰り返します。
Informaticaリアルタイム製品
リアルタイムデータの読み込み、変換、および書き込みには、以下の製品を使用できま
す。
¨ JMS対応のPowerExchange。JMS対応のPowerExchangeは、JMSソースからの読み込みと
JMSターゲットへの書き込みに使用します。 メッセージトピックに基づいて、JMSメッ
セージ、JMSプロバイダメッセージキュー、またはJMSプロバイダから読み込むことがで
きます。メッセージトピックに基づいて、JMSプロバイダメッセージキューまたはJMSプ
ロバイダに書き込むことができます。
JMSプロバイダは、メッセージベースのミドルウェアシステムであり、JMSメッセージを
送受信できます。セッション中にIntegration ServiceはJava Naming and Directory
Interface(JNDI)に接続し、接続情報を決定します。Integration Serviceは接続情
報を決定すると、JMSプロバイダに接続してJMSメッセージを読み書きします。
¨ IBM WebSphere MQ対応のPowerExcahnge。 PowerExchange for WebSphere MQは、
WebSphere MQメッセージキューからの読み込み、およびWebSphere MQメッセージキュー
またはデータベースターゲットへの書き込みに使用します。 PowerExchange for
WebSphere MQは、データの抽出およびロード処理中に、WebSphere MQキューマネージ
ャ、メッセージキュー、およびWebSphere MQメッセージとやり取りします。
¨ Tibco対応のPowerExchange。Tibco対応のPowerExchangeは、TIB/RendezvousまたはAE
形式のTIBCOからのメッセージの読み込みとTIBCOへのメッセージの書き込みに使用しま
す。
Integration ServiceはTIBCOメッセージをTIBCOデーモンから受信し、TIBCOデーモン
を介してメッセージを書き込みます。TIBCOデーモンは、ローカルエリアネットワーク
または広域ネットワークでターゲットメッセージを送信します。ターゲットリスナーは
メッセージの件名に基づいてTIBCOターゲットメッセージにサブスクライブします。
¨ WebMethods対応のPowerExcahnge。WebMethods対応のPowerExcahngeは、webMethodsソ
ースからのドキュメントの読み込みとwebMethodsターゲットへのドキュメントの書き込
みに使用します。
130
章 6: リアルタイム処理
Integration Serviceは、webMethodsドキュメントの送信、受信、およびキューイング
を行うwebMethods Brokerに接続します。Integration Serviceは、定義されたドキュ
メントタイプまたはクライアントIDに基づいて、webMethodsドキュメントの読み書きを
行います。Integration Serviceは、webMethods要求/応答ドキュメントの読み書きも
行います。
¨ MSMQ対応のPowerExchange。MSMQ対応のPowerExchangeは、MSMQソースからの読み込み
とMSMQターゲットへの書き込みに使用します。
Integration ServiceはMicrosoft Messaging Queueに接続し、メッセージからデータ
を読み込むかまたはデータをメッセージに書き込みます。キューはpublicまたは
privateであり、トランザクショナルまたは非トランザクショナルです。
¨ SAP NetWeaver対応のPowerExchange。SAP NetWeaver対応のPowerExchangeは、
Application Link Enabling(ALE)を使用して、Outbound IDOCを使用したSAPからの
読み込みや、Inbound IDOCを使用したSAPへの書き込みに使用します。
Integration Serviceは、Outbound IDOCからの読み込みとリレーショナルターゲット
への書き込みができます。Integration Serviceはリレーショナルソースからデータを
読み込んだり、Inbound IDOCにデータを書き込んだりすることができます。
Integration Serviceは、SAPアプリケーションデータベース内のマスターデータまたは
トランザクショナルデータへの変更をリアルタイムで取得できます。
¨ PowerCenterのWeb Services Provider。PowerCenterのWeb Services Providerは、Web
Services Hubを介してトランスフォーメーションロジックをサービスとして公開した
り、リアルタイムWebサービスを実行するためのクライアントアプリケーションを開発
したりするために使用します。 Webサービスクライアントからメッセージを受信してか
ら変換し、それをPowerCenterがサポートする任意のターゲットに書き込むためのサー
ビスマッピングを作成できます。また、Webサービスクライアントからメッセージ要求
を受信し、データを変換してからWebサービスクライアントに応答を返信するためのW
ebサービスのソース定義とターゲット定義を持つサービスマッピングを作成できます。
Web Services HubはWebサービスクライアントから要求を受信して、それをゲートウェ
イに渡します。Integration Serviceまたはリポジトリサービスは要求を処理し、応答
をWeb Services Hub経由でWebサービスクライアントに送信します。
¨ PowerExchange。PowerExchangeは、リレーショナルおよび非リレーショナルデータの
抽出とロード、変更データの抽出、およびリアルタイムでの変更データの抽出に使用し
ます。
データを抽出するために、Integration Serviceはソースのホストマシン上の
PowerExchangeから変更データを読み込みます。DB2/390、DB2/400、およびOracleなど
の複数のソースおよびターゲットからデータを抽出およびロードできます。
PowerExchange Listenerからのデータマップを、非リレーショナルソースとして使用す
ることもできます。
Informaticaリアルタイム製品
131
第 7 章
コミットポイント
この章では、以下の項目について説明します。
¨ コミットポイントの概要, 132 ページ
¨ ターゲットベースのコミット, 133 ページ
¨ ソースベースのコミット, 133 ページ
¨ ユーザー定義コミット, 138 ページ
¨ トランザクション制御について, 142 ページ
¨ コミットプロパティの設定, 147 ページ
コミットポイントの概要
コミットの間隔とは、セッション中にIntegration Serviceがターゲットにデータをコミッ
トする間隔です。コミットポイントは、コミットの間隔、コミットの間隔のタイプ、およ
びバッファブロックサイズの要素となります。コミットの間隔は、コミットポイントの基
礎として使用する行の数です。コミットの間隔のタイプは、コミットポイントの基礎とし
て使用する行の種類です。以下のコミットのタイプから選択することができます。
¨ ターゲットベースのコミット。Integration Serviceでは、ターゲット行の数およびタ
ーゲットテーブルのキー制約に基づいてデータがコミットされます。 コミットポイン
トは、バッファブロックサイズ、コミットの間隔、およびIntegration Service の書き
込みタイムアウト設定によっても異なります。
¨ ソースベースのコミット。Integration Serviceではソース行の数に基づいてデータが
コミットされます。 コミットポイントは、セッションプロパティで設定するコミット
間隔です。
¨ ユーザー定義コミット。Integration Serviceでは、マッピングプロパティで定義され
たトランザクションに基づいてデータがコミットされます。 また、セッションプロパ
ティでコミットやロールバックのオプションを設定することもできます。
ソースベースおよびユーザー定義のコミットのセッションには、パーティション化の制約
があります。複数のパーティションを持つセッションでソースベースまたはユーザー定義
コミットを使用するように設定すると、パイプライン内の特定のパーティションポイント
ではパススルーパーティション化を選択できます。
132
ターゲットベースのコミット
ターゲットベースのコミットのセッションでは、Integration Serviceは、ターゲット行の
数およびターゲットテーブルのキー制約に基づいて行をコミットします。コミットポイン
トは次の要因により決定されます。
¨ コミット間隔。コミットの基礎として使用する行数です。 セッションプロパティでタ
ーゲットのコミット間隔を設定します。
¨ 書き込み待ちタイムアウト。Writerがコミットを発行するまでの待ち時間。 書き込み
待ちタイムアウトは、Integration Serviceの設定時に設定します。
¨ バッファブロック。セッション中にデータ行を保持しているメモリのブロック。 セッ
ションプロパティにバッファブロックサイズを設定できますが、ブロックに保存する行
数は設定できません。
ターゲットベースのコミットのセッションを実行すると、Integration Serviceは、設定さ
れたコミット間隔の到達前、到達時、または到達後にコミットを発行する場合がありま
す。Integration Serviceは、以下のプロセスによってコミットを発行します。
¨ コミット間隔に達しても、Integration Serviceはwriterバッファブロックへの書き込
みを継続します。writerバッファブロックがいっぱいになると、Integration Service
はコミットを発行します。
¨ コミット間隔の到達前にwriterバッファが一杯になると、Integration Serviceはター
ゲットに書き込みますが、コミット発行のタイミングを待ちます。次のいずれか条件が
Trueの場合にコミットを発行します。
- Integration Serviceのwriter待ちタイムアウトオプションで指定した時間中、
writerが空状態である。
- Integration Serviceがコミット間隔に到達し、さらに別のwriterバッファに書き込
みをしている。
注: XMLターゲットを含んでいるセッションに対してターゲットベースのコミットを選択
した場合、Workflow Managerでは、[マッピング]タブのトランスフォーメーションビュ
ーの[コミット時]セッションプロパティが無効にされます。
ソースベースのコミット
ソースベースのコミットのセッションの場合、Integration Serviceはターゲットロード順
グループのアクティブソースから取り出された行の数に基づいてターゲットにデータをコ
ミットします。これらの行は、ソース行と呼ばれます。
Integration Serviceはソースベースコミットのセッションを実行するときに、マッピング
内のパイプラインごとにコミットソースを識別します。Integration Serviceは、コミット
の間隔ごとに、アクティブソースからコミット行を生成します。Integration Serviceは、
ソースベースのコミットの間隔に使用されるトランスフォーメーションの名前もセッショ
ンログに書き込みます。
Source-based commit interval based on... TRANSFORMATION_NAME
ターゲットベースのコミット
133
Integration Serviceは、アクティブソースで作成される行数よりも少ない行をターゲット
にコミットする場合もあります。たとえば、アクティブソースを通じて10,000行を渡すソ
ースベースコミットのセッションがあり、トランスフォーメーションのロジックによって
3,000行が削除されるとします。Integration Serviceは、残りの7,000行がターゲットに
ロードされた時点でターゲットにコミットを発行します。
writerのバッファに保持される行数は、ソースベースコミットのセッションのコミットポ
イントには影響しません。たとえば、アクティブソースを通じて10,000行を渡すソースベ
ースコミットのセッションがあるとします。この10,000行がターゲットにロードされる
と、Integration Serviceはコミットを発行します。セッションが正常に完了した場合、
Integration Serviceはソース行が10,000行、20,000行、30,000行、40,000行の時点でそ
れぞれコミットを発行します。
ターゲットが同じトランザクション制御単位に属する場合には、データは同時にターゲッ
トにコミットされます。セッションが失敗したり強制終了されたりすると、トランザクシ
ョン制御単位の未コミットのデータはすべて同じソース行にロールバックされます。
ターゲットが別々のトランザクション制御単位に属する場合は、コミットは各ターゲット
がコミット行を受け取るたびに実行されます。セッションが失敗したり強制終了されたり
すると、各ターゲットは最後のコミットポイントにロールバックされます。別々のトラン
ザクション制御単位に属するターゲットの場合、同じソース行にロールバックされない場
合があります。
注: セッションで1対1のマッピングを使用している場合、ソースベースのコミットを使う
とセッションのパフォーマンスが低下する場合があります。1対1のマッピングとは、ソー
ス修飾子、XMLソース修飾子、またはアプリケーションソース修飾子トランスフォーメーシ
ョンから直接ターゲットにデータを移動するマッピングです。
コミットソースの決定
ソースベースのコミットのセッションを実行した場合、Integration Serviceでは、トラン
ザクション境界がプロパゲートされないすべてのソース修飾子およびトランスフォーメー
ションでコミットが生成されます。 これには、以下のアクティブソースが含まれます。
¨ ソース修飾子
¨ アプリケーションソース修飾子
¨ MQソース修飾子
¨ 1つの出力グループからのポートのみを接続する場合のXMLソース修飾子
¨ ノーマライザ(VSAM)
¨ [すべての入力]トランスフォーメーション範囲を使用するアグリゲータ
¨ [すべての入力]トランスフォーメーション範囲を使用するジョイナ
¨ [すべての入力]トランスフォーメーション範囲を使用するランク
¨ [すべての入力]トランスフォーメーション範囲を使用するソータ
¨ 1つの出力グループと[すべての入力]トランスフォーメーション範囲を使用する、カ
スタムトランスフォーメーション
¨ 先行する複数のトランザクション制御ポイントに接続された1つの出力グループを使用
する、複数入力グループトランスフォーメーション
¨ マプレット(上記のトランスフォーメーションのいずれかが含まれる場合)
134
章 7: コミットポイント
マッピングは1つ以上のターゲットロード順グループを持つことができ、ターゲットロード
順グループはコミットを生成する1つ以上のアクティブソースを持つことができます。
Integration Serviceでは、ターゲット定義に最も近いアクティブソースによって生成され
たコミットが使用されます。 このコミットはコミットソースと呼ばれています。
例えば、以下のマッピングがあるとします。
図 2. 単一のコミットソースを使用するマッピング
このマッピングには、ソース修飾子トランスフォーメーションと、[すべての入力]トラ
ンスフォーメーション範囲を使用するアグリゲータトランスフォーメーションが含まれて
います。アグリゲータトランスフォーメーションはソース修飾子よりもターゲットに近い
ため、ソースベースのコミットセッションでコミットソースとして使用されます。
さらに、以下のマッピングがあるとします。
図 3. 複数のコミットソースを使用するマッピング
[トランスフォーメーション範囲]プロパティは[すべての入力]
このマッピングのターゲットロード順グループが使用するソースパイプラインには、ソー
ス修飾子トランスフォーメーションから2つのターゲットへのブランチがあります。パイプ
ラインブランチの1つには、[すべての入力]トランスフォーメーション範囲を使用するア
グリゲータトランスフォーメーションが含まれ、もう1つのブランチにはExpressionトラン
スフォーメーションが含まれています。Integration Serviceは、ソース修飾子トランスフ
ォーメーションをt_monthly_salesのコミットソースとして、アグリゲータトランスフォー
メーションをT_COMPANY_ALLのコミットソースとして識別します。両方のターゲットに対し
て1つのソースベースコミットを実行しますが、それぞれが異なるコミットソースを使用し
ます。
ソースベースのコミット
135
ソースベースコミットからターゲットベースコミット
への切り替え
Integration Serviceによりコミットを生成するアクティブソースからコミットを受け取ら
ないターゲットロード順グループのターゲットが特定された場合、Integration Serviceで
は、そのターゲットのみに対して、ターゲットベースのコミットが戻ります。
Integration Serviceは、ソースベースのコミット間隔に使用されるトランスフォーメーシ
ョンの名前を、セッションログに書き込みます。Integration Serviceは、ターゲットベー
スのコミットに切り替えると、セッションログにメッセージを書き込みます。
以下の状況では、ターゲットがコミットソースからコミットを受け取れない場合がありま
す。
¨ ターゲットがXMLソース修飾子トランスフォーメーションからデータを受け取る場合
で、XMLソース修飾子トランスフォーメーションの複数の出力グループをダウンストリ
ームトランスフォーメーションに接続する場合。複数の出力グループダウンストリーム
を接続する場合は、XMLソース修飾子トランスフォーメーションではコミットは生成さ
れません。
¨ ターゲットが、XMLソース修飾子トランスフォーメーション以外の複数の出力グループ
を持つアクティブソースからデータを受け取る場合。例えば、ターゲットはトランザク
ションを生成しないように設定したカスタムトランスフォーメーションからデータを受
け取ります。 複数の出力グループのアクティブソースは、コミットの生成やプロパゲ
ートを行いません。
XMLソースをマッピング内で接続
複数の出力グループを後続のトランスフォーメーションに接続しているときは、XMLソース
修飾子トランスフォーメーションはコミットを生成しません。XMLソース修飾子トランスフ
ォーメーションをマッピング内で接続すると、マッピング内で使用するトランスフォーメ
ーションによっては、Integration Serviceはこのセッションのターゲットごとに異なるコ
ミットタイプを使用できます。
¨ XMLソース修飾子トランスフォーメーションとターゲット間にコミットソースを置く場
合。Integration Serviceはコミットソースからコミットを受け取るので、ターゲット
に対してソースベースのコミットを使用します。 アクティブソースは、ターゲットに
対するコミットソースです。
¨ XMLソース修飾子トランスフォーメーションとターゲット間にコミットソースを置かな
い場合。 Integration Serviceはコミットを受け取らないので、ターゲットに対してタ
ーゲットベースのコミットを使用します。
136
章 7: コミットポイント
以下の図のマッピングがあるとします。
このマッピングには、複数の出力グループを後続のトランスフォーメーションに接続して
いるXMLソース修飾子トランスフォーメーションが含まれています。複数の出力グループを
後続に接続しているので、XMLソース修飾子トランスフォーメーションはコミットを生成し
ません。XMLソース修飾子トランスフォーメーションは、2つのリレーショナルターゲット
(T_STOREとT_PRODUCT)に接続されています。したがって、これらのターゲットは、アク
ティブソースが生成したたコミットを受け取りません。Integration Serviceでは、これら
のターゲットへロードする際にターゲットベースのコミットを使用します。
ただし、XMLソース修飾子トランスフォーメーションとT_YTD_SALESの間には、コミットを
生成するアクティブソースのAGG_Salesが含まれています。Integration Serviceは、
T_YTD_SALESへロードするときにソースベースのコミットを使用します。
複数の出力グループのあるカスタムトランスフォーメーション
をマッピング内で接続
トランザクションを生成しないように設定した複数出力グループのあるカスタムトランス
フォーメーションは、コミットの生成や反映を行いません。そのため、マッピング内で使
用するトランスフォーメーションによっては、Integration Serviceはこのセッション内の
ターゲットごとに異なるコミットタイプを使用できます。
¨ カスタムトランスフォーメーションとターゲット間にコミットソースを置く場合。
Integration Serviceはアクティブソースからコミットを受け取るので、ターゲットに
対してソースベースのコミットを使用します。 アクティブソースは、ターゲットに対
するコミットソースです。
¨ カスタムトランスフォーメーションとターゲット間にコミットソースを置かない場合。
Integration Serviceはコミットを受け取らないので、ターゲットに対してターゲット
ベースのコミットを使用します。
ソースベースのコミット
137
以下の図のマッピングがあるとします。
このマッピングは複数の出力グループのカスタムトランスフォーメーションである
CT_XML_Parserを含み、これによりソース修飾子トランスフォーメーションによって生成さ
れたコミットが削除されます。 そのため、ターゲットのT_store_nameおよびand
T_store_addrは、アクティブソースが生成したコミットを受け取りません。Integration
Serviceでは、これらのターゲットへロードする際にターゲットベースのコミットが使用さ
れます。
ただし、このマッピングにはカスタムトランスフォーメーションとT_store_ordersの間
に、コミットを生成するアクティブソースであるAGG_store_ordersが含まれています。
AGG_store_ordersのトランスフォーメーション範囲は[すべての入力]です。
Integration Serviceでは、T_store_ordersにロードする際にソースベースのコミットが
使用されます。
注: カスタムトランスフォーメーションプロシージャがトランザクションを出力する場
合、トランザクションを生成するようにカスタムトランスフォーメーションを設定できま
す。その際は、セッションをユーザー定義のコミット対応に設定してください。
ユーザー定義コミット
ユーザー定義のコミットセッション中に、Integration Serviceは、トランザクション制御
トランスフォーメーションを通過する行または行のセットに基づいて、トランザクション
のコミットおよびロールバックを行います。Integration Serviceは、トランスフォーメー
ションに入る行ごとにトランザクション制御式を評価します。トランザクション制御式の
戻り値は、コミットまたはロールバックポイントを定義します。
トランザクションを生成するように設定されているカスタムトランスフォーメーションが
マッピングに含まれている場合にも、ユーザー定義コミットセッションを作成できます。
ユーザー定義コミットセッションを作成した場合、カスタムトランスフォーメーションに
関連付けられた手順によりトランザクション境界が定義されます。
コミット行と評価されると、トランザクション内のすべての行がターゲットにコミットさ
れます。ロールバック行と評価されると、トランザクションのすべての行がターゲットか
らロールバックされます。Integration Serviceは、各コミットおよびロールバックのポイ
138
章 7: コミットポイント
ントで、セッションログにメッセージを書き込みます。セッションの詳細は蓄積されま
す。以下のメッセージは、セッションログからのサンプルコミットメッセージです。
WRITER_1_1_1> WRT_8317
USER-DEFINED COMMIT POINT Wed Oct 15 08:15:29 2003
===================================================
WRT_8036 Target: TCustOrders (Instance Name: [TCustOrders])
WRT_8038 Inserted rows - Requested: 1003
Applied: 1003
Rejected: 0
Affected: 1023
Integration Serviceは、トランザクション内のすべての行をすべてのターゲットに書き込
む場合、ターゲットごとにコミットを順次発行します。
Integration Serviceは、トランザクション制御式の戻り値またはエラー処理設定に基づい
て、データをロールバックします。トランザクション制御式によりロールバック値が返さ
れると、トランザクションがロールバックされます。エラーが発生した場合は、次のコミ
ットポイントでのコミットまたはロールバックの選択が可能です。
トランザクション制御式がコミット、ロールバック、または継続以外の値に評価される
と、Integration Serviceはセッションに失敗します。
セッション完了時に、コミット行によってバインドされなかったターゲットにデータが書
き込まれる場合があります。このオープントランザクションをエンドオブファイルでコミ
ットするか、またはロールバックすることができます。
注: ユーザー定義のコミットのセッションで一括ロードを使用している場合は、ターゲッ
トがトランザクション境界を認識しない場合があります。ターゲット接続グループがトラ
ンザクションをサポートしない場合、Integration Serviceは以下のメッセージをセッショ
ンログに書き込みます。
WRT_8324 Warning: Target Connection Group’s connection doesn’t support transactions. Targets may
not be loaded according to specified transaction boundaries rules.
トランザクションのロールバック
Integration Serviceでは、以下の状況でトランザクションがロールバックされます。
¨ ロールバック評価。トランザクション制御式がロールバック値を返します。
¨ オープントランザクション。 ファイルの末尾でロールバックを選択します。
¨ エラー時のロールバック。 Integration Serviceにより非致命的エラーが検出された場
合には、コミットトランザクションのロールバックを選択します。
¨ コミット失敗時のロールバック。トランザクション制御単位内のターゲット接続グルー
プがコミットに失敗した場合、Integration Serviceによりすべてのコミットされてい
ないデータが、最後に成功したコミットポイントにロールバックされます。
ロールバック評価
トランザクション制御式によりロールバック値が返された場合、Integration Serviceはそ
のトランザクションをロールバックし、トランザクションがロールバックされたことを示
すメッセージをセッションログに書き込みます。このメッセージにはロールバックされた
行数も示されます。
以下のメッセージは、トランザクション制御式によりロールバック値が返された場合に、
Integration Serviceがセッションログに書き込むメッセージのサンプルです。
WRITER_1_1_1> WRT_8326 User-defined rollback processed
WRITER_1_1_1> WRT_8331 Rollback statistics
ユーザー定義コミット
139
WRT_8162 ===================================================
WRT_8330 Rolled back [333] inserted, [0] deleted, [0] updated rows for the target [TCustOrders]
オープントランザクションのロールバック
トランザクション制御式の最後の行がTC_CONTINUE_TRANSACTIONに評価された場合、この
セッションはオープントランザクションで完了します。このオープントランザクションの
ロールバックを選択すると、Integration Serviceはトランザクションをロールバックし、
トランザクションがロールバックされたことを示すメッセージをセッションログに書き込
みます。
以下のメッセージは、セッションプロパティで[ファイルの最後でコミット]が無効にな
っていることを示すサンプルメッセージです。
WRITER_1_1_1> WRT_8168 End loading table [TCustOrders] at: Wed Nov 05 10:21:56 2003
WRITER_1_1_1> WRT_8325 Final rollback executed for the target [TCustOrders] at end of load
以下のメッセージは、セッションプロパティで[ファイルの最後でコミット]が有効にな
っていることを示すサンプルメッセージです。
WRITER_1_1_1> WRT_8143
Commit at end of Load Order Group Wed Nov 05 08:15:29 2003
エラー時のロールバック
Integration Serviceが非致命的エラーを検出した場合は、トランザクションを次のコミッ
トポイントでロールバックできます。Integration Serviceは非致命的エラーを検出する
と、エラー行を処理し、トランザクション処理を続行します。トランザクション境界がコ
ミット行である場合、Integration Serviceはトランザクション全体をロールバックし、拒
否ファイルに書き込みます。
次の表で、ロールバックされたトランザクションに対する拒否ファイルの行インジケータ
について説明します。
行インジケータ
説明
4
ロールバックされた挿入
5
ロールバックされた更新
6
ロールバックされた削除
注: トランザクション制御トランスフォーメーションで行を処理する前にエラーが発生し
た場合、Integration Serviceはトランザクションをロールバックしません。
コミット失敗時のロールバック
トランザクション制御単位内のすべてのターゲットのコミットポイントに到達すると、
Integration Serviceは各ターゲットのコミットを順次発行します。トランザクション制御
単位内のターゲット接続グループのいずれかに対してコミットが失敗した場合、
Integration Serviceは最後に成功したコミットポイントにすべてのデータをロールバック
します。コミット済みトランザクションは、ロールバックできませんが、そのトランザク
ションは、拒否ファイルに書き込まれます。
140
章 7: コミットポイント
例えば、トランザクション制御単位1つとターゲット接続グループ3つを使用してマッピン
グを作成するとします。 ターゲット名には、ターゲット接続グループに関する情報が含ま
れています。TCG1_T1は最初のターゲット接続グループと最初のターゲットを表します。
以下の図に、Integration Serviceがコミット失敗時にロールバックする場合の動作を示し
ます。
Integration Serviceでは、マッピングを処理する場合に以下のロジックが使用されます。
1.
Integration Serviceがすべてのターゲットの3番目のコミットポイントに到達しまし
た。
2.
各ターゲットに対してコミットの発行を順次開始します。
3.
Integration Serviceによって、TCG1_T1とTCG1_T2に対するコミットが正常に行われ
ます。
4.
TCG2_T3へのコミットが失敗しました。
5.
Integration Serviceは、TCG3_T4に対するコミットを発行しません。
6.
Integration Serviceは、TCG2_T3とTCG3_T4を2番目のコミットポイントにロールバッ
クします。TCG1_T1とTCG1_T2は3番目のコミットポイントでコミットに成功している
ので、2番目のコミットポイントにロールバックすることはできません。
7.
Integration Serviceは、TCG2_T3およびTCG3_T4からの行を拒否ファイルに書き込み
ます。これらは、3番目のコミットポイントに関連付けられたロールバック行です。
8.
Integration Serviceは、TCG2_T1およびTCG3_T2からの行を拒否ファイルに書き込み
ます。これらは、3番目のコミットポイントに関連付けられたコミット行です。
ユーザー定義コミット
141
以下の表に、失敗したトランザクション制御単位のコミットされたトランザクションに対
する、拒否ファイル内の行インジケータを示します。
行インジケータ
説明
7
コミットされた挿入
8
コミットされた更新
9
コミットされた削除
トランザクション制御について
PowerCenterでは、トランスフォーメーション処理時およびターゲットでのデータのコミッ
トおよびロールバック時にIntegration Serviceが使用するトランザクションを定義できま
す。 入力行の数の変化に応じてトランザクションを定義できます。トランザクションと
は、コミット行またはロールバック行、トランザクション境界によってバインドされた行
のセットです。トランザクション境界によってバインドできない行もあります。それはオ
ープントランザクションです。オープントランザクションをエンドオブファイルでコミッ
トするか、ロールバックするかについては、セッションの設定時に選択できます。
Integration Serviceでは、入力行が、トランスフォーメーションに対して一度に1行ず
つ、すべての行に対してトランザクション内で、またはすべてのソース行対して一度に処
理されます。 トランザクション内のすべての行に対するトランスフォーメーションを処理
することにより、アグリゲータなどのトランスフォーメーションをリアルタイムセッショ
ンで含めることができます。
トランザクション境界は、トランザクション制御ポイントから発生します。トランザクシ
ョン制御ポイントは、トランザクション境界を以下の方法で定義または再定義するトラン
スフォーメーションです。
¨ トランザクション境界の生成。トランザクション境界を定義するトランスフォーメーシ
ョンは、セッションコミットタイプによって異なります。
- ターゲットベースおよびユーザー定義のコミット。トランザクションジェネレータ
は、トランザクション境界を生成します。 トランザクションジェネレータは、コミッ
ト行とロールバック行の両方を生成するトランスフォーメーションです。トランザク
ションコントロールトランスフォーメーションとカスタムトランスフォーメーション
は、トランザクションジェネレータです。
- ソースベースのコミット。一部のアクティブソースはコミットを生成します。アクテ
ィブソースはロールバック行を生成しません。トランザクションジェネレータは、コ
ミット行とロールバック行を生成します。
¨ 入力トランザクション境界の削除。トランスフォーメーションが入力トランザクション
境界を削除し、コミットを生成しなかった場合、Integration Serviceではすべての行
がオープントランザクションに出力されます。 コミットを生成するすべてのアクティ
ブソースおよびトランザクションジェネレータにより、入力トランザクション境界が削
除されます。
142
章 7: コミットポイント
トランスフォーメーション範囲
トランスフォーメーション範囲トランスフォーメーションプロパティを使用して、
Integration Serviceがトランスフォーメーションロジックを入力データに適用する方法を
設定できます。 Integration Serviceがトランスフォーメーションを処理する場合は、ト
ランスフォーメーション範囲およびマッピング設定に応じて、トランザクション境界を削
除するか、トランザクション境界を保持します。
トランスフォーメーション範囲には、以下の値のいずれかを選択できます。
¨ 行。トランスフォーメーションロジックを、一度に1つのデータ行ごとに適用します。
データの行が他の行に依存していない場合は[行]を選択します。複数のアップストリ
ームのトランザクション制御ポイントに接続されたトランスフォーメーションに対して
[行]を選択した場合、Integration Serviceではトランザクション境界が削除され、
オープントランザクションとして、トランスフォーメーションからすべての行が出力さ
れます。 単一のアップストリームのトランザクション制御ポイントに接続されたトラ
ンスフォーメーションに対して[行]を選択した場合、Integration Serviceではトラ
ンザクション境界が保持されます。
¨ トランザクション。トランスフォーメーションロジックをトランザクションのすべての
行に適用します。 データの行が同一トランザクション内のすべての行に依存し、他の
トランザクションの行には依存していない場合には、[トランザクション]を選択しま
す。[トランザクション]を選択した場合、Integration Serviceでは入力トランザク
ション境界が保持されます。 新しいトランザクションを受け取ると、アグリゲータキ
ャッシュまたはルックアップキャッシュなどのキャッシュをすべてリセットします。
複数入力グループトランスフォーメーションに[トランザクション]を選択する場合
は、すべての入力グループを同一の先行するトランザクション制御ポイントに接続する
必要があります。
¨ すべての入力。トランスフォーメーションロジックをすべての入力データに適用しま
す。 [すべての入力]を選択した場合、Integration Serviceでは入力トランザクショ
ン境界が削除され、オープントランザクションとしてトランスフォーメーションからす
べての行が出力されます。 データの行がソース内のすべての行に依存している場合
は、[すべての入力]を選択します。
以下の表に、各トランスフォーメーションに対して利用可能なトランスフォーメーション
範囲値を一覧表示します。
表 3. トランスフォーメーション範囲プロパティ値
トランスフォー
メーション
行
トランザクシ
ョン
すべての入力
アグリゲータ
-
オプション。
デフォルト。
トランザクション制
御ポイント
アプリケーショ
ンソース修飾子
なし
カスタム
オプション。
-
-
オプション。
デフォルト。
トランザクション
制御ポイント
トランザクション制御について
143
トランスフォー
メーション
行
トランザクシ
ョン
すべての入力
コミットを生成す
るように設定され
ている場合、また
は先行する複数の
トランザクション
制御点に接続され
ている場合には、
トランザクション
制御ポイント。
コミットを生
成するように
設定されてい
る場合にはト
ランザクショ
ン制御ポイン
ト。
常にトランザクショ
ン制御ポイント。
データマスク
デフォルト。読み
取り専用です。
-
-
式
デフォルト。表示
されません。
-
-
エクスターナル
プロシージャ
デフォルト。表示
されません。
-
-
フィルタ
デフォルト。表示
されません。
-
-
HTTP
デフォルト。読み
取り専用です。
-
-
Java
パッシブなトラン
スフォーメーショ
ンの場合にはデフ
ォルト。
アクティブな
トランスフォ
ーメーション
の場合にはオ
プション。
アクティブなトラン
スフォーメーション
の場合にはデフォル
ト。
ジョイナ
-
オプション。
デフォルト。
出力グループを1つ
使用している場合、
またはコミットを生
成するように設定さ
れている場合、コミ
ットを生成します。
上記以外の場合、
オープントランザク
ションが生成されま
す。
トランザクション制
御ポイント
ルックアップ
デフォルト。表示
されません。
-
-
MQソース修飾子
なし
-
-
-
-
トランザクション
制御ポイント
ノーマライザ
(VSAM)
144
なし
トランザクション
制御ポイント
章 7: コミットポイント
トランスフォー
メーション
行
トランザクシ
ョン
すべての入力
ノーマライザ
(リレーショナ
ル)
デフォルト。表示
されません。
-
-
ランク
-
オプション。
デフォルト。
トランザクション制
御ポイント
ルータ
デフォルト。表示
されません。
-
-
ソータ
-
オプション。
デフォルト。
トランザクション制
御ポイント
シーケンスジェ
ネレータ
デフォルト。表示
されません。
-
-
ソース修飾子
なし
-
-
スクリプトモード
SQLトランスフォー
メーションのデフ
ォルト。
オプション。
クエリーモードSQL
トランスフォーメー
ションのデフォル
ト。
ストアドプロシ
ージャ
デフォルト。表示
されません。
-
-
トランザクショ
ン制御
デフォルト。表示
されません。
-
-
トランザクション
制御ポイント
SQL
コミットを生
成するように
設定されてい
る場合にはト
ランザクショ
ン制御ポイン
ト。
トランザクション
制御ポイント
共有体
デフォルト。表示
されません。
-
-
構造化されてい
ないデータ
デフォルト。読み
取り専用です。
-
-
アップデートス
トラテジ
デフォルト。表示
されません。
-
-
XMLジェネレー
タ
-
オプション。
デフォルト。表示さ
れません。
トランザクション制御について
145
トランスフォー
メーション
行
トランザクシ
ョン
すべての入力
コミット時の
フラッシュで
新しいドキュ
メントを作成
するように設
定されている
場合にはトラ
ンザクショ
ン。
XMLパーサー
デフォルト。表示
されません。
-
-
XMLソース修飾
子
なし
-
-
トランザクション
制御ポイント
トランザクション制御単位について
トランザクション制御単位は、コミットを生成するアクティブソース、または有効なトラ
ンザクションジェネレータに接続されたターゲットのグループです。トランザクション制
御単位は、ターゲットロード順グループのサブセットであるため、複数のターゲット接続
グループを含むことができます。
トランザクション制御単位内のすべてのターゲットのコミットポイントに到達すると、
Integration Serviceは各ターゲットのコミットを順次発行します。
トランザクション制御に関する作業のルールおよびガ
イドライン
トランザクション制御を使用する際には、以下の規則とガイドラインについて考慮してく
ださい。
¨ [トランザクション]トランスフォーメーション範囲を使用するトランスフォーメーシ
ョンは、1つのトランザクション制御ポイントからデータを受け取る必要があります。
¨ Integration Serviceでは、トランザクショントランスフォーメーション範囲を使用す
るトランスフォーメーションに対して、最初のアップストリームのトランザクション制
御ポイントによって定義されたトランザクション境界が使用されます。
¨ トランザクションジェネレータは、ターゲットに対して有効または無効にすることがで
きます。Integration Serviceでは、データをターゲットにロードする際に、有効なト
ランザクションジェネレータにより生成されたトランザクションが使用されます。
¨ Workflow Managerでは、トランザクショントランスフォーメーション範囲を使用するア
グリゲータトランスフォーメーションが含まれているセッションで、差分集計を使用で
きないようにします。
146
章 7: コミットポイント
¨ すべての入力のトランスフォーメーション範囲を使用するトランスフォーメーションに
より、トランザクションジェネレータは、ユーザー定義コミットセッションのターゲッ
トに対して無効になります。
¨ Integration Serviceでは、トランザクショントランスフォーメーション範囲を使用す
るアグリゲータ、ジョイナ、ランク、およびソータトランスフォーメーションの各トラ
ンザクションの最初にすべてのキャッシュがリセットされます。
¨ ソート済み入力を使用する場合は、ジョイナトランスフォーメーションにトランザクシ
ョントランスフォーメーション範囲を選択できます。
¨ トランザクショントランスフォーメーション範囲を使用するトランスフォーメーション
でパーティションポイントを追加した場合、Workflow Managerではデフォルトでパスス
ルーパーティションタイプが使用されます。 パーティションタイプは変更できませ
ん。
トランザクション別ターゲットファイルの作成
Integration Serviceが新規トランザクションを開始するたびに、個別の出力ファイルを生
成できます。ターゲットフラットファイル名は動的に指定できます。
トランザクションごとに個別の出力ファイルを生成するには、FileNameポートをフラット
ファイルターゲット定義に追加します。マッピング内のFileNameポートを接続すると、
PowerCenterではコミットごとに個別のターゲットファイルに書き込みを行います。
Integration Serviceでは、各トランザクションの最初の行からFileNameポートの値が使
用され、出力ファイルの名前が付けられます。
コミットプロパティの設定
セッションを作成するときに、コミットプロパティを設定できます。設定するプロパティ
は、Integration Serviceで実行するコミットのタイプやマッピングのタイプによって異な
ります。コミットプロパティは、[プロパティ]タブの[全般オプション]設定で設定し
ます。
以下の表に、[プロパティ]タブの[全般オプション]設定で設定するセッションコミッ
トプロパティを示します。
プロパティ
ターゲットベース
ソースベース
ユーザー定義
コミットタ
イプ
トランザクションジ
ェネレータがない場
合、または無効なト
ランザクションジェ
ネレータのみがマッ
ピングに存在する場
トランザクション
ジェネレータがな
い場合、または無
効なトランザクシ
ョンジェネレータ
のみがマッピング
に存在する場合
に、ソースベース
マッピングに有効
なトランザクショ
ンジェネレータが
ない場合に、デフ
コミットプロパティの設定
147
プロパティ
ターゲットベース
ソースベース
ユーザー定義
合に、デフォルトで
選択されます。
のコミットに対し
て選択します。
ォルトで選択され
ます。
コミット間
隔
デフォルトは
10,000 です。
デフォルトは
10,000 です。
なし
ファイルの
最後でコミ
ット
エンドオブファイル
でデータをコミット
します。デフォルト
で有効になっていま
す。このオプション
を無効にすることは
できません。
エンドオブファイ
ルでデータをコミ
ットします。オー
プントランザクシ
ョンがロールバッ
クされるように設
定するには、この
オプションをクリ
アします。
エンドオブファイ
ルでデータをコミ
ットします。オー
プントランザクシ
ョンがロールバッ
クされるように設
定するには、この
オプションをクリ
アします。
Roll Back
Transactio
ns on
Errors
Integration
Serviceにより非致
命的エラーが検出さ
れた場合は、次のコ
ミットポイントでト
ランザクションのロ
ールバックを選択で
きます。
Integration
Serviceにより非
致命的エラーが検
出された場合は、
次のコミットポイ
ントでトランザク
ションのロールバ
ックを選択できま
す。
Integration
Serviceにより非致
命的エラーが検出
された場合は、次
のコミットポイン
トでトランザクシ
ョンのロールバッ
クを選択できま
す。
Integration
Serviceによりト
ランスフォーメー
ションエラーが検
出された際に、そ
のエラーがターゲ
ットに対して有効
なトランザクショ
ンジェネレータの
後で発生した場
合、Integration
Serviceによりト
ランザクションが
ロールバックされ
ます。
Integration
Serviceによりトラ
ンスフォーメーシ
ョンエラーが検出
された際に、その
エラーがターゲッ
トに対して有効な
トランザクション
ジェネレータの後
で発生した場合、
Integration
Serviceによりトラ
ンザクションがロ
ールバックされま
す。
Integration
Serviceによりトラ
ンスフォーメーショ
ンエラーが検出され
た際に、そのエラー
がターゲットに対し
て有効なトランザク
ションジェネレータ
の後で発生した場
合、Integration
Serviceによりトラ
ンザクションがロー
ルバックされます。
ヒント: Microsoft SQL ServerまたはOracleターゲットにバルクロードを行う場合、大
きいコミット間隔を設定します。 Microsoft SQL ServerとOracleではコミットのたびに
新しいバルクロードトランザクションが開始されます。コミット間隔を大きくすること
で、バルクロードの回数を減らしてパフォーマンスを向上できます。
148
章 7: コミットポイント
第 8 章
行エラーのロギング
この章では、以下の項目について説明します。
¨ 行エラーログの概要, 149 ページ
¨ エラーログテーブルについて, 150 ページ
¨ エラーログファイルについて, 157 ページ
¨ エラーログオプションの設定, 160 ページ
行エラーログの概要
セッションを設定するときに、行エラーが一元的に記録されるように指定できます。行エ
ラーが発生すると、Integration Serviceがエラー情報を記録するので、エラーの原因とソ
ースを判断することができます。Integration Serviceはソース名、行ID、現在の行のデー
タ、トランスフォーメーション、タイムスタンプ、エラーコード、エラーメッセージ、リ
ポジトリ名、フォルダ名、セッション名、マッピング情報などの情報を記録します。
行エラーは、リレーショナルテーブルまたはフラットファイルに記録できます。エラーロ
ギングを有効にした場合、Integration Serviceはセッションの初回実行時に、エラーテー
ブルまたはエラーログファイルを作成します。エラーログは、累積的に記録されます。
Integration Serviceは、エラーログが存在する場合、エラーデータを既存のエラーログに
追加します。
フラットファイルまたはリレーショナルソースのソース行データをログに出力できます。
ソース行データには、エラーが発生したソース修飾子から、行データ、ソース行ID、およ
びソース行タイプが含まれます。XMLファイルソースの行エラーをログに出力することはで
きません。XMLソースのエラーはセッションログで確認できます。
Integration Serviceは、複数のパーティションまたは次のいずれかのアクティブソースが
存在する非パススルーパーティションポイントの後でエラーが発生した場合、Source
Qualifier内でどの行にエラーが存在するかを識別できません。
¨ アグリゲータ
¨ カスタム(アクティブなトランスフォーメーションとして設定されていること)
¨ ジョイナ
¨ ノーマライザ(パイプライン)
149
¨ ランク
¨ ソータ
デフォルトでは、トランスフォーメーションエラーはセッションログに、拒否された行は
拒否ファイルに記録されます。エラーロギングを有効にした場合、Integration Service
は、拒否ファイルを生成することも、削除された行をセッションログに書き込むこともし
ません。拒否ファイルが存在しない場合、トランザクション制御トランスフォーメーショ
ンのロールバックエラーやコミットエラーが記録されません。行エラーログのほかに、行
自体もセッションログに記録したい場合は、冗長データトレースを有効にします。
注: 行エラーを記録するときは、Integration Serviceは行ブロック単位ではなく行単位
で処理を行うため、セッションのパフォーマンスが低下する場合があります。
エラーログのコードページ
Integration Serviceでは、Integration Serviceプロセスのオペレーティングシステムに
応じて異なる方法でエラーログファイルにデータが書き込まれます。
¨ UNIX。Integration Serviceでは、Integration Serviceプロセスのコードページを使
用してデータがエラーログファイルに書き込まれます。 ただし、LogsInUTF-16LEの
Integration Serviceプロパティを有効にすることにより、UTF-16LEを使用してエラー
ログファイルに書き込むようにIntegration Serviceを設定できます。
¨ Windows。Integration Serviceでは、UTF-16LEエンコード形式を使用してエラーログ
ファイルにすべての文字が書き込まれます。
エラーテーブルが存在するリレーショナルデータベースのコードページは、ターゲットの
コードページのサブセットである必要があります。エラーログテーブルのコードページが
ターゲットのコードページのサブセットでない場合、Integration Serviceによりエラーロ
グテーブルに矛盾したデータが書き込まれる場合があります。
エラーログテーブルについて
リレーショナルデータベースのエラーロギングを選択した場合、セッションの初回実行時
にIntegration Serviceによって以下のエラーテーブルが作成されます。
¨ PMERR_DATA。 トランスフォーメーションの行エラーに関するデータとメタデータ、お
よび対応するソース行を格納します。
¨ PMERR_MSG。 エラーおよびエラーメッセージに関するメタデータを格納します。
¨ PMERR_SESS。 セッションに関するメタデータを格納します。
¨ PMERR_TRANS。 トランスフォーメーションエラーが発生した場合に、ソースポートおよ
びトランスフォーメーションポートに関するメタデータ(名前やデータタイプなど)を
格納します。
テーブル作成先のデータベースに対し、データベース接続を指定する必要があります。特
定のセッションについて既にエラーテーブルが存在する場合、これらのテーブルに対して
行エラーが追加されます。
150
章 8: 行エラーのロギング
リレーショナルデータベースによるエラーロギングでは、複数のセッションで発生した行
エラーを、特定のエラーテーブルに収集することができます。これを行うには、すべての
セッションに対して、エラーログテーブル名の接頭語を統一して指定します。生成された
エラーテーブルに対してSelect文を発行すれば、特定のセッションに限定してエラーデー
タを取得することができます。
エラーテーブルには接頭語を指定できます。エラーテーブル名に使用できる文字数は、最
大11文字です。Oracle、Sybase、Teradataのエラーログテーブルに名前を付ける場合、19
文字を超える接頭語を指定してはいけません。これらのデータベースでは、テーブル名の
最大長に30文字という制限があります。テーブル名の接頭語には、パラメータまたは変数
を使用できます。パラメータファイルで定義可能なパラメータまたは変数タイプを使用し
ます。たとえば、エラーログテーブル名の接頭語としてセッションパラメータ
$ParamMyErrPrefixを使用し、パラメータファイルでテーブルの接頭語に
$ParamMyErrPrefixを設定するとします。
Integration Serviceによって作成されるエラーテーブルには、プライマリキーと外部キー
が指定されていません。キーカラムは自分で指定することもできます。
PMERR_DATA
Integration Serviceは、行エラーが発生した場合、PMERR_DATAテーブルにエントリを挿
入します。このテーブルには、トランスフォーメーションの行エラーに関するデータとメ
タデータ、および対応するソース行が格納されます。
以下の表に、PMERR_DATAテーブルの構造を示します。
カラム名
データー
タイプ
説明
REPOSITORY_GID
Varchar
リポジトリの一意のIDです。
WORKFLOW_RUN_ID
Integer
ワークフローの一意のIDです。
WORKLET_RUN_ID
Integer
ワークレットの一意のIDです。セッション
がワークレットの一部ではない場合、この
値は0になります。
SESS_INST_ID
Integer
セッションの一意のIDです。
TRANS_MAPPLET_IN
ST
Varchar
エラーが発生したマプレットの名前です。
TRANS_NAME
Varchar
エラーが発生したトランスフォーメーショ
ンの名前です。
TRANS_GROUP
Varchar
エラーが発生した入力グループまたは出力
グループの名前です。トランスフォーメー
ションにグループが含まれない場合、デフ
ォルトによりメinputモまたはメoutputモの
いずれかになります。
TRANS_PART_INDEX
Integer
エラーが発生したトランスフォーメーショ
ンのパーティション番号を指定します。
エラーログテーブルについて
151
カラム名
データー
タイプ
説明
TRANS_ROW_ID
Integer
最後のアクティブソースによって生成され
た行IDを指定します。
TRANS_ROW_DATA
Long
Varchar
カラムインジケータなど、すべてのカラム
データを含む、区切り文字付きの文字列で
す。各種カラムインジケータを次に示しま
す。
D - 有効
N - NULL
T - 切り詰め
B - バイナリ
U - データが利用不可
カラムデータとカラムインジケータの固定
区切り文字はコロン(:)になります。カラ
ム間の区切り文字はパイプ(|)になりま
す。カラム区切り文字は、エラー処理設定
で上書きできます。
エラーテーブルでは、すべてのカラムデー
タがテキスト文字列に変換されます。バイ
ナリデータの場合は、Integration Service
はカラムインジケータのみ使用します。
この値は複数行にまたがる場合がありま
す。データが2000バイトを超える場合は、
Integration Serviceによって新しい行が作
成されます。各カラムエラーエントリの行
番号は、LINE_NOカラムに格納されます。
SOURCE_ROW_ID
Integer
ソース修飾子が、読み込んだ各行に割り当
てる値です。Integration Serviceが行を識
別できなかった場合、この値は-1になりま
す。
SOURCE_ROW_TYPE
Integer
行インジケータは、挿入、更新、またはリ
ジェクトのいずれのマークが行に付いてい
たかを示します。
0 - 挿入
1 - 更新
2 - 削除
3 - リジェクト
SOURCE_ROW_DATA
Long
Varchar
カラムインジケータなど、すべてのカラム
データを含む、区切り文字付きの文字列で
す。各種カラムインジケータを次に示しま
す。
D - 有効
O - オーバーフロー
N - NULL
T - 切り詰め
152
章 8: 行エラーのロギング
カラム名
データー
タイプ
説明
B - バイナリ
U - データが利用不可
カラムデータとカラムインジケータの固定
区切り文字はコロン(:)になります。カラ
ム間の区切り文字はパイプ(|)になりま
す。カラム区切り文字は、エラー処理設定
で上書きできます。
Integration Serviceは、すべてのカラムデ
ータをエラーテーブルまたはエラーファイ
ルのテキスト文字列に変換します。バイナ
リデータの場合は、Integration Serviceは
カラムインジケータのみ使用します。
この値は複数行にまたがる場合がありま
す。データが2000バイトを超える場合は、
Integration Serviceによって新しい行が作
成されます。各カラムエラーエントリの行
番号は、LINE_NOカラムに格納されます。
LINE_NO
注:
Integer
SOURCE_ROW_DATAおよびTRANS_ROW_DATAにお
いて、複数行にまたがる各行エラーエント
リの行番号を指定します。
テーブルを結合するには、太字のカラム名を使用します。
PMERR_MSG
Integration Serviceは、行エラーが発生した場合、PMERR_MSGテーブルにエントリを挿入
します。このテーブルには、エラーおよびエラーメッセージに関するメタデータが格納さ
れます。
以下の表に、PMERR_MSGテーブルの構造を示します。
カラム名
データー
タイプ
説明
REPOSITORY_GID
Varchar
リポジトリの一意のIDです。
WORKFLOW_RUN_ID
Integer
ワークフローの一意のIDです。
WORKLET_RUN_ID
Integer
ワークレットの一意のIDです。セッション
がワークレットの一部ではない場合、この
値は0になります。
SESS_INST_ID
Integer
セッションの一意のIDです。
MAPPLET_INST_NAM
E
Varchar
トランスフォーメーションが属しているマ
プレットです。トランスフォーメーション
エラーログテーブルについて
153
カラム名
データー
タイプ
説明
がマプレットの一部ではない場合、この値
はN/Aになります。
TRANS_NAME
Varchar
エラーが発生したトランスフォーメーショ
ンの名前です。
TRANS_GROUP
Varchar
エラーが発生した入力グループまたは出力
グループの名前です。トランスフォーメー
ションにグループが含まれない場合、デフ
ォルトによりメinputモまたはメoutputモの
いずれかになります。
TRANS_PART_INDEX
Integer
エラーが発生したトランスフォーメーショ
ンのパーティション番号を指定します。
TRANS_ROW_ID
Integer
最後のアクティブソースによって生成され
た行IDを指定します。
ERROR_SEQ_NUM
Integer
各トランスフォーメーショングループの行
単位のエラー数を示すカウンタです。セッ
ションに複数のパーティションが存在する
場合、Integration Serviceは、このカウン
タをパーティションごとに保持します。
たとえば、パーティション1のトランスフォ
ーメーションで3つのエラーが、パーティシ
ョン2のトランスフォーメーションで2つの
エラーが生成された場合、パーティション1
におけるERROR_SEQ_NUMの値は1、2、3に、
パーティション2におけるERROR_SEQ_NUMの
値は1および2になります。
ERROR_TIMESTAMP
日付/時刻
エラー発生時のIntegration Serviceのタイ
ムスタンプです。
ERROR_UTC_TIME
Integer
エラー発生時刻を協定世界時(グリニッジ
標準時)で示します。
ERROR_CODE
Integer
エラーによって生成されるエラーコードで
す。
ERROR_MSG
Long
Varchar
エラーメッセージです。複数行にまたがる
場合があります。データが2000バイトを超
える場合は、Integration Serviceによって
新しい行が作成されます。各カラムエラー
エントリの行番号は、LINE_NOカラムに格納
されます。
ERROR_TYPE
Integer
発生したエラーのタイプです。Integration
Serviceは、次の値を使用します。
1 - Readerエラー
2 - Writerエラー
154
章 8: 行エラーのロギング
カラム名
データー
タイプ
説明
3 - トランスフォーメーションエラー
LINE_NO
注:
Integer
ERROR_MSGにおいて、複数行にまたがる各行
エラーエントリの行番号を指定します。
テーブルを結合するには、太字のカラム名を使用します。
PMERR_SESS
リレーショナルデータベースによるエラーロギングを選択した場合、エントリが
PMERR_SESSテーブルに挿入されます。このテーブルには、エラーが発生したセッションに
関するメタデータが格納されます。
以下の表に、PMERR_SESSテーブルの構造を示します。
カラム名
データー
タイプ
説明
REPOSITORY_GID
Varchar
リポジトリの一意のIDです。
WORKFLOW_RUN_ID
Integer
ワークフローの一意のIDです。
WORKLET_RUN_ID
Integer
ワークレットの一意のIDです。セッション
がワークレットの一部ではない場合、この
値は0になります。
SESS_INST_ID
Integer
セッションの一意のIDです。
SESS_START_TIME
日付/時刻
セッション開始時のIntegration Serviceの
タイムスタンプです。
SESS_START_UTC_T
IME
Integer
セッション開始時刻を協定世界時(グリニ
ッジ標準時)で示します。
REPOSITORY_NAME
Varchar
セッション格納先のリポジトリ名です。
FOLDER_NAME
Varchar
マッピングおよびセッションが置かれたフ
ォルダを指定します。
WORKFLOW_NAME
Varchar
ロギングの対象となるセッションを実行す
るワークフローを指定します。
TASK_INST_PATH
Varchar
完全修飾セッション名です。複数行にまた
がる場合があります。セッション名に対応
する新しい行がIntegration Serviceによっ
て作成されます。また、修飾されたセッシ
ョン名では、各ワークレットについて新し
い行が作成されます。たとえば、
エラーログテーブルについて
155
カラム名
データー
タイプ
説明
WL1.WL2.S1というセッション名があるとし
ます。この名前の各構成コンポーネント
は、次のように新しい行に出力されます。
WL1
WL2
S1
カラム番号はLINE_NOカラムに出力されま
す。
MAPPING_NAME
Varchar
セッションが使用するマッピングを指定し
ます。
LINE_NO
Integer
TASK_INST_PATHにおいて、複数行にまたが
る各行エラーエントリの行番号を指定しま
す。
注:
テーブルを結合するには、太字のカラム名を使用します。
PMERR_TRANS
Integration Serviceは、トランスフォーメーションエラーが発生した場合、PMERR_TRANS
テーブルにエントリを挿入します。このテーブルには、ソースポートおよびトランスフォ
ーメーションポートのメタデータ(名前やデータ型など)が格納されます。
以下の表に、PMERR_TRANSテーブルの構造を示します。
156
カラム名
データー
タイプ
説明
REPOSITORY_GID
Varchar
リポジトリの一意のIDです。
WORKFLOW_RUN_ID
Integer
ワークフローの一意のIDです。
WORKLET_RUN_ID
Integer
ワークレットの一意のIDです。セッション
がワークレットの一部ではない場合、この
値は0になります。
SESS_INST_ID
Integer
セッションの一意のIDです。
TRANS_MAPPLET_IN
ST
Varchar
マプレットのインスタンスを指定します。
TRANS_NAME
Varchar
エラーが発生したトランスフォーメーショ
ンの名前です。
TRANS_GROUP
Varchar
エラーが発生した入力グループまたは出力
グループの名前です。トランスフォーメー
章 8: 行エラーのロギング
カラム名
データー
タイプ
説明
ションにグループが含まれない場合、デフ
ォルトによりメinputモまたはメoutputモの
いずれかになります。
TRANS_ATTR
Varchar
エラーが発生した入力グループまたは出力
グループのポート名およびデータ型が列挙
されます。ポート名とデータ型のペアがカ
ンマ区切りで、「portname1:datatype,
portname2:datatype」のように記録されま
す。
この値は複数行にまたがる場合がありま
す。データが2000バイトを超える場合は、
そのトランスフォーメーション属性に対応
する新しい行が作成され、カラム番号が
LINE_NOカラムに出力されます。
SOURCE_MAPPLET_I
NST
Varchar
ソースが存在するマプレットの名前です。
SOURCE_NAME
Varchar
ソース修飾子の名前です。ソース修飾子以
外のアクティブソースまたは複数のパーテ
ィションを持つ非パススルーパーティショ
ンポイントの下流で行エラーが発生した場
合、N/Aが記録されます。
SOURCE_ATTR
Varchar
ソース修飾子内のエラーが発生した接続済
みフィールドを列挙します。複数のフィー
ルドでエラーが発生した場合、各フィール
ド名は新しい行に入力されます。カラム番
号はLINE_NOカラムに出力されます。
LINE_NO
Integer
TRANS_ATTRおよびSOURCE_ATTRにおいて、複
数行にまたがる各行エラーエントリの行番
号を指定します。
注:
テーブルを結合するには、太字のカラム名を使用します。
エラーログファイルについて
セッションで発生したすべてのエラーを収集するには、エラーログファイルを作成しま
す。エラーログファイルは、ラインがカラムごとに区切られたシーケンシャルファイルで
す。固有のエラーログファイル名を指定することにより、ワークフローの各セッションに
ついて独立したログファイルを作成できます。1セッションについて行エラーを分析する際
は、1つのエラーログファイルを使用します。
エラーログファイルについて
157
エラーログファイルでは、エラーロギングカラムが二重パイプ(||)で区切られます。デ
フォルトでは、行データが一重パイプ(|)で区切られます。データカラム区切り文字は、
[Data Column Delimiter]エラーログオプションの設定で変更できます。
エラーログファイルは、次のような構造になっています。
[Session Header]
[Column Header]
[Column Data]
セッションヘッダには、PMERR_SESSテーブルに格納される情報と類似したセッション実行
情報が含まれます。カラムヘッダには、データカラム名が含まれます。カラムデータに
は、行データおよびエラーメッセージ情報が含まれます。
以下の表に、エラーログファイルのカラムを示します。
ログファイルカ
ラムヘッダ
説明
トランスフォー
メーション
マッピング内のエラーが発生したトランスフォーメーショ
ンの名前です。
トランスフォー
メーションマプ
レット名
当該のトランスフォーメーションが含まれるマプレットの
名前です。この情報が利用できない場合、N/Aが出力されま
す。
トランスフォー
メーショングル
ープ
エラーが発生した入力グループまたは出力グループの名前
です。トランスフォーメーションにグループが含まれない
場合、デフォルトによりメinputモまたはメoutputモのいず
れかになります。
パーティション
インデックス
エラーが発生したトランスフォーメーションのパーティシ
ョン番号を指定します。
トランスフォー
メーション行ID
エラー行の行IDを指定します。
エラーシーケン
ス
各トランスフォーメーショングループの行単位のエラー数
を示すカウンタです。セッションに複数のパーティション
が存在する場合、Integration Serviceは、このカウンタを
パーティションごとに保持します。
たとえば、パーティション1のトランスフォーメーションで
3つのエラーが、パーティション2のトランスフォーメーシ
ョンで2つのエラーが生成された場合、パーティション1に
おけるERROR_SEQ_NUMの値は1、2、3に、パーティション2に
おけるERROR_SEQ_NUMの値は1および2になります。
158
エラータイムス
タンプ
エラー発生時のIntegration Serviceのタイムスタンプで
す。
エラーUTC時間
エラー発生時刻を協定世界時(グリニッジ標準時)で示し
ます。
エラーコード
エラーメッセージに対応するエラーコードです。
章 8: 行エラーのロギング
ログファイルカ
ラムヘッダ
説明
エラーメッセー
ジ
エラーメッセージです。
エラータイプ
発生したエラーのタイプです。Integration Serviceは、次
の値を使用します。
1 - Readerエラー
2 - Writerエラー
3 - トランスフォーメーションエラー
トランスフォー
メーションデー
タ
カラムインジケータなど、すべてのカラムデータを含む、
区切り文字付きの文字列です。各種カラムインジケータを
次に示します。
D - 有効
O - オーバーフロー
N - NULL
T - 切り詰め
B - バイナリ
U - データが利用不可
カラムデータとカラムインジケータの固定区切り文字はコ
ロン(:)になります。カラム間の区切り文字はパイプ
(|)になります。カラム区切り文字は、エラー処理設定で
上書きできます。
エラーファイルでは、すべてのカラムデータがテキスト文
字列に変換されます。バイナリデータの場合は、
Integration Serviceはカラムインジケータのみ使用しま
す。
ソース名
ソース修飾子の名前です。ソース修飾子以外のアクティブ
ソースまたは複数のパーティションを持つ非パススルーパ
ーティションポイントの下流で行エラーが発生した場合、
N/Aが記録されます。
ソース行ID
ソース修飾子が、読み込んだ各行に割り当てる値です。
Integration Serviceが行を識別できなかった場合、この値
は-1になります。
ソース行タイプ
行インジケータは、挿入、更新、またはリジェクトのいず
れのマークが行に付いていたかを示します。
0 - 挿入
1 - 更新
2 - 削除
3 - リジェクト
ソースデータ
カラムインジケータなど、すべてのカラムデータを含む、
区切り文字付きの文字列です。各種カラムインジケータを
次に示します。
D - 有効
O - オーバーフロー
エラーログファイルについて
159
ログファイルカ
ラムヘッダ
説明
N - NULL
T - 切り詰め
B - バイナリ
U - データが利用不可
カラムデータとカラムインジケータの固定区切り文字はコ
ロン(:)になります。カラム間の区切り文字はパイプ
(|)になります。カラム区切り文字は、エラー処理設定で
上書きできます。
Integration Serviceは、すべてのカラムデータをエラーテ
ーブルまたはエラーファイルのテキスト文字列に変換しま
す。バイナリデータの場合は、Integration Serviceはカラ
ムインジケータのみ使用します。
エラーログオプションの設定
セッションプロパティの[設定オブジェクト]タブで、セッションごとにエラーロギング
を設定します。エラーロギングを有効にするとき、リレーショナルデータベースまたはフ
ラットファイルにエラーログを作成するように指定できます。エラーロギングを有効にし
ない場合、エラーログは作成されません。
ヒント: Workflow Managerを使って、[設定オブジェクト]タブに適用する再利用可能な
属性のセットを作成します。
エラーロギングオプションを設定するには:
1.
[セッション]タスクをダブルクリックして、セッションのプロパティを開きます。
2.
[設定オブジェクト]タブを選択します。
3.
エラーログタイプを指定します。
以下の表に、[設定オブジェクト]タブのエラーロギング設定を示します。
エラーログオ
プション
説明
エラーログタ
イプ
作成するエラーログのタイプを指定します。[リレーシ
ョナルデータベース]、[フラットファイル]、または
[なし]を指定できます。デフォルトは[なし]です。
注: XMLファイルソースの行エラーをログに出力すること
はできません。XMLソースのエラーはセッションログで確
認できます。
エラーログDB
接続
160
章 8: 行エラーのロギング
リレーショナルログに対するデータベース接続を指定し
ます。リレーショナルデータベースによるロギングを有
効にする場合、このオプションは省略できません。
エラーログオ
プション
説明
エラーログテ
ーブル接頭辞
リレーショナルログに使用するテーブル名の接頭語を指
定します。この接頭語に対し11文字が付加されます。
OracleおよびSybaseでは、テーブル名に30文字の制限が
あります。テーブル名が30文字を超えている場合、セッ
ションが失敗します。
エラーログテーブル名の接頭語には、パラメータまたは
変数を使用できます。パラメータファイルで定義可能な
パラメータまたは変数タイプを使用します。
エラーログフ
ァイルディレ
クトリ
エラーを出力するディレクトリを指定します。デフォル
トでは、エラーログファイルディレクトリは
$PMBadFilesDir\\u306bなります。フラットファイルに
よるロギングを有効にする場合、このオプションは省略
できません。
エラーログフ
ァイル名
エラーログファイル名を指定します。エラーログファイ
ル名に使用できる文字数の上限は255文字です。デフォル
トでは、エラーログファイル名はPMError.logになりま
す。フラットファイルによるロギングを有効にする場
合、このオプションは省略できません。
ログ行データ
トランスフォーメーション行データをログに出力するか
どうかを指定します。エラーログを有効にすると、
Integration Serviceは、デフォルトで、トランスフォ
ーメーション行データをログを記録します。このプロパ
ティを無効にした場合、トランスフォーメーション行デ
ータのフィールドには、N/Aまたは-1が出力されます。
ログソース行
データ
ソース行データをログに出力しないように選択した場
合、あるいは、ソース行データが利用できない場合、カ
ラムのデータ型に応じてN/Aまたは-1が出力されます。
ソース行データを収集する必要がない場合は、
Integration Serviceのパフォーマンスを向上させるた
め、このオプションを無効にすることを検討してくださ
い。
データカラム
区切り文字
4.
文字列型のソース行データおよびトランスフォーメーシ
ョングループ行データに使用する区切り文字です。デフ
ォルトでは、Integration Serviceは区切り文字にパイ
プ(|)を使用します。該当する行データに対する区切り
文字と同じものがエラーロギングカラムに使用されてな
いか確認してください。もし同じ区切り文字が使用され
ていると、エラーログファイルの読み込みが困難な場合
があります。
[OK]をクリックします。
エラーログオプションの設定
161
第 9 章
ワークフローリカバリ
この章では、以下の項目について説明します。
¨ ワークフローリカバリの概要, 162 ページ
¨ 操作の状態, 163 ページ
¨ リカバリオプション, 167 ページ
¨ ワークフローのサスペンド, 168 ページ
¨ ワークフローリカバリの設定, 170 ページ
¨ タスクリカバリの設定, 171 ページ
¨ セッションの再開, 174 ページ
¨ 再現可能なデータに関する作業, 176 ページ
¨ ワークフローとタスクのリカバリの手順, 181 ページ
¨ セッションリカバリに関するルールおよびガイドライン, 183 ページ
ワークフローリカバリの概要
ワークフローのリカバリを行うことにより、ワークフローとワークフロータスクの処理を
中断した時点から継続することができます。Integration Serviceが操作のワークフロース
テートにアクセスできる場合は、ワークフローをリカバリできます。操作のワークフロー
ステートには、ワークフロー内のタスクのステータスとワークフロー変数の値が含まれま
す。Integration Serviceは、このステートを、ワークフローの設定に基づいてメモリまた
はディスクに格納します。
¨ リカバリの有効化。ワークフローのリカバリを有効にする場合、Integration Service
によって、ワークフローの操作の状態が共有場所に保存されます。 ワークフローが終
了、停止、または強制終了した場合に、そのワークフローをリカバリできます。ワーク
フローが実行中である必要はありません。
¨ サスペンド。エラー発生時にサスペンド状態にするようにワークフローを設定した場
合、Integration Serviceによって、ワークフローの操作の状態がメモリに格納されま
す。 タスクが失敗した場合、一時停止されたワークフローをリカバリできます。タス
クエラーを修正し、ワークフローをリカバリすることができます。
Integration Serviceはワークフロー内のタスクを、そのタスクのリカバリ戦略に基づいて
リカバリします。デフォルトでは、[セッション]タスクと[コマンド]タスクのリカバ
162
リ戦略は、タスクを失敗させて引き続きワークフローを実行するというものです。[セッ
ション]タスクと[コマンド]タスクのリカバリ戦略は設定することができます。他のす
べてのタスクの戦略は、タスクをリスタートするというものです。
高可用性オプションがある場合、ワークフローを実行しているサービスプロセスが異なる
ノードにフェイルオーバーすると、PowerCenterはそのワークフローを自動的にリカバリし
ます。タスクの終了時にそのタスクを自動的にリカバリするように、実行中のワークフロ
ーを設定することができます。データベース接続が中断した後も、PowerCenterはセッショ
ンとワークフローをリカバリします。
セーフモードで実行されている場合、Integration Serviceはリカバリ用に設定されている
ワークフローの操作の状態を格納します。ワークフローが失敗し、Integration Serviceが
バックアップノードにフェイルオーバーした場合、Integration Serviceでは自動的にワー
クフローをリカバリしません。Integration Serviceに対する適切な特権を持っている場合
は、ワークフローを手動でリカバリできます。
操作の状態
ワークフローまたはセッションをリカバリすると、Integration Serviceは操作のワークフ
ローステートまたはセッションステートをリストアして、リカバリ処理の開始場所を決定
します。Integration Serviceは、操作のワークフローステートを、ワークフローの設定に
基づいてメモリまたはディスクに格納します。Integration Serviceは、操作のセッション
ステートをセッションの設定方法に基づいて格納します。
ワークフローの操作の状態
ワークフローのリカバリまたは一時停止を有効にする場合、Integration Serviceは操作の
ワークフローステートを格納します。ワークフローが一時停止になると、操作のステート
はメモリに保存されます。
リカバリのワークフローを有効にする場合、Integration Serviceは、操作のワークフロー
ステートを共有場所$PMStorageDirに格納します。Integration Serviceは、停止、強制終
了、または終了したワークフローをリカバリするために、操作のワークフローステートを
リストアすることができます。リカバリを実行するとき、中断した時点からワークフロー
をリカバリするために操作のステートをリストアします。ワークフローが完了すると、
Integration Serviceは共有フォルダから操作のワークフローステートを削除します。
操作のワークフローステートには、次の情報が含まれます。
¨ アクティブなサービス要求
¨ 完了したタスクと実行中のタスクのステータス
¨ ワークフロー変数の値
コンカレントワークフローを実行すると、$PMStorageDir内のワークフローリカバリストレ
ージファイルに、インスタンス名またはワークフロー実行IDが付加されます。
ワークフローのリカバリを有効にする場合、Integration Serviceは、デフォルトでは操作
のセッションステートを格納しません。操作のセッションステートが保存されるように、
セッションのリカバリ戦略を設定することができます。
操作の状態
163
操作のセッション状態
最後のチェックポイントから再開するようにセッションのリカバリ戦略を設定すると、
Integration Serviceは、操作のセッションステートを共有場所$PMStorageDirに格納しま
す。Integration Serviceはまた、リレーショナルターゲットのリカバリ情報をターゲット
データベーステーブルに保存します。Integration Serviceは、リカバリを実行するとき
に、中断した時点からセッションをリカバリするために操作のステートをリストアしま
す。ターゲットリカバリデータを使用して、ターゲットテーブルのリカバリ方法を決定し
ます。
操作のワークフローステートを保存しない場合でも、操作のセッションステートを保存す
るようにセッションを設定できます。セッションをリカバリするかまたはセッションから
ワークフローをリカバリすることができます。
操作のセッションステートには、次の情報が含まれます。
¨ ソース。 ソースからの出力が確定的で再現可能でない場合、Integration Serviceでは
SQLクエリからの結果が、$PMStorageDir内の共有ストレージファイルに保存されます。
¨ トランスフォーメーション。 Integration Serviceでは、$PMStorageDirにチェックポ
イントが作成され、リカバリセッションを実行するときにパイプラインの処理の開始場
所が決定されます。
差分アグリゲータトランスフォーメーションを持つセッションを実行した場合、
Integration Serviceによりセッションの開始時に$PMCacheDirにアグリゲータキャッ
シュファイルのバックアップが作成されます。Integration Serviceでは、セッション
リカバリの実行開始時に、バックアップキャッシュが初期キャッシュへプロモートされ
ます。
¨ リレーショナルターゲットのリカバリデータ。 Integration Serviceではリカバリ情報
が、ターゲットデータベース内のリカバリテーブルに書き込まれ、セッションが中断し
た場合にターゲットにコミットされていた最後の行が決定されます。
ターゲットリカバリテーブル
Integration Serviceは、再開リカバリ戦略を持つセッションを実行する際に、ターゲット
データベースシステムのリカバリテーブルに書き込みます。 セッションをリカバリする場
合、Integration Serviceはリカバリテーブル内の情報を使用して、ターゲットテーブルへ
のデータのロードをどこから開始するかを決定します。
Integration Serviceでリカバリテーブルが作成されるようにする場合、ターゲットデータ
ベース接続に設定されたデータベースユーザー名に対してテーブル作成特権を与えます。
Integration Serviceでリカバリテーブルが作成されないように設定する場合は、リカバリ
テーブルを手動で作成します。
Integration Serviceは、以下のリカバリテーブルをターゲットデータベースに作成しま
す。
¨ PM_RECOVERY。セッション実行のためのターゲットロード情報が含まれています。
Integration Serviceは、各セッションが成功した後でこのテーブルから情報を削除
し、後続のセッションの開始時に情報を初期化します。
¨ PM_TGT_RUN_ID。Integration Serviceがデータベース上の各ターゲットの特定に使用
する情報が含まれています。 この情報は、セッション実行後も次の実行まで維持され
164
章 9: ワークフローリカバリ
ます。このテーブルを手動で作成する場合は、セッションが正常にリカバリされるよう
に、行を作成しLAST_TGT_RUN_IDに0以外を入力する必要があります。
¨ PM_REC_STATE。Integration Serviceがリアルタイムセッションのリカバリ時にターゲ
ットテーブルへのメッセージ書き込みの必要があるかどうかの判断に使用する情報が含
まれています。
セッションのリカバリ前にリカバリテーブルを編集または削除した場合、Integration
Serviceはそのセッションをリカバリできません。 リカバリを無効にした場合、
Integration Serviceではターゲットデータベースからリカバリテーブルが削除されませ
ん。 リカバリテーブルは手動で削除する必要があります。
以下の表に、PM_RECOVERYの形式を示します。
カラム名
データ型
REP_GID
VARCHAR(240)
WFLOW_ID
INTEGER
WFLOW_RUN_ID
INTEGER
WFLOW_RUN_INS_NAME
VARCHAR(240)
SUBJ_ID
INTEGER
TASK_INST_ID
INTEGER
TGT_INST_ID
INTEGER
PARTITION_ID
INTEGER
TGT_RUN_ID
INTEGER
RECOVERY_VER
INTEGER
CHECK_POINT
INTEGER
ROW_COUNT
INTEGER
以下の表に、PM_TGT_RUN_IDの形式を示します。
カラム名
データ型
LAST_TGT_RUN_ID
INTEGER
操作の状態
165
以下の表に、PM_REC_STATEの形式を示します。
カラム名
データ型
OWNER_TYPE_ID
INTEGER
REP_GID
VARCHAR(240)
FOLDER_ID
INTEGER
WFLOW_ID
INTEGER
WFLOW_RUN_INS_NAME
VARCHAR(240)
WLET_ID
INTEGER
TASK_INST_ID
INTEGER
WID_INST_ID
INTEGER
GROUP_ID
INTEGER
PART_ID
INTEGER
PLUGIN_ID
INTEGER
APPL_ID
VARCHAR(38)
SEQ_NUM
INTEGER
VERSION
INTEGER
CHKP_NUM
INTEGER
STATE_DATA
VARCHAR(1024)
Oracleでは、INTEGERデータタイプの代わりに、NUMBERデータタイプが使用されます。
注: コンカレントリカバリセッションが同じターゲットデータベースに書き込む場合、
Integration ServiceでPM_RECOVERYでデッドロックが検出されることがあります。 デッ
ドロック時にPM_RECOVERYへの書き込みを再試行するために、[デッドロック時のセッショ
ンのリトライ]オプションを設定し、セッションのデッドロックを再試行できます。
関連項目:
¨ 「PM_REC_STATEテーブル」
(122ページの)
ターゲットリカバリテーブルの作成
ターゲットリカバリテーブルは、手動で作成することができます。Informatica提供のSQL
スクリプトは、次のディレクトリにあります。
<PowerCenter installation_dir>\server\bin\RecoverySQL
166
章 9: ワークフローリカバリ
次のいずれかのスクリプトを実行して、ターゲットデータベースにリカバリテーブルを作
成します。
スクリプト
データベース
create_schema_db2.sql
IBM DB2
create_schema_inf.sql
Informix
create_schema_ora.sql
Oracle
create_schema_sql.sql
Microsoft SQL Server
create_schema_syb.sql
Sybase
create_schema_ter.sql
Teradata
リカバリオプション
リカバリを実行するには、マッピング、ワークフロータスク、およびワークフローをリカ
バリ用に設定する必要があります。
以下の表に、リカバリ用に設定できるオプションを示します。
オプション
場所
説明
Suspend
Workflow on
Error
ワークフ
ロー
ワークフロー内のタスクが失敗したときにワー
クフローを一時停止します。失敗したタスクを
修正し、サスペンド状態のワークフローをリカ
バリすることができます。
サスペンド時の
メール
ワークフ
ロー
ワークフローがサスペンド状態である際に、メ
ールを送信します。
Enable HA
Recovery
ワークフ
ロー
操作のワークフローステートを共有場所に保存
します。ワークフローのリカバリを有効にする
ための高可用性は必要ありません。
終了したタスク
の自動リカバリ
ワークフ
ロー
ワークフロー実行中に、終了した[セッショ
ン]タスクと[コマンド]タスクをリカバリし
ます。高可用性オプションが必要です。
自動リカバリの
試行最大数
ワークフ
ロー
Integration Serviceがセッションまたはコマ
ンドタスクのリカバリを試みる回数。
リカバリ戦略
セッショ
ン、
[セッション]タスクまたは[コマンド]タス
クのリカバリ戦略。Integration Serviceによ
って、ワークフローリカバリ中にセッションま
たはコマンドタスクがリカバリされる方法と、
コマンド
リカバリオプション
167
オプション
場所
説明
セッションリカバリ中にセッションがリカバリ
される方法を決定します。
Fail Task If
Any Command
Fails
コマンド
タスクのいずれかのコマンドが失敗した場合に
[コマンド]タスクが失敗できるようにしま
す。このオプションを設定しない場合、コマン
ドが失敗してもタスクは実行を継続します。こ
のオプションを[エラー時のワークフローのサ
スペンド]とともに使用して、タスク内のコマ
ンドが失敗した場合にワークフローをサスペン
ド状態にすることができます。
出力が確定的
トランス
フォーメ
ーション
トランスフォーメーションが常に同じ入力デー
タから同じデータのセットを生成することを示
します。Integration Serviceが最後のチェッ
クポイントからセッションを再開できるのは、
出力が再現可能で決定性のある場合です。リレ
ーショナルソース修飾子に対してこのオプショ
ンを[出力が再現可能]オプションとともに有
効にした場合、Integration ServiceではSQL
結果は共有ストレージに保存されません。
出力が再現可能
トランス
フォーメ
ーション
トランスフォーメーションが行を生成する順序
がセッション間で同じかどうかを示します。出
力が再現可能で確定的である場合、
Integration Serviceによってセッションを最
後のチェックポイントから再開できます。リレ
ーショナルソース修飾子に対してこのオプショ
ンを[出力が確定的]オプションとともに有効
にした場合、Integration ServiceではSQL結
果は共有ストレージに保存されません。
警告: : トランスフォーメーションに再現性および決定性を設定している場合、データの
再現性を保証するのはユーザーの責任です。リカバリしようとしているセッションのトラ
ンスフォーメーションから再現性および決定性を持つデータが生成されない場合、リカバ
リプロセスによりデータが破損することがあります。
ワークフローのサスペンド
ワークフロー内のタスクが失敗した場合は、ワークフローをサスペンド状態にしてエラー
を修復し、ワークフローをリカバリできます。ワークフロープロパティの[タスクのエラ
ー発生時にサスペンドする]オプションが有効になっている場合、Integration Serviceで
は、そのワークフローがサスペンド状態になります。 必要に応じて、Integration
Serviceによりワークフローがサスペンド状態になった場合に電子メールが送信されるよう
に、サスペンド時のメールを設定できます。
168
章 9: ワークフローリカバリ
エラー発生時にサスペンド状態にするようにワークフローを設定した場合、Integration
Serviceにより、次のいずれかのタスクが失敗した際にワークフローがサスペンド状態にな
ります。
¨ セッション
¨ コマンド
¨ ワークレット
¨ 電子メール
タスクがワークフロー内で失敗した場合、Integration Serviceはそのパスにあるタスクの
実行を停止します。 Integration Serviceでは、失敗したタスクの出力リンクが評価され
ません。 ワークフロー内でほかに実行中のタスクがない場合、Workflow Monitorはワーク
フローのステータスをメサスペンド状態モと表示します。
高可用性オプションが導入済みの場合、自動タスクリカバリの設定に応じてワークフロー
が一時停止されます。エラー発生時にサスペンド状態にするようにワークフローが設定さ
れていて、自動タスクリカバリが有効化されていない場合、タスクの失敗後にワークフロ
ーが一時停止されます。自動タスクリカバリが有効化されている場合は、まず指定された
リカバリ限度までタスクのリスタートが試行された後、失敗したタスクをリスタートでき
ないときはワークフローが一時停止されます。
タスクが失敗したときにワークフロー内で1つ以上のタスクがまだ実行中である場合、
Integration Serviceは失敗したタスクの実行を停止して、他のパスにあるタスクの実行を
続行します。 Workflow Monitorはワークフローのステータスを「サスペンド中」と表示しま
す。
ワークフローの状態が「サスペンド中」または「サスペンド状態」である場合、ターゲッ
トデータベースエラーなどのエラーを修復した後でWorkflow Monitorからワークフローを
リカバリできます。ワークフローをリカバリした場合、Integration Serviceでは失敗した
タスクがリスタートされ、ワークフロー内の残りのタスクの評価が続行されます。 既に正
常に完了しているタスクはIntegration Serviceによって実行されません。
注: 一時停止したワークフロー、または一時停止したワークフロー内のタスクを編集する
と、リポジトリで不整合が発生する可能性があります。
ワークフローを一時停止するには:
1.
Workflow Designerで、ワークフローを開きます。
2.
[ワークフロー]-[編集]をクリックします。
3.
[全般]タブで、[タスクのエラー発生時にサスペンドする]を有効にします。
4.
[OK]をクリックします。
サスペンド時のメールの設定
ワークフローが一時停止した場合、Integration Serviceによってメールが送信されるよう
にワークフローを設定することができます。 サスペンド時のメール用に、既存の再利用可
能なメールタスクを選択します。タスクが失敗した場合、Integration Serviceによってワ
ークフローのサスペンドが開始され、サスペンド時のメールが送信されます。
Integration Serviceでワークフローのサスペンドをしているときに別のタスクが失敗した
場合、サスペンド時のメールを再度受け取ることはありません。
ワークフローを再開した後で別のタスクが失敗した場合は、Integration Serviceによって
サスペンド時のメールが送信されます。
ワークフローのサスペンド
169
ワークフローリカバリの設定
ワークフローをリカバリ用に設定するには、リカバリのワークフローを有効にするかまた
はタスクエラー発生時におけるワークフローの一時停止を設定する必要があります。ワー
クフローをリカバリ用に設定した場合は、そのワークフローが停止、強制終了、終了、ま
たは一時停止した場合にこれをリカバリすることができます。
以下の表に、リカバリ可能な各ワークフローステータスを示します。
ステー
タス
説明
強制終
了
Workflow Monitorまたはpmcmdを使用して、ワークフローを強制終了
します。また、Administratorツールでサービスプロセスを無効にす
るときに、実行中のすべてのワークフローを強制終了することを選択
することもできます。 強制終了されたワークフローは、そのワーク
フローのリカバリを有効にした場合、リカバリすることができます。
強制終了されたワークフローは、Workflow Monitorまたはpmcmdを使
用してリカバリすることができます。
停止
Workflow Monitorまたはpmcmdを使用してワークフローを停止しま
す。また、Administratorツールでサービスまたはサービスプロセス
を無効にするときに、実行中のすべてのワークフローを停止すること
を選択することもできます。 停止したワークフローは、そのワーク
フローのリカバリを有効にした場合、リカバリすることができます。
停止したワークフローは、Workflow Monitorまたはpmcmdを使用して
リカバリすることができます。
サスペ
ンド状
態
タスクは失敗します。ワークフローは、タスクエラー発生時に一時停
止するように設定されます。複数のタスクが実行中の場合、
Integration Serviceは、実行中のすべてのタスクが成功または失敗
したときにワークフローを一時停止にします。タスクの失敗を引き起
こしたエラーを修正してから、リカバリを実行することができます。
デフォルトでは、ワークフローはタスクが失敗した後も継続的に実行
されます。タスクが失敗した場合にワークフローが一時停止するよう
にするには、タスクエラー発生時に一時停止するようにワークフロー
を設定します。
ターミ
ネート
済み
ワークフローを実行しているサービスプロセスが予期せずシャットダ
ウンします。そのワークフローを実行しているすべてのノードでタス
クが終了します。ワークフロー内のタスクが終了し、高可用性オプシ
ョンがない場合は、ワークフローが終了することがあります。リカバ
リのワークフローを有効にした場合は、終了したワークフローをリカ
バリすることができます。高可用性オプションがある場合、サービス
プロセスは別のノードにフェイルオーバーし、ワークフローリカバリ
が開始されます。
注: 失敗したワークフローとは、失敗によって完了したワークフローです。 失
敗したワークフローはリカバリできません。
170
章 9: ワークフローリカバリ
停止、強制終了、および終了されたワークフローのリ
カバリ
ワークフローのリカバリを有効にする場合、Integration Serviceは、ワークフロー実行中
に操作のワークフローステートをファイルに保存します。停止、終了、または強制終了し
たワークフローをリカバリすることができます。ワークフローの[プロパティ]タブで、
リカバリを有効にしてください。
一時停止されたワークフローのリカバリ
ワークフロー内のタスクが失敗した場合にワークフローが一時停止するように設定できま
す。デフォルトでは、ワークフローはタスクが失敗した場合も継続的に実行されます。タ
スク失敗時にワークフローを一時停止し、失敗したタスクを修正してから、そのワークフ
ローをリカバリすることができます。ワークフローを一時停止すると、操作のワークフロ
ーステートはメモリに残されます。タスクの失敗を引き起こしたエラーを修正し、中断し
た時点からワークフローをリカバリすることができます。 タスクが再び失敗した場合、
Integration Serviceはワークフローを再びサスペンド状態にします。一時停止されたワー
クフローは、リカバリすることはできてもリスタートすることはできません。ワークフロ
ープロパティの[全般]タブで、ワークフローを一時停止するように設定してください。
タスクが一時停止したときにメールを発信するようにワークフローを設定することもでき
ます。
タスクリカバリの設定
ワークフローをリカバリするときには、Integration Serviceは、タスクごとのリカバリ戦
略に基づいてタスクをリカバリします。タスクによっては、リカバリ戦略が失敗タスクに
なっておりワークフローを継続、最後のチェックポイントから再開、またはタスクをリス
タートする場合があります。
ワークフローリカバリを有効にする場合、強制終了または停止するタスクをリカバリする
ことができます。ネットワークまたはサービスプロセスの失敗が原因で終了したタスク
を、リカバリすることができます。エラー発生時にサスペンド状態にするようにワークフ
ローを設定した場合、そのワークフローをリカバリするときに、失敗したタスクをリカバ
リすることができます。
以下の表に、リカバリ可能な各タスクステータスを示します。
ステー
タス
説明
強制終
了
Workflow Monitorまたはpmcmdを使用して、ワークフローまたはタス
クを強制終了します。また、Administratorツールでサービスまたは
サービスプロセスを無効にする場合に、実行中のすべてのワークフロ
ーの強制終了を選択することもできます。 マッピング条件に基づい
て強制終了するように、セッションを設定することもできます。
タスクリカバリの設定
171
ステー
タス
説明
Workflow Monitorのワークフローをリカバリしてタスクをリカバリす
るか、pmcmdを使用してワークフローをリカバリすることができま
す。
停止
Workflow Monitorまたはpmcmdを使用して、ワークフローまたはタス
クを停止します。また、Administratorツールでサービスまたはサー
ビスプロセスを無効にするときに、実行中のすべてのワークフローを
停止することを選択することもできます。
Workflow Monitorのワークフローをリカバリしてタスクをリカバリす
るか、pmcmdを使用してワークフローをリカバリすることができま
す。
失敗
エラーが原因でIntegration Serviceはタスクの実行に失敗しまし
た。タスク失敗時に一時停止になるようにワークフローが設定されて
いる場合、ワークフローリカバリを使用して、失敗したタスクをリカ
バリできます。ワークフローが一時停止になっていない場合は、単に
セッションをリカバリするかまたはワークフローをセッションからリ
カバリすることにより、失敗したタスクをリカバリできます。
Workflow Monitorでエラーを修正してからワークフローをリカバリす
るか、またはpmcmdを使用してワークフローをリカバリすることがで
きます。
ターミ
ネート
済み
Integration Serviceは予期せず停止するか、またはマスタサービス
プロセスへのネットワーク接続を喪失します。Workflow Monitorでワ
ークフローをリカバリするか、またはIntegration Serviceのリスタ
ート後にpmcmdを使用してワークフローをリカバリすることができま
す。
タスクのリカバリ戦略
ワークフロー内の各タスクにはリカバリ戦略があります。Integration Serviceは、ワーク
フローをリカバリするときに、リカバリ戦略に基づいてタスクをリカバリします。
¨ タスクのリスタート。 Integration Serviceは、ワークフローをリカバリするときに、
リスタートの戦略を使用して設定されているリカバリ可能な各タスクをリスタートしま
す。リスタートリカバリ戦略を使用して[セッション]タスクと[コマンド]タスクを
設定できます。他のすべてのタスクは、リスタートリカバリ戦略をデフォルトで持って
います。
¨ タスクを失敗してワークフローを続行します。Integration Serviceでは、ワークフロ
ーがリカバリされる際に、タスクはリカバリされません。 タスクのステータスは失敗
となりますが、Integration Serviceは引き続きワークフローを実行します。
ワークフローを完了したいがタスクをリカバリしたくない場合は、失敗リカバリ戦略を
設定します。[セッション]タスクと[コマンド]タスクを失敗タスクで設定し、ワー
クフローのリカバリ戦略を継続することができます。
¨ 最後のチェックポイントから再開します。Integration Serviceでは、停止、強制終
了、または終了したセッションが最後のチェックポイントからリカバリされます。 再
開戦略を使用して、セッションタスクを設定できます。
172
章 9: ワークフローリカバリ
以下の表に、タスクタイプのリカバリ戦略を示します。
タスク
タイプ
リカバリ戦略
コメント
Assignm
ent
タスクを再開します。
-
Command
タスクを再開します。
デフォルトは[タスクを失敗してワーク
フローを続行]です。
タスクを失敗してワーク
フローを続行します。
コント
ロル
タスクを再開します。
-
ディシ
ジョン
タスクを再開します。
-
電子メ
ール
タスクを再開します。
Integration ServiceはE-Mailを重複し
て送信することがあります。
EventRaise
タスクを再開します。
-
EventWait
タスクを再開します。
-
Session
最後のチェックポイント
から再開します。
デフォルトは[タスクを失敗してワーク
フローを続行]です。
タスクを再開します。
タスクを失敗してワーク
フローを続行します。
Timer
タスクを再開します。
タスクまたはワークフローの開始時点か
ら起算した時間差指定を使用する場合
は、元の値から経過時間を差し引いてタ
イマを設定します。
ワーク
レット
なし
Integration Serviceはワークレットを
リカバリしません。ワークレットのセッ
ションは、Workflow Monitorでワークレ
ットを展開し、[タスクのリカバリ]を
選択してリカバリできます。
[コマンド]タスク戦略
[コマンド]タスクを設定する場合、リカバリ戦略をリスタートまたは失敗に選択できま
す。
¨ タスクを失敗してワークフローを続行します。コマンドタスクのエラーで、ワークフロ
ーがサスペンド状態にする場合は、失敗戦略を使用してタスクを設定する必要がありま
す。 コマンドタスクに複数のコマンドがある際に、失敗戦略を設定する場合、いずれ
のコマンドが失敗した場合でもタスクが失敗するように設定する必要があります。
タスクリカバリの設定
173
¨ タスクをリスタートします。Integration Serviceでは、ワークフローがリカバリされ
る際に、リスタートの戦略を使用して設定されているコマンドタスクがリスタートされ
ます。
コマンドタスクのプロパティページでリカバリ戦略を設定します。
セッションタスク戦略
セッションをリカバリ用に設定すると、ワークフローをリカバリするときにそのセッショ
ンをリカバリできます。または、残りのワークフローを実行することなく、セッションを
リカバリすることができます。
セッションを設定するとき、失敗、リスタート、または再開のリカバリ戦略を選択できま
す。
¨ 最後のチェックポイントから再開します。Integration Serviceによって、操作のセッ
ション状態が保存されターゲットリカバリテーブルが保持されます。 セッションが強
制終了、停止、または終了した場合、Integration Serviceによって保存されたリカバ
リ情報が使用され、中断ポイントからセッションが再開されます。
セッションによってマッピング変数が使用されている場合は、そのセッションに再開戦
略を設定することはできません。
¨ タスクのリスタート。 Integration Serviceは、ワークフローをリカバリすると、セッ
ションを再実行します。[タスクのリスタート]を使用してリカバリする場合は、ター
ゲットに部分的にロードされたデータを削除するかまたは重複行をスキップするように
マッピングを設計する必要がある場合もあります。
¨ タスクを失敗してワークフローを続行します。Integration Serviceによってワークフ
ローがリカバリされる際、セッションはリカバリされません。 セッションのステータ
スは失敗となりますが、Integration Serviceは引き続きワークフローを実行します。
[Session]タスクの[プロパティ]ページでリカバリ戦略を設定してください。
終了したタスクの自動的なリカバリ
高可用性オプションがある場合、終了したタスクの自動リカバリを設定できます。自動タ
スクリカバリを有効にした場合、Integration Serviceはワークフローがまだ実行中の場
合、終了した[セッション]タスクと[コマンド]タスクをユーザー介入なしにリカバリ
します。タスクのリカバリをIntegration Serviceが試みる回数を設定します。ワークフロ
ープロパティで自動タスクリカバリを有効にします。
セッションの再開
最後のチェックポイントから再開するようにセッションリカバリを設定した場合、
Integration Serviceによって、セッションリカバリの処理を開始する場所を決定するため
に$PMStorageDirにチェックポイントが作成されます。 Integration Serviceは、セッシ
ョンを再開するときに、各ソース、ターゲット、およびトランスフォーメーションの状態
など、操作のセッションステートをリストアします。Integration Serviceは、処理に必要
なソースデータの量を確認します。
174
章 9: ワークフローリカバリ
Integration Serviceがセッションを再開するときには、リカバリセッションが元のセッシ
ョンと同じデータを生成する必要があります。最後のチェックポイントから再開するよう
にリカバリを設定した場合、セッションは無効ですが、セッションは再現可能なデータを
生成できません。
Integration Serviceは、FTPソースなどのフラットファイルソースをリカバリできます。
フラットファイルとFTPターゲットを切り詰めるかまたは追加することができます。
最後のチェックポイントからセッションをリカバリすると、Integration Serviceは操作の
セッションステートをリストアし、実行可能なリカバリのタイプを確認します。
¨ 差分。 Integration Serviceは、中断した時点からデータの処理を開始します。中断前
に処理した行の読み込みまたは変換を行いません。デフォルトでは、Integration
Serviceは差分リカバリを実行しようとします。
¨ フル。 差分リカバリを実行できない場合、Integration Serviceはすべてのソース行を
再び読み込み、すべてのトランスフォーメーションロジックを実行します。
Integration Serviceは、最後のコミットポイントでターゲットへの書き込みを開始し
ます。いずれかのセッションコンポーネントでフルリカバリが必要な場合、
Integration Serviceはそのセッションについてフルリカバリを実行します。
以下の表に、Integration Serviceによって、どのような時にセッションの設定に応じて差
分リカバリまたはフルリカバリが実行されるのかを示します。
コンポーネ
ント
差分リカバリ
フルリカバリ
コミットタ
イプ
セッションはソースベースのコ
ミットを使用します。マッピン
グは、コミットを生成するトラ
ンスフォーメーションを含みま
せん。
セッションは、ターゲット
ベースのコミットまたはユ
ーザー定義のコミットを使
用します。
トランスフ
ォーメーシ
ョン範囲
トランスフォーメーションは、
トランザクションをプロパゲー
トします。トランスフォーメー
ションスコープは、[トランザ
クション]または[行]である
ことが必要です。
少なくとも1個のトランスフ
ォーメーションが[すべ
て]トランスフォーメーシ
ョン範囲で設定されていま
す。
ファイルソ
ース
ファイルソースは差分読み込み
をサポートします。
なし
FTPソース
差分読み込みを可能にするに
は、FTPサーバーがシーク操作
をサポートしている必要があり
ます。
FTPサーバーはシーク操作を
サポートしません。
リレーショ
ナルソース
出力が再現可能で決定性がある
場合、リレーショナルソースは
差分読み込みをサポートしま
す。出力が再現可能で決定性が
ない場合、Integration
ServiceはSQL結果をストレージ
ファイルにステージングするこ
なし
セッションの再開
175
コンポーネ
ント
差分リカバリ
フルリカバリ
とにより、リレーショナルソー
スの差分読み込みをサポートし
ます。
VSAMソース
なし
Integration Serviceによ
り、フルリカバリが実行さ
れます。
XMLソース
なし
Integration Serviceによ
り、フルリカバリが実行さ
れます。
XMLジェネレ
ータトラン
スフォーメ
ーション
XMLジェネレータトランスフォ
ーメーションのトランスフォー
メーションスコープは[トラン
ザクション]に設定されている
必要があります。
なし
XMLターゲッ
ト
XMLターゲットは、コミットで
新しいXMLドキュメントを生成
するように設定されている必要
があります。
なし
再現可能なデータに関する作業
最後のチェックポイントから再開するようにリカバリを設定する場合、リカバリセッショ
ンは元のセッションと同じ順序で同じデータを生成できる必要があります。
セッションを検査すると、Workflow Managerによって、再現性および決定性を持つデータ
を生成するようにトランスフォーメーションが設定されていることが検査されます。最後
のチェックポイントから再開するようにリカバリを設定していても、再現性および決定性
を持つデータ用にトランスフォーメーションが設定されていない場合、セッションは無効
です。
すべてのターゲットが再現可能なデータを以下のマッピングオブジェクトから受け取る場
合、セッションデータは再現可能です。
¨ ソース。 ソースからの出力データは、元の実行とリカバリ実行の間で再現可能です。
¨ トランスフォーメーション。 各トランスフォーメーションからターゲットへの出力デ
ータは再現可能です。
ソースの再現性
各ソースが一連の同一のデータを生成する場合で、出力の順序がセッション間で再現可能
な場合は、最後のチェックポイントからセッションを再開できます。ソースデータは、セ
ッション内のソースのタイプに基づいて再現可能です。
176
章 9: ワークフローリカバリ
リレーショナルソース
リレーショナルソースは、ワークフロー間で異なるデータまたは順序の異なるデータを生
成する場合があります。最後のチェックポイントから再開するようにリカバリを設定する
と、Integration Serviceは、リカバリ用の出力順序を保証するためにSQL結果をキャッシ
ュファイルに格納します。
SQL結果がワークフロー間で同じになると分かっている場合、データが再現可能で決定性が
あることを示すようにソース修飾子を設定することができます。リレーショナルソース出
力に決定性があり、出力が常に再現可能な場合、Integration ServiceはSQL結果をキャッ
シュファイルに格納しません。リレーショナル出力が再現可能でない場合、マッピング内
のトランスフォーメーションが順番付けられたデータを常に生成する場合は、Integration
Serviceはキャッシュファイルの作成をスキップできます。
SDKソース
SDKソースが再現可能なデータを生成する場合、SDKソース修飾子トランスフォーメーショ
ンで[出力が確定的]と[出力が再現可能]を有効にすることができます。
フラットファイルソース
フラットファイルはセッション実行とリカバリ実行の間で変わりません。ソースファイル
を変更した後にセッションをリカバリした場合は、予期できない結果がリカバリセッショ
ンで発生する可能性があります。
トランスフォーメーションの再現性
セッション内のトランスフォーメーションがセッション実行とリカバリ実行の間で同じデ
ータを生成する場合、最後のチェックポイントから再開するようにセッションを設定でき
ます。すべてのトランスフォーメーションには、再現可能なデータを作成できるかどうか
を決定するプロパティがあります。出力に決定性があり出力が再現可能な場合、トランス
フォーメーションはセッション実行とリカバリ実行の間で同じデータを作成できます。
警告: : トランスフォーメーションに再現性および決定性を設定している場合、データの
再現性を保証するのはユーザーの責任です。リカバリしようとしているセッションのトラ
ンスフォーメーションから再現性および決定性を持つデータが生成されない場合、リカバ
リプロセスによりデータが破損することがあります。
出力が確定的
常に同じ出力データが同じ入力データから作成された場合に、トランスフォーメーション
は決定性出力を作成します。
出力が再現可能
トランスフォーメーションは、セッション間で同じ順序で行を生成する場合、再現可能な
データを作成します。トランスフォーメーションはトランスフォーメーションのタイプ、
トランスフォーメーションの設定、またはマッピングの設定に基づいて、再現可能なデー
タを作成します。
再現可能なデータに関する作業
177
トランスフォーメーションは、次の状況で再現可能なデータを作成します。
¨ 常時。入力データの順序がセッションの実行間で矛盾している場合でも、出力データの
順序はセッションの実行間で一貫しています。
¨ 入力順を基準。トランスフォメーションによって、すべての入力グループの入力データ
の順序がセッション実行間で一貫している場合は、セッション実行間で再現可能なデー
タが作成されます。 入力グループからの入力データが順序付けられていない場合、出
力は順序付けられません。
トランスフォーメーションが入力順序に依存して再現可能なデータを作成する場合、セ
ッションの検査中にWorkflow Managerはマッピングを検査して、トランスフォーメーシ
ョンが再現可能なデータを作成できるかどうか確認します。例えば、式トランスフォー
メーションによって、再現可能なデータを受け取った場合にだけ再現可能データが生成
されます。
¨ 不可能。出力データの順序はセッションの実行間で矛盾します。
リカバリ用のマッピングの設定
セッション内のトランスフォーメーションがセッション実行とリカバリ実行の間で同じデ
ータを作成できるように、マッピングを設定できます。マッピングに再現可能なデータを
作成しないトランスフォーメーションが含まれている場合は、その直後に再現可能なデー
タを常に作成するトランスフォーメーションを追加できます。
例えば、再現可能なデータを作成しないトランスフォーメーションを、入力順序に依存し
て再現可能なデータを作成するトランスフォーメーションに直接接続します。データが再
現可能でなければ、最後のチェックポイントから再開するようにリカバリを設定すること
はできません。セッションをリカバリ可能にするために、再現可能なデータを作成しない
トランスフォーメーションの後に、再現可能なデータを常に作成するトランスフォーメー
ションを追加できます。
次の図に、最後のチェックポイントからの再開でリカバリできないマッピングを示しま
す。
上図のマッピングは、再現可能なデータを作成するソース修飾子トランスフォーメーショ
ンを2つ含んでいます。再現可能なデータを作成しない共有体トランスフォーメーションと
カスタムトランスフォーメーションがあります。ルックアップトランスフォーメーション
は、再現可能なデータを受け取った場合、再現可能データを作成します。そのため、ター
ゲットは再現可能なデータを受け取れないので、リカバリを再開するようにセッションを
設定することはできません。
リカバリを再開できるようにマッピングを一部変更することができます。出力行が重複し
ないように設定されたソータトランスフォーメーションを、再現可能なデータを出力しな
いトランスフォーメーションの直後に追加します。カスタムトランスフォーメーションの
後にソータトランスフォーメーションを追加します。
178
章 9: ワークフローリカバリ
次の図に、ソータトランスフォーメーションをカスタムトランスフォーメーションに接続
したマッピングを示します。
ルックアップトランスフォーメーションは、再現可能なデータをソータトランスフォーメ
ーションから受け取っているため、再現可能データを作成します。
以下の表に、いつ再現可能なデータをトランスフォーメーションが作成するかを示しま
す。
トランスフォーメーシ
ョン
再現可能なデータ
アグリゲータ
常に作成する。
アプリケーションソー
ス修飾子
入力順に基づく。
カスタム
入力順に基づく。トランスフォーメーションプロシー
ジャの動作に従って、プロパティを設定します。
データマスキング
入力順に基づく。トランスフォーメーションプロシー
ジャの動作に従って、プロパティを設定します。再現
可能なデータを生成するには、ポートごとに再現可能
なマスキングまたはキーマスキングを設定します。
Expression
入力順に基づく。
エクスターナルプロシ
ージャ
入力順に基づく。トランスフォーメーションプロシー
ジャの動作に従って、プロパティを設定します。
Filter
入力順に基づく。
HTTP
入力順に基づく。トランスフォーメーションプロシー
ジャの動作に従って、プロパティを設定します。
ジョイナ
入力順に基づく。
Java
入力順に基づく。トランスフォーメーションプロシー
ジャの動作に従って、プロパティを設定します。
Lookup、動的
常に作成する。ルックアップソースは、セッション内
のターゲットと同じである必要があります。
Lookup、静的
入力順に基づく。
再現可能なデータに関する作業
179
180
トランスフォーメーシ
ョン
再現可能なデータ
MQソース修飾子
常に作成する。
Normalizer、パイプラ
イン
入力順に基づく。
Normalizer、VSAM
常に作成する。Normalizerは、一意なプライマリキー
の形式でソースデータを生成します。セッションを再
開すると、そのセッションは、正常に完了した場合と
は異なるキー値を生成する場合があります。
ランク
常に作成する。
ルータ
入力順に基づく。
シーケンスジェネレー
タ
常に作成する。Integration Serviceは、現在の値を
リポジトリに格納します。
Sorter(出力行が重複
しない設定)
常に作成する。
Sorter(出力行が重複
しない設定なし)
入力順に基づく。
Source Qualifier、フ
ラットファイル
常に作成する。
ソース修飾子、リレー
ショナル
入力順に基づく。トランスフォーメーションをソース
データに従って設定します。データが再現可能でない
場合、Integration Serviceはそのデータをステージ
ングします。
SQLトランスフォーメ
ーション
入力順に基づく。トランスフォーメーションをソース
データに従って設定します。
ストアドプロシージャ
入力順に基づく。トランスフォーメーションプロシー
ジャの動作に従って、プロパティを設定します。
トランザクションコン
トロール
入力順に基づく。
Union
作成しない。
Unstructured Data
入力順に基づく。トランスフォーメーションプロシー
ジャの動作に従って、プロパティを設定します。
アップデートストラテ
ジ
入力順に基づく。
XMLジェネレータ
常に作成する。
章 9: ワークフローリカバリ
トランスフォーメーシ
ョン
再現可能なデータ
XMLパーサ
入力順に基づく。トランスフォーメーションをソース
データに従って設定します。
XMLソース修飾子
常に作成する。
以下のトランスフォーメーションに[出力が再現可能]および[出力が確定的]プロパテ
ィを設定することも、あるいはこれらのトランスフォーメーションの直後に再現可能なデ
ータを生成するトランスフォーメーションを追加することもできます。
¨ アプリケーションソース修飾子
¨ カスタム
¨ エクスターナルプロシージャ
¨ ソース修飾子、リレーショナル
¨ ストアドプロシージャ
ワークフローとタスクのリカバリの手順
ワークフローをリカバリ用に設定すると、そのワークフローをリカバリすることができま
す。セッションのリカバリ戦略を設定すると、セッションをリカバリすることができま
す。セッションのリカバリ戦略を設定する場合、セッションをリカバリするためにワーク
フローのリカバリを有効にする必要はありません。
次のいずれかの方法を使ってワークフローまたはタスクをリカバリできます。
¨ ワークフローのリカバリ。 中断ポイントからワークフローの処理を続行します。
¨ セッションのリカバリ。セッションをリカバリしますが、ワークフローの残りはリカバ
リしません。
¨ セッションからのワークフローのリカバリ。 セッションをリカバリし、ワークフロー
の処理を続行します。
Integration Serviceでオペレーティングシステムのプロファイルが使用されている場合、
Integration Serviceでセッションまたはワークフローの実行に使用されるものと同じオペ
レーティングシステムのプロファイルを使用して、セッションまたはワークフローをリカ
バリします。
ワークフローまたはタスクをリカバリなしでリスタートする場合、コールドスタートモー
ドを使用できます。リアルタイムセッションのリカバリ動作は、リアルタイムソースに応
じて異なります。
ワークフローとタスクのリカバリの手順
181
ワークフローのリカバリ
ワークフローをリカバリすると、Integration Serviceは操作のワークフローステートをリ
ストアし、失敗したところから処理を続行します。Integration Serviceは、失敗したタス
クをリカバリするためにタスクのリカバリ戦略を使用します。
タスクが失敗したときにワークフローが一時停止するように設定することにより、または
ワークフロープロパティでリカバリを有効にすることにより、ワークフローをリカバリ用
に設定します。
Workflow Manager、Workflow Monitor、または pmcmdを使用してワークフローをリカバリ
することができます。ワークフローをリカバリする場合、Integration Serviceによって既
存のセッションログにログイベントが追加されます。
Workflow Monitorを使用したワークフローのリカバリ
Workflow Monitorを使用してワークフローをリカバリするには:
1.
Workflow Monitorでワークフローを選択します。
2.
ワークフローを右クリックし、[リカバリ]を選択します。
Integration Serviceによって失敗したタスクがリカバリされ、ワークフローの残り
の部分が実行されます。
pmcmd recoverworkflowコマンドを使用してワークフローをリカバリすることもできます。
セッションのリカバリ
失敗、終了、強制終了、または停止したセッションを、ワークフローをリカバリすること
なくリカバリすることができます。ワークフローが完了すると、残りのワークフローを実
行することなく、セッションをリカバリすることができます。セッションをリカバリする
には、最後のチェックポイントからのリスタートまたは再開のリカバリ戦略を設定する必
要があります。Integration Serviceはタスクのリカバリ戦略に基づいてセッションをリカ
バリします。セッションをリカバリするために、ワークフローをサスペンド状態にした
り、ワークフローのリカバリを有効にしたりする必要はありません。セッションをリカバ
リする場合、Integration Serviceにより別のセッションログが作成されます。
Workflow Monitorを使用してセッションをリカバリするには:
1.
Workflow Monitorでワークフローをダブルクリックして展開し、タスクを表示しま
す。
2.
セッションを右クリックし、[タスクのリカバリ]を選択します。
Integration Serviceによって、失敗したセッションがリカバリ戦略に従ってリカバリされ
ます。
pmcmd starttaskを-recoverオプション付きで使用して、セッションをリカバリすること
もできます。
セッションからのワークフローのリカバリ
セッションが停止、強制終了、または終了し、ワークフローが完了しない場合、セッショ
ンのリカバリ戦略を設定していれば、セッションからワークフローをリカバリすることが
182
章 9: ワークフローリカバリ
できます。セッションをリカバリすると、Integration Serviceはそのリカバリ戦略を使用
し、セッションをリカバリしてワークフローを続行します。ワークフローをサスペンド状
態にしたり、ワークフローのリカバリを有効にしたりしない場合でも、セッションをリカ
バリすることができます。セッションからワークフローをリカバリする場合、Integration
Serviceにより、別のセッションログが作成されます。
Workflow Monitorでセッションからワークフローをリカバリするには:
1.
Workflow Monitorでワークフローをダブルクリックして展開し、セッションを表示し
ます。
2.
セッションを右クリックし、[このタスクのリカバリによるワークフローのリスター
ト]を選択します。
Integration Serviceによって、失敗したセッションがリカバリ戦略に従ってリカバリされ
ます。
セッションからワークフローをリカバリするには、 pmcmd startworkflowを-recoveryオプ
ション付きで使用します。
注: ワークレット内のセッションをリカバリするには、ワークレットを展開し、タスクの
リカバリを選択します。
セッションリカバリに関するルールおよびガ
イドライン
セッションをリカバリする場合には、以下のルールおよびガイドラインを使用します。
¨ Integration Serviceは、セッションリカバリを実行するときに新しいセッションログ
を作成します。
¨ セッションは、最後に成功した実行のパフォーマンス統計をレポートします。
¨ シードパラメータを指定する場合は、乱数生成(RAND)関数を使用するトランスフォー
メーションを含むセッションをリカバリできます。
¨ セッションリカバリの実行時に、マッピング変数が開始値にリセットされます。
Old Trans: 最後のチェックポイントから再開するよう
にするためのリカバリの設定
最後のチェックポイントから再開するようにリカバリを設定するときは、次のルールとガ
イドラインに従う必要があります。
¨ トランスフォーメーションごとにパススルーパーティション化を使用する必要がありま
す。
¨ グリッド上で実行されるセッションの場合は、最後のチェックポイントから再開するよ
うにリカバリを設定することはできません。
¨ 完全なプッシュダウンの最適化にセッションを設定すると、Integration Serviceは、
そのセッションをデータベース上で実行します。その結果、セッションが失敗すると、
セッションリカバリに関するルールおよびガイドライン
183
差分リカバリが実行されません。SQLオーバーライドを含んだセッションのリカバリを
実行する場合、Integration Serviceはビューを削除し、再作成する必要があります。
¨ ワークフローまたはセッションを中断された実行とリカバリ実行の間で変更したとき
は、予期しない結果が得られることがあります。Integration Serviceでは、変更され
たワークフローに対するリカバリは防止されません。 ワークフローまたはタスクが前
回実行後に変更された場合、リカバリのワークフローログまたはセッションログはメッ
セージを表示します。
¨ 最後のチェックポイントからセッションを再開する場合、セッション実行前のコマンド
と実行前SQLコマンドは1回しか実行されません。実行前または実行後のコマンドまたは
SQLコマンドが失敗すると、Integration Serviceは、リカバリ中にそのコマンドを再度
実行します。再度実行できるようにコマンドを設計してください。
¨ セッションがリレーショナルターゲットへの書き込みを一括モードで行った場合、再開
するようにそのセッションを設定することはできません。
リカバリ不可能なワークフローまたはタスク
場合によっては、Integration Serviceがワークフローまたはタスクをリカバリできないこ
とがあります。以下の状況では、ワークフローまたはタスクをリカバリすることができま
せん。
¨ パーティション数を変更した場合。セッションが失敗した後でパーティション数を変更
した場合、リカバリセッションは失敗します。
¨ 中断されたタスクに、失敗リカバリ戦略がある場合。 コマンドまたはセッションのリ
カバリが失敗し、ワークフローのリカバリが続行されるように設定した場合、タスクを
リカバリすることはできません。
¨ リカバリストレージファイルが欠如している場合。$PMStorageDirにリカバリストレー
ジファイルが見つからないか、$PMStorageDirの定義が当初の実行からリカバリ実行に
変更された場合、Integration Serviceはセッションまたはワークフローのリカバリに
失敗します。
¨ リカバリテーブルが空であるかターゲットデータベース内に存在しない場合。
Integration Serviceでは、以下の状況でリカバリセッションが中止されます。
- Integration Serviceで作成されたテーブルを削除した。
- Integration Serviceがリカバリ情報をテーブルから削除した直後に、リカバリが有
効になっているセッションが失敗した。
以下の状況でリカバリを実行すると、整合性のないデータが生成される場合があります。
¨ 初期セッション後にソースまたはターゲットが変更された場合。セッションをリカバリ
する前にインデックスを削除または作成するか、ソースまたはターゲットテーブルのデ
ータを編集した場合、Integration Serviceが存在しない行または繰り返し行を返すこ
とがあります。
¨ 初期セッションの失敗後に、ソースまたはターゲットコードページが変更された場合。
ソースまたはターゲットコードページを変更した場合、Integration Serviceによって
不正なデータが返されることがあります。 そのコードページと元のコードページとの
間で両方向の互換性がある場合は、リカバリを実行できます。
184
章 9: ワークフローリカバリ
第 10 章
停止と強制終了
この章では、以下の項目について説明します。
¨ 停止と強制終了の概要, 185 ページ
¨ エラーのタイプ, 186 ページ
¨ Integration Serviceによるセッションの失敗の処理, 187 ページ
¨ ワークフローの停止または強制終了, 188 ページ
¨ 停止または強制終了の手順, 189 ページ
停止と強制終了の概要
タスク、ワークフロー、またはワークレットは、いつでも停止または強制終了することが
できます。
タスクの停止や強制終了とまったく同じように、セッションを停止したり強制終了したり
できます。マッピングロジックでABORT()関数を使ってセッションを強制終了することもで
きます。セッションエラーが発生した場合、Integration Serviceによってセッションが早
期に停止されることがあります。 セッションにエラーしきい値を設定するか、マッピング
でABORT関数を使用するか、あるいはIntegration Serviceにセッションの停止を要求する
ことによって、停止位置を制御できます。 Integration Serviceにより致命的なエラー
(ターゲットデータベースへの接続が失われた場合など)が検出された場合、停止位置の
制御はできません。
エラーの結果、セッションが失敗した場合、ワークフローをリカバリしてセッションをリ
カバリできます。
ワークフローを停止した場合、Integration Serviceは、ワークフローで現在実行中のすべ
てのタスクの停止を試みます。 ワークフローにワークレットが含まれている場合、
Integration Serviceは、ワークレット内の現在実行中のすべてのタスクの停止も試みま
す。 Integration Serviceでワークレットを停止できない場合は、ワークフローを強制終
了する必要があります。
Integration Serviceは、以下のタスクを完全に停止できます。
¨ セッション
¨ コマンド
185
¨ タイマ
¨ Event-Wait
¨ ワークレット
複数のコマンドを含んでいるコマンドタスクを停止した場合、Integration Serviceは現在
のコマンドの実行を完了し、残りのコマンドを実行しません。 Integration Serviceは、
電子メールタスクなどのタスクは停止できません。 例えば、停止コマンドを発行した際に
既にIntegration Serviceが電子メールを送信していた場合、Integration Serviceはワー
クフローの実行を停止する前に、電子メールの送信を完了します。
リポジトリサービスプロセスがシャットダウンした場合、Integration Serviceはワークフ
ローを強制終了します。
エラーのタイプ
セッションエラーには、致命的なものと非致命的なものがあります。 最初の発生でセッシ
ョンの強制的な終了が行われないエラーが、非致命的エラーです。致命的なエラーは、
Integration Serviceがソース、ターゲット、またはリポジトリにアクセスできない場合に
発生します。
しきい値のエラー
非致命的エラーの発生が指定した回数に達したときにセッションが停止するように選択す
ることができます。最初の発生でセッションの強制的な終了が行われないエラーが、非致
命的エラーです。エラーのしきい値は、セッションプロパティで[Stop on Error(エラー
発生時に停止)]オプションを使って指定できます。このオプションを有効にした場合、
Integration Serviceではreader、writer、およびトランスフォーメーションの各スレッ
ドで発生した非致命的エラーがカウントされます。
Integration Serviceでは、ソースの読み込み、データの変換、およびターゲットへの書き
込み時に、独立したエラー数が保持されます。 セッションプロパティで[エラー時の停
止]オプションを設定した場合、Integration Serviceでは以下の非致命的エラーがカウン
トされます。
¨ readerエラー。ソースデータベースまたはソースファイルの読み込み中にIntegration
Serviceによって検出されたエラー。 Unicodeモードでセッションを実行している場合
は、readerエラーしきい値に不揃いエラーを含めることができます。
¨ writerエラー。ターゲットデータベースまたはターゲットファイルへの書き込み中に
Integration Serviceによって検出されたエラー。 writerエラーしきい値には、キー
制約違反、非NULLフィールドへのNULLのロード、およびデータベーストリガ応答を含む
ことができます。
¨ トランスフォーメーションエラー。データの変換中にIntegration Serviceによって検
出されたエラー。 トランスフォーメーションエラーしきい値には、変換エラー、およ
びERRORとして設定したすべての条件(NULL入力など)を含むことができます。
1つのパイプラインに複数のパーティションを作成した場合、Integration Serviceではパ
ーティションごとに別々のエラーしきい値が保持されます。 Integration Serviceはすべ
186
章 10: 停止と強制終了
てのパーティションのエラーしきい値に達した場合、セッションを停止します。 writerが
1つ以上のパーティションからのデータの書き込みを続行する場合がありますが、正常なリ
カバリを実行する機能には影響を与えません。
注: 非ラインシーケンシャルVSAMファイルで不揃いエラーが発生した場合、Integration
Serviceではエラーしきい値が1に設定され、セッションが停止します。
致命的なエラー
致命的なエラーは、Integration Serviceがソース、ターゲット、またはリポジトリにアク
セスできない場合に発生します。 これには、データをロードするためのデータベース容量
不足など、接続またはターゲットデータベースエラーが含まれます。セッションでノーマ
ライザまたはシーケンスジェネレータトランスフォーメーションが使用されている場合、
Integration Serviceがリポジトリ内でシーケンス値を更新することができず、致命的なエ
ラーが発生します。
セッションでノーマライザまたはシーケンスジェネレータトランスフォーメーションが使
用されておらず、Integration Serviceでリポジトリとの接続が失われた場合、セッション
は停止しません。 セッションは完了しますが、Integration Serviceはセッション統計を
リポジトリに記録できません。
せッションは、Workflow Managerまたは pmcmdから停止できます。
セッションを、Workflow Managerから強制終了できます。 指定されたトランスフォーメー
ションエラーがIntegration Serviceによって検出された場合には、マッピングロジックで
ABORT関数を使用してセッションを強制終了させることもできます。
Integration Serviceによるセッションの失
敗の処理
Integration Serviceでは、セッションが失敗した原因のエラーまたはイベントに応じて、
さまざまな方法でセッションエラーが処理されます。
以下の表に、セッションが失敗する際のIntegration Serviceの動作を示します。
セッションエラーの原
因
Integration Serviceの動作
- readerエラーによっ
てエラーのしきい値
に達した
- Workflow Managerま
たはpmcmdを使用し
Integration Serviceにより以下のタスクが実行され
ます。
- 読み込みを停止する。
- データ処理を継続する。
- ターゲットへのデータの書き込みおよびコミットを
継続する。
た停止コマンド
Integration Serviceによるセッションの失敗の処理
187
セッションエラーの原
因
Integration Serviceの動作
Integration Serviceがデータの処理やコミットを完
了できない場合は、強制終了コマンドを発行してセッ
ションを停止する必要があります。
Workflow Managerを使
用した強制終了コマン
ド
Integration Serviceにより以下のタスクが実行され
ます。
- 読み込みを停止する。
- データ処理を継続する。
- ターゲットへのデータの書き込みおよびコミットを
継続する。
Integration Serviceで60秒以内にデータの処理とコ
ミットを完了できない場合、Integration Serviceは
DTMプロセスを中止し、セッションを終了します。
- データベースからの
致命的なエラー
- writerエラーによっ
てエラーのしきい値
に達した
Integration Serviceにより以下のタスクが実行され
ます。
- 読み込みと書き込みを停止する。
- ターゲットデータベースに書き込んでないデータを
すべてロールバックする。
セッションが致命的なエラーのために停止した場合、
コミットまたはロールバックが成功する場合としない
場合があります。
- トランスフォーメー
ションエラーによっ
てエラーのしきい値
に達した
- ABORT( )
- トランザクション制
御式の無効な評価
Integration Serviceにより以下のタスクが実行され
ます。
- 読み込みを停止する。
- 行に強制終了行としてのフラグを設定し、データの
処理を継続する。
- 強制終了行に達するまで、ターゲットデータベース
への書き込みを継続する。
- コミットの間隔に基づいてコミットを発行する。
- ターゲットデータベースに書き込んでないデータを
すべてロールバックする。
ワークフローの停止または強制終了
ワークフローの制御タスクを使用することにより、Integration Serviceによってワークフ
ローを停止または強制終了する時間と方法を指定できます。 ワークフローの開始後、
Workflow Monitorまたは pmcmdを使用してワークフローの停止または強制終了ができます。
停止または強制終了コマンドは、ワークフローの実行中のいつでも発行できます。
ワークフローを停止または強制終了するには、以下のいずれかの操作を行います。
¨ ワークフロー内で[Control]タスクを使用する。
¨ Workflow Monitorで停止または強制終了コマンドを発行する。
¨ pmcmdで停止または強制終了コマンドを発行する。
188
章 10: 停止と強制終了
タスクの停止または強制終了
Workflow Monitorから、ワークフロー内のタスクを停止または強制終了することができま
す。タスクを停止または強制終了した場合、Integration Serviceはタスクの処理を停止し
ます。 停止または強制終了されたタスクのパス内にある他のタスクは、Integration
Serviceによって処理されません。 ワークフロー内の同時実行されるタスクの処理は、
Integration Serviceによって続行されます。 Integration Serviceがそのタスクを停止
できない場合は、タスクを強制終了できます。
タスクを強制終了した場合、Integration Serviceはタスク上のプロセスを中止します。
タスクを強制終了した場合、Integration Serviceによってワークフロー内の同時実行され
るタスクの処理が続行されます。
また、ワークレットを停止または強制終了することもできます。Integration Serviceでは
ワークレットの停止と強制終了が、タスクの停止と強制終了の場合と同様に行われます。
Integration Serviceは、ワークフロー内の同時実行されるタスクを実行する際に、ワーク
レットを停止します。 また、ワークレット内のタスクを停止または強制終了することもで
きます。
セッションタスクの停止または強制終了
停止コマンドを発行する際にIntegration Serviceがセッションタスクを実行していた場
合、Integration Serviceはデータの読み込みを停止します。 Integration Serviceによ
り、ターゲットへのデータの書き込みやコミットの処理は続行されます。Integration
Serviceがデータの処理やコミットを完了できない場合、強制終了コマンドを発行できま
す。
Integration Serviceでは、Integration Serviceに60秒のタイムアウト期間があること以
外は、セッションタスクの強制終了コマンドが停止コマンドのように処理されます。
Integration Serviceは、データ処理やコミットをタイムアウト期間内に完了できない場
合、DTMプロセスを中止し、セッションを終了します。
停止または強制終了の手順
Workflow Monitorでは、タスク、ワークフロー、またはワークレットをいつでも停止また
は強制終了することができます。ワークフロー内のタスクを停止する場合、Integration
Serviceはそのタスクと、そのパスにある他のすべてのタスクの実行を停止します。同時実
行されるタスクの実行は、Integration Serviceによって続行されます。Integration
Serviceがタスクの処理を停止できない場合は、タスクを強制終了する必要があります。
Integration Serviceがタスクを強制終了する場合、Integration ServiceはDTMプロセス
を中止し、タスクを終了します。
リアルタイムセッションの動作は、リアルタイムソースによって異なります。
Workflow Monitorでワークフロー、タスク、またはワークレットを停止または強制終了す
るには:
1.
ナビゲータ内で、停止または強制終了したいタスク、ワークフロー、またはワークレ
ットを選択します。
停止または強制終了の手順
189
2.
[タスク]-[停止]または[タスク]-[強制終了]をクリックします。
Workflow Monitorで、停止または強制終了コマンドのステータスがアウトプットウィ
ンドウに表示されます。
190
章 10: 停止と強制終了
第 11 章
コンカレントワークフロー
この章では、以下の項目について説明します。
¨ コンカレントワークフローの概要, 191 ページ
¨ 一意のワークフローインスタンスの設定, 192 ページ
¨ 同一名のコンカレントワークフローの設定, 193 ページ
¨ パラメータおよび変数の使用, 194 ページ
¨ コンカレントワークフローの設定手順, 195 ページ
¨ コンカレントワークフローの開始および停止, 196 ページ
¨ コンカレントワークフローの監視, 198 ページ
¨ セッションログおよびワークフローログの表示, 199 ページ
¨ コンカレントワークフローに関するルールおよびガイドライン, 200 ページ
コンカレントワークフローの概要
コンカレントワークフローとは、複数インスタンスとして並列実行できるワークフローの
ことです。ワークフローインスタンスとは、ワークフローの表現です。コンカレントワー
クフローの設定時には、ワークフローの単一インスタンスをIntegration Serviceが複数回
並列に実行できるようにするか、ワークフローの一意インスタンスを並列実行されるよう
に定義します。
コンカレントワークフローを設定するには、次のいずれかのワークフローオプションを使
用します。
¨ 同一インスタンス名を持つコンカレントワークフローの許可。 1つのワークフローイン
スタンスを複数回並列に実行されるように設定します。各インスタンスのソースパラメ
ータ、ターゲットパラメータ、および変数パラメータは同じです。Integration
Serviceは各インスタンスを実行IDで識別します。実行IDは、実行済みのワークフロー
インスタンスを特定する番号です。
¨ 一意のワークフローインスタンスの同時実行の設定。 各ワークフローインスタンスの
名前を定義して、インスタンスのワークフローパラメータファイルを設定します。パラ
メータファイル内には、さまざまなソース、ターゲット、および変数を定義することが
できます。
191
コンカレントワークフローを実行した場合、各ワークフローのワークフロー名およびイン
スタンス名がWorkflow Monitorに表示されます。ワークフローに一意のインスタンス名が
付いていない場合、実行済みの各コンカレントワークフローの同じワークフロー名が
Workflow Monitorに表示されます。
Integration Serviceでは、インスタンス名、または実行IDとタイムスタンプのどちらかを
ワークフロー名およびセッションログ名に追加して、コンカレントワークフローの一意の
ログファイルが作成されます。
一意のワークフローインスタンスの設定
ワークフローの複数インスタンスを設定して、各インスタンスを一度に並列実行すること
ができます。ワークフローインスタンスの設定時には、インスタンスの一意名を指定し、
インスタンスのワークフローパラメータファイルを設定します。
ワークフローインスタンスを、別のソースとターゲットを持つワークフローを実行するよ
うに設定します。たとえば、所属組織が3部門から売上データを受け取るとします。売上デ
ータを読み取ってデータベースに書み込むワークフローを作成します。そのワークフロー
に対して3つのインスタンスを設定します。各インスタンスには、処理対象の売上ファイル
を定義する別個のワークフローパラメータファイルがあります。ワークフローのインスタ
ンスはすべて並列実行できます。
ワークフローの開始時には、実行対象のインスタンスを選択することができます。コンカ
レントワークフローが一意のインスタンスで実行されるように設定されている場合、イン
スタンスを並列に実行することができます。1つのインスタンスを複数回並列に実行するに
は、ワークフローを同じインスタンス名で実行されるように設定します。
ワークフローインスタンスのインスタンス名によるリ
カバリ
Workflow Monitorまたは pmcmdからワークフローインスタンスをリカバリできます。ワーク
フローのリカバリを有効にすると、Integration Serviceでワークフロー実行IDがリカバリ
ストレージファイル名に追加されます。
コンカレントワークフローをリカバリする際には、リカバリ対象のインスタンスを識別し
てください。Workflow Monitorで、リカバリ対象のインスタンスを右クリックします。
pmcmdを使用してリカバリする際には、インスタンス名パラメータを入力します。
同一インスタンス名のコンカレントインスタンスの実
行に関するルールおよびガイドライン
同一インスタンス名のコンカレントインスタンスを実行する際は、次の規則およびガイド
ラインに従ってください。
¨ Integration Serviceではコンカレントワークフロー実行間で変数が上書きされます。
¨ ワークフローはpmcmdから実行IDで強制終了できます。
¨ ワークフロータスクは pmcmdから実行IDで強制終了できます。
192
章 11: コンカレントワークフロー
¨ Workflow Monitorではインスタンスごとの実行IDは表示されません。実行IDは、ワーク
フローログ、セッションログ、およびWorkflow Monitorの[Run Properties(実行プ
ロパティ)]パネルにが表示されます。
¨ 同一インスタンス名のコンカレントワークフローが実行される設定にした場合、ログフ
ァイル名には常にタイムスタンプが組み込まれます。
同一名のコンカレントワークフローの設定
一意のインスタンス名を定義しなくても、ワークフローを並列に実行できます。同じワー
クフロー名のインスタンスを複数実行することができます。各ワークフローインスタンス
は、実行ID識別子番号(実行ID)でIntegration Serviceに判別されます。各ワークフロ
ー実行には、一意の実行IDが付けられます。Integration Serviceはワークフローログ名、
セッションログ名、リカバリファイル名などの一時ファイル名に実行IDを付加して、各ワ
ークフローごとに個別のファイルを作成します。
ワークフローをリアルタイムソース(たとえば、メッセージキューやWebサービス)から読
み出すときは、コンカレントワークフローを同じインスタンス名で実行します。たとえ
ば、複数のプロジェクトチームからのデータを管理するとします。ソースデータおよびタ
ーゲットを判別するメッセージキューからデータを読み込むワークフローを作成します。
インスタンスを複数回並列に実行して、別々の接続パラメータをメッセージキューからワ
ークフローインスタンスに渡すことができます。
コンカレントWebサービスワークフローの実行
Webサービスワークフローを実行すると、Integration Serviceで複数のワークフローイン
スタンスを実行するパフォーマンスが向上します。ワークフローをWebサービスとして実行
されるように設定するときは、ハブ上で実行されるワークフローインスタンスの数、およ
び新規ワークフローインスタンスの起動タイミングを設定します。
ワークフローをWebサービスとして有効にすると、Workflow Designerで同一ワークフロー
名のワークフローの並列実行が有効になります。Web Services Hubでは、Webサービス用に
設定された1ハブあたりの最大実行数、およびサービス時間プロパティに基づいて、Webサ
ービスの新規インスタンスの起動タイミングが決定されます。
Webサービスワークフローインスタンスは、Web Services Hubによって起動されたときに、
他のワークフローインスタンスと同じ名前が付けられます。
注: ワークフローをWebサービスとして有効にすると、Workflow Designerではデフォルト
で、ワークフローの並列実行が有効になります。
同一名のワークフローインスタンスの設定
同一インスタンス名のワークフローの並列実行を有効にした場合は、そのワークフロー用
にワークフローインスタンスおよびパラメータファイルも設定できます。各インスタンス
は並列して複数回起動することができます。
同一名のコンカレントワークフローの設定
193
たとえば、ワークフローを定義して2つのインスタンスを作成しておくと、そのワークフロ
ーを開始して、両方のインスタンスを実行することができます。ワークフローを再度開始
して、同一インスタンスを並列に実行することができます。
並列実行されている4つのインスタンスは、Workflow Monitorのタスクビューに表示されま
す。
wf_sales
wf_sales
wf_sales
wf_sales
[Instance1]
[Instance2]
[Instance1]
[Instance2]
同一名のワークフローインスタンスのリカバリ
ワークフローのリカバリを有効にすると、Integration Serviceでワークフローリカバリス
トレージファイルに実行IDが付加されます。Workflow Monitorまたは pmcmdで、同一名の
ワークフローをリカバリすることができます。
コンカレントワークフローのリカバリ時には、リカバリ対象のインスタンスを特定する必
要があります。Workflow Monitorで、リカバリ対象のインスタンスを右クリックします。
リカバリにpmcmdを使用するときは、実行IDパラメータを入力します。
注: ワークフローでリレーショナルターゲットが更新される場合、最終チェックポイント
からセッションをリカバリすることはできません。リカバリセッションは失敗し、エラー
メッセージが出力されます。
同一インスタンス名のコンカレントインスタンスの実
行に関するルールおよびガイドライン
同一インスタンス名のコンカレントインスタンスを実行する際は、次の規則およびガイド
ラインに従ってください。
¨ Integration Serviceではコンカレントワークフロー実行間で変数が上書きされます。
¨ ワークフローはpmcmdから実行IDで強制終了できます。
¨ ワークフロータスクは pmcmdから実行IDで強制終了できます。
¨ Workflow Monitorではインスタンスごとの実行IDは表示されません。実行IDは、ワーク
フローログ、セッションログ、およびWorkflow Monitorの[Run Properties(実行プ
ロパティ)]パネルにが表示されます。
¨ 同一インスタンス名のコンカレントワークフローが実行される設定にした場合、ログフ
ァイル名には常にタイムスタンプが組み込まれます。
パラメータおよび変数の使用
競合を防ぐには、ワークフローインスタンスごとにパラメータファイルを設定します。
194
章 11: コンカレントワークフロー
以下の表に、コンカレントワークフローの設定パラメータのリストを一覧表示します。
パラメータタイプ
パラメータ名
データベース接続
$DBConnectionName
ソースファイル
$InputFileName
ターゲットファイル
$OutputFileName
拒否ファイル
$BadFileName
ルックアップファイル
$LookupFileName
Integration Serviceでは、ワークフロー変数がワークフロー実行インスタンス名によって
持続されます。
実行インスタンス名または実行IDへのアクセス
一意のインスタンス名でワークフローを並列に実行するように設定した場合、Integration
Serviceではワークフロー実行インスタンスは実行インスタンス名で区別されます。各ワー
クフローインスタンスはワークフロー名と実行インスタンス名を組み合わせて定義される
ため、複数のワークフローに対して同一の実行インスタンス名を設定することができま
す。同一のインスタンス名でワークフローを並列に実行するように設定した場合、
Integration Serviceではワークフロー実行インスタンスは実行IDで区別されます。
組み込みの変数$PMWorkflowRunInstanceNameおよび$PMWorkflowRunIdによって、ワークフ
ロー実行インスタンス名および実行IDが文字列値として返されます。これらの変数は読み
取り専用です。ワークフローまたはマッピングでこれらの変数にアクセスして、ワークフ
ローインスタンスの名前または実行IDを取得できます。これらの変数は、式、ファイル監
視イベント、またはデータに適用できます。また、これらの変数を使用して、一意のファ
イル名を設定することもできます。
例えば、事前定義済み[イベント待ち]タスクを作成して、インジケータファイルが表示
された後に削除するとします。$PMWorkflowRunInstanceNameを使用して、ファイル名を定
義します。一意のインスタンス名の付いた2つのコンカレントワークフローを実行すると、
各ワークフロー[イベント待ち]タスクは別個のインジケータファイルを待って削除しま
す。
注: 並列実行が有効化されていないワークフローを実行した場合、
$PMWorkflowRunInstanceNameには値が代入されません。
コンカレントワークフローの設定手順
ワークフローの作成時、または編集時には、ワークフローの並列実行を有効にすることが
できます。
コンカレントワークフローの設定手順
195
ワークフローの並列実行を有効にするには:
1.
Workflow Managerで、ワークフローを開きます。
2.
ワークフローの[全般]タブで、並列実行を有効にします。
同一インスタンス名のワークフローの並列実行が有効になります。
3.
いくつかのインスタンス名を設定するには、[並列実行の設定]をクリックします。
[並列実行の設定]ダイアログボックスが表示されます。
4.
次のいずれかのオプションを選択します。
¨ 一意のインスタンス名を持つもののみ同時実行を許可。インスタンス名が一意であ
る場合、Integration Serviceではコンカレントワークフローを実行できます。
¨ 同一インスタンス名を持つものの同時実行を許可。Integration Serviceでは、同
じ名前を持つコンカレントワークフローを実行できます。
5.
必要に応じて、[追加]ボタンをクリックして、ワークフローインスタンスの名前を
追加します。
ワークフローインスタンスの名前では、大文字と小文字は区別されません。インスタ
ンス名の文字がWorkflow Designerによって検査されます。インスタンス名に使用で
きない特殊文字は、次のとおりです。
$ . + - = ~ ` ! % ^ & * () [] {} ' \ " ; : / ? , < > \\ | \t \r \n
6.
必要に応じて、インスタンス用ワークフローパラメータファイルへのパスを入力しま
す。ワークフローインスタンスごとに異なるソース、ターゲット、または変数を使用
するには、インスタンスごとにパラメータファイルを設定します。
7.
[OK]をクリックします。
コンカレントワークフローの開始および停止
コンカレントワークフローは、Workflow DesignerまたはWorkflow Monitorで開始するこ
とができます。ワークフローは pmcmdから開始することもできます。一意のワークフローイ
ンスタンスを実行するには、ワークフローの開始時に、実行するインスタンスを選択しま
す。
Workflow Designerからのワークフローインスタンスの
開始
実行するワークフローインスタンスは、Workflow Designerからワークフローを開始する際
に選択することができます。定義済みインスタンスが1つ以上あるワークフローを開始する
には、次の手順に従います。
Workflow Designerからワークフローインスタンスを起動するには:
196
1.
ワークフローが格納されているフォルダを開きます。
2.
ナビゲータで、開始するワークフローを選択します。
3.
ワークフローを右クリックし、[Workflow Advancedの開始]を選択します。
章 11: コンカレントワークフロー
4.
起動するワークフロー実行インスタンスを選択します。デフォルトでは、すべてのイ
ンスタンスが選択されています。ワークフローインスタンスをすべてクリアしてか
ら、起動するインスタンスを選択することができます。
5.
[OK]をクリックして、ワークフローインスタンスを起動します。
Workflow Monitorに各コンカレントワークフロー名およびインスタンス名が表示されま
す。
単一のコンカレントワークフローの開始
コンカレントワークフローに一意のインスタンス名が付いていない場合、またはユーザー
が設定済みインスタンスの実行を望まない場合は、ワークフローの開始にWorkflow
Designerを使用することができます。[ワークフローの開始]オプションを使用してワー
クフローを開始した場合、Integration Serviceでのワークフロー実行には、[プロパテ
ィ]タブおよび[変数]タブで定義された属性および変数が使用されます。設定済みワー
クフローインスタンスはいっさいIntegration Serviceで実行されません。
1つのコンカレントワークフローインスタンスを起動するには:
1.
ワークフローが格納されているフォルダを開きます。
2.
ナビゲータで、開始するワークフローを選択します。
3.
ナビゲータ内でワークフローを右クリックし、[ワークフローの開始]を選択しま
す。
[プロパティ]タブおよび[変数]タブから参照された属性を使用して、1つのワーク
フローインスタンスが実行されます。
コマンドラインからのコンカレントワークフローの開
始
コマンドラインからは一度に1つのワークフローインスタンスを起動できます。 pmcmd
startworkflowコマンドには、インスタンス名を指定するパラメータがあります。コマンド
ラインからワークフローを開始してインスタンス名パラメータを入力すると、Integration
Serviceによってワークフローのインスタンスが起動されます。複数のワークフローインス
タンスを実行するには、pmcmd startworkflowコマンドを複数回実行します。
startworkflowにインスタンス名パラメータを入力しないと、Integration Serviceでのワ
ークフロー実行に属性および変数が使用されます。設定済みワークフローインスタンスは
いっさいIntegration Serviceで実行されません。
コマンドラインからのワークフローインスタンスの作成
pmcmdを使用してワークフローを開始する場合、インスタンスを動的に作成できます。 イン
スタンス名およびパラメータファイル名を入力します。インスタンス名が設定されていな
い場合、インスタンスはIntegration Serviceで生成されます。リポジトリ内のインスタン
スの変数はIntegration Serviceによる永続化が可能ですが、そのインスタンスは[並列実
行の設定]ダイアログボックスには表示されません。
コンカレントワークフローの開始および停止
197
コンカレントワークフローの停止または強制終了
コンカレントワークフローは、Workflow Monitorまたは pmcmdから停止または強制終了する
ことができます。ワークフローをWorkflow Monitorから停止または強制終了するには、ナ
ビゲータでワークフローを右クリックして、[停止]または[強制終了]を選択します。
Workflow Monitorで、停止または強制終了コマンドのステータスがアウトプットウィンド
ウに表示されます。
コンカレントワークフローを pmcmdから停止または強制終了するには、コマンドラインでイ
ンスタンス名またはワークフロー実行IDパラメータを入力して、ワークフローインスタン
スを指定します。コンカレントワークフロー内のタスクを停止または強制終了するには、
ワークフローインスタンスの名前、または停止するタスクを含むコンカレントワークフロ
ーの実行IDを入力します。コンカレントワークフローに一意のインスタンス名が付いてい
ない場合は、ワークフローログまたはWorkflow Monitorのワークフロー実行プロパティに
ワークフロー実行IDを調べることができます。
コンカレントワークフローの監視
コンカレントワークフローを実行すると、実行された各ワークフローのワークフロー名が
Workflow Monitorに表示されます。ワークフローに一意のインスタンス名が付いている場
合、Workflow Monitorにインスタンス名がワークフロー名付きで表示されます。
以下の図に、Workflow Monitorのタスクビューに表示されるコンカレントワークフロー名
およびインスタンス名を示します。
ガントチャートビューでコンカレントワークフローを表示した場合、Workflow Monitorに
ワークフローの名前またはワークフローインスタンスの名前ごとに1つのタイムラインが表
示されます。ワークフローに一意のインスタンス名(RunInstance1、RunInstance2など)
が付いている場合、ワークフロー実行ごとのインスタンス名がWorkflow Monitorに表示さ
れます。 タイムウィンドウをスクロールして、特定のワークフロー実行の情報を表示する
ことができます。
198
章 11: コンカレントワークフロー
セッションログおよびワークフローログの表
示
Integration Serviceでは設定された同時実行に基づいて、コンカレントワークフローセッ
ションおよびワークフローログファイルに名前が付けられます。
¨ 一意のインスタンス名。Integration Serviceによって、ログファイル名にインスタン
ス名が追加されます。
¨ 同一名のインスタンス。Integration Serviceにより、ログファイル名に実行IDおよび
タイムスタンプが追加されます。
ワークフローログには実行IDおよびワークフロータイプが書き込まれます。ワークフロー
タイプは、ワークフローがコンカレントワークフローであるかどうかを示します。
以下に例を示します。
Workflow SALES_REV started with run id [108], run instance name [WF_CONCURRENT_SALES1], run type
[Concurrent Run with Unique Instance Name].
各セッションログには、ワークフロー実行IDおよびインスタンス名を示すエントリも含ま
れます。
Workflow: [SALES_REV] Run Instance Name: [WF_CONCURRENT_SALES1] Run Id: [108]
注: エラー重要度レベルを警告にしたときにすべてのワークフローログメッセージが表示
されない場合は、ワークフローログのエラー重要度レベルを変更してください。
PowerCenter Integration Serviceプロセスの詳細プロパティで、ログレベルを警告から
情報に変更します。
一意のワークフローインスタンス用のログファイル
一意のインスタンス名のワークフローを並列実行するように設定しておくと、Integration
Serviceによってインスタンスごとにログが作成されます。各ログファイル名には、インス
タンス名が組み込まれます。
<workflow_name>.<workflow_instance_name>
<session_name>.<workflow_instance_name>
たとえば、ワークフローログファイル名がwf_store_sales.log、インスタンス名が
store1_workflowの場合、Integration Serviceでバイナリワークフローログファイルおよ
びテキストワークフローログファイル用に作成されるログファイル名は、次のようになり
ます。
wf_store_sales.log.store1_workflow.bin
wf_store_sales.log.store1_workflow
ログファイルの上書きを回避するために、ログファイルをアーカイブするか、またはログ
ファイルをタイムスタンプで保存することができます。
セッションログおよびワークフローログの表示
199
同一名のワークフローインスタンス用のログファイル
ワークフローを同一インスタンス名で同時に実行するように設定した場合、Integration
Serviceによってインスタンスごとにログファイルが作成されます。各ログファイル名には
デフォルトで、実行IDおよびタイムスタンプが組み込まれます。
<workflow_name>.<runID>.<timestamp>
<session_name>.<run ID>.<timestamp>
例えば、ワークフローログファイル名がwf_store_sales.log、実行IDが845で、2007年7月
12日11:20:45にワークフローが実行された場合、Integration Serviceでバイナリワーク
フローログファイルおよびテキストワークフローログファイル用に作成されるログファイ
ル名は、次のようになります。
wf_store_sales.log.845.20070712112045.bin
wf_store_sales.log.845.20070712112045
ワークフローを同一インスタンス名で並列実行されるように設定してインスタンス名を定
義すると、Integration Serviceによってログファイル名にインスタンス名およびタイムス
タンプが付加されます。以下に例を示します。
<workflow_name>.<instance_name>.<run ID>.20070712112045.bin
<session_name>.<instance_name>.<run ID>.20070712112045.bin
Integration Serviceでは、インスタンス名および実行IDがワークフローログに書き込まれ
ます。以下に例を示します。
Workflow wf_Stores started with run ID[86034], run instance name[Store1_workflow]
コンカレントワークフローに関するルールお
よびガイドライン
コンカレントワークフローに使用される規則およびガイドラインは、次のとおりです。
¨ パラメータファイル内のワークフロー実行インスタンスは、参照することができませ
ん。インスタンスごとに別々のパラメータを使用するには、個別のパラメータファイル
を設定する必要があります。
¨ 複数のコンカレントワークフローインスタンスに対して同じキャッシュファイル名を使
用しても、各ワークフローインスタンスは有効です。ただし、キャッシュへの書き込み
中に競合が発生した場合は、セッションが失敗します。
¨ コンカレントワークフローを実行IDまたはインスタンス名でリスタートするには、
pmcmdを使用します。
¨ ワークフローの複数インスタンスを設定して、ワークフローをスケジュールしておく
と、スケジュールされた時刻にすべてのインスタンスがIntegration Serviceによって
実行されます。インスタンスをそれぞれ別個のスケジュールで実行することはできませ
ん。
¨ ワークレットの[全般]タブでは、ワークレットを並列に実行するように設定します。
¨ 親ワークフローの並列実行を有効にした場合は、ワークレットの並列実行を有効にする
必要があります。そうしないと、ワークフローは無効です。
200
章 11: コンカレントワークフロー
¨ ワークレットの並列実行を有効にして、そのワークレットを2つの非コンカレントワー
クフロー内に配置することができます。Integration Serviceでは2つのワークレットを
並列実行できます。
¨ 並列実行が有効化された2つのワークフローは、同一のワークレットを実行できます。
同一ワークレット(ただし、そのワークレットに永続化された変数がない場合)の2つ
のインスタンスは、1つのワークフローで実行できます。
¨ ワークレット内のセッションは、同一インスタンス名の別のワークレット内のセッショ
ン(ただし、そのセッションに永続化された変数が含まれていない場合)と並列実行で
きます。
コンカレントワークフローに関する制約のあるトランスフォーメーションは、次のとおり
です。
¨ アグリゲータトランスフォーメーション。コンカレントワークフローには、差分集計を
使用できません。 セッションが失敗します。
¨ ルックアップトランスフォーメーション。 コンカレントワークフローのルックアップ
トランスフォーメーションには、以下の規則およびガイドラインが使用されます。
- コンカレントワークフローに対して、静的または動的なルックアップキャッシュを使
用できます。
- キャッシュが非永続的な場合、Integration Serviceによって、ワークフロー実行ID
が接頭語としてキャッシュファイル名に追加されます。
- キャッシュが名前のない永続キャッシュの場合、Integration Serviceによって、実
行インスタンス名が接頭語としてキャッシュファイル名に追加されます。
- キャッシュが動的で名前がない永続キャッシュであり、現在のワークフローが同一イ
ンスタンス名による同時実行を許可するように設定されている場合、セッションは失
敗します。
- ルックアップキャッシュ名がパラメータ化されている場合、Integration Serviceに
よって、キャッシュファイルにパラメータ値に基づいた名前が付けられます。実行イ
ンスタンスごとに異なるファイル名を渡します。
¨ シーケンスジェネレータトランスフォーメーション。コンカレントワークフロー用に同
一シーケンス番号のセットが生成されるのを回避するには、シーケンスジェネレータト
ランスフォーメーション内のキャッシュ値の数を設定します。
コンカレントワークフローに関するルールおよびガイドライン
201
第 12 章
グリッド処理
この章では、以下の項目について説明します。
¨ グリッド処理の概要, 202 ページ
¨ グリッド上でのワークフローの実行, 203 ページ
¨ グリッド上でのセッションの実行, 203 ページ
¨ パーティショングループに関する作業, 204 ページ
¨ グリッドの接続とリカバリ, 205 ページ
¨ グリッド上で実行するためのワークフローまたはセッションの設定, 206 ページ
グリッド処理の概要
PowerCenterドメインに複数のノードが含まれている場合、グリッド上で実行するようにワ
ークフローとセッションを設定できます。グリッド上でワークフローを実行する場合、
Integration Serviceによりグリッドの各使用可能なノードでサービスプロセスが実行さ
れ、パフォーマンスと拡張性が向上します。 グリッド上でセッションを実行する場合、
Integration Serviceによりグリッド内の各ノード上で複数のDTMプロセスにセッションス
レッドが分散され、パフォーマンスと拡張性が向上します。
Administratorツールで、グリッドの作成とIntegration Serviceの設定を行います。 グ
リッド上でワークフローを実行するには、グリッドと関連付けられたIntegration Service
で実行するようにワークフローを設定します。グリッド上でセッションを実行するには、
グリッド上で実行するようにセッションを設定します。
Integration Serviceにより、実行するためのワークフローまたはセッションの、以下の設
定方法に基づいて、ワークフロータスクとセッションスレッドが分散されます。
¨ グリッド上でのワークフローの実行。 Integration Serviceでは、グリッド内のノード
全体にワークフローが分散します。 また、グリッド内のノード全体にワークフロー内
でセッション、コマンド、および定義済みイベント待ちタスクも分散します。
¨ グリッド上でのセッションの実行。 Integration Serviceでは、グリッド内のノード全
体にセッションスレッドが分散します。
注: グリッド上でワークフローを実行するには、[サーバーグリッド]オプションを使用
している必要があります。グリッド上でワークフローを実行するには、[サーバーグリッ
ド]オプションを使用している必要があります。
202
グリッド上でのワークフローの実行
グリッド上でワークフローを実行する場合、マスタサービスプロセスによって、他のノー
ドに分散されるセッションタスク、コマンドタスク、および定義済みイベント待ちタスク
以外のワークフローおよびすべてのタスクが実行されます。マスタサービスプロセスは、
ワークフローが実行されるIntegration Serviceプロセスであり、他のノードで実行されて
いるサービスプロセスを監視し、ロードバランサを実行します。 スケジューラはマスター
サービスプロセスノード上で実行されるので、マスタサービスプロセスノードのために日
付および時間が使用され、スケジュール設定されたワークフローが開始されます。
ロードバランサは、グリッド内のノードにセッションタスク、コマンドタスク、および定
義済みイベント待ちタスクをディスパッチするIntegration Serviceのコンポーネントで
す。 ロードバランサでは、ノードの可用性に基づいてタスクが分散します。 Integration
Serviceがリソースをチェックするように設定されている場合、ロードバランサではリソー
スの可用性に基づいても各タスクが分散します。
例えば、ワークフローに[セッション]タスク、[ディシジョン]タスク、および[コマ
ンド]タスクが含まれているとします。[セッション]タスクのリソース要件を指定しま
す。グリッドにはノードが4つ含まれており、ノード4は使用できないとします。マスタサ
ービスプロセスは、[スタート]タスクと[ディシジョン]タスクを実行します。ロード
バランサは、リソースの可用性とノードの可用性に基づいて、グリッド上の各ノードに
[セッション]タスクと[コマンド]タスクを分散します。
グリッド上でのセッションの実行
グリッド上でセッションを実行する場合、マスタサービスプロセスによって、グリッド上
でワークフローを実行する場合に行われるように、他のノードに分散されるセッションタ
スク、コマンドタスク、および定義済みイベント待ちタスク以外のワークフローおよびす
べてのタスクが実行されます。スケジューラはマスターサービスプロセスノード上で実行
されるので、マスタサービスプロセスノードのために日付および時間が使用され、スケジ
ュール設定されたワークフローが開始されます。さらに、ロードバランサは、異なるノー
ドで実行されているDTMプロセスにセッションスレッドを分散します。
グリッド上でセッションを実行する場合、ロードバランサにより以下の要素に基づいてセ
ッションスレッドが分散されます。
¨ ノードの可用性。 ロードバランサによって、タスクのディスパッチに対して現在どの
ノードが実行され、有効であり、使用可能であるかが確認されます。
¨ リソースの可用性。 Integration Serviceがリソースをチェックするように設定されて
いる場合、セッションでマッピングオブジェクトに必要なリソースを持つノードが特定
されます。
¨ パーティション化の設定。ロードバランサにより、パーティション化の設定に基づい
て、別々のノードにセッションスレッドのグループがディスパッチされます。
ワークフローに、実行に時間がかかるセッションが含まれている場合、グリッド上で実行
するようにセッションを設定した方がよいことがあります。
たとえば、ワークフローに、パーティションが1つ設定されたセッションが含まれていると
します。負荷を分散するには、グリッド上で実行するようにセッションを設定し、リソー
グリッド上でのワークフローの実行
203
スをチェックするようにIntegration Serviceを設定します。 ロードバランサでは、
reader、writer、およびトランスフォーメーションのスレッドが、グリッド内の各ノード
で実行されるDTMプロセスに分散します。 readerスレッドにはリソースが必要であるた
め、ロードバランサにより、リソースが使用可能なノード上のDTMプロセスにこれらのスレ
ッドが分散されます。
パーティショングループに関する作業
グリッド上でセッションを実行すると、Data Transformation Manager(DTM)プロセスに
より、パーティショングループと呼ばれるセッションスレッドのグループが形成されま
す。パーティショングループとは、単一のDTMプロセスで実行されるreader、writer、また
はトランスフォーメーションの各スレッドのグループを指します。パーティショングルー
プには、1つ以上のパイプラインステージが含まれています。パイプラインステージとは、
任意の2つのパーティションポイント間で実行されるパイプラインの一区間です。トランス
フォーメーションの中には、グリッドを越えてパーティションできないものがあります。
グリッドを越えてトランスフォーメーションをパーティションできない場合、DTMは、トラ
ンスフォーメーションスレッドに単一のパーティショングループを作成して、単一のノー
ドでこれらのスレッドを実行します。
リソース要件を使用しないパーティショングループの
作成
セッションで複数のパーティションが使用される場合、DTMは、パーティション化の設定に
基づいてパーティショングループを作成します。例えば、1つのセッションで2つのパーテ
ィションが設定されているとします。DTMは、パーティションごとにスレッドのパーティシ
ョングループを作成します。また、ロードバランサは、2つのノードにグループを分散しま
す。
リソース要件を使用するパーティショングループの形
成
マッピングオブジェクトにリソース要件を指定する場合、DTMプロセスは、特定のノードで
使用できるリソースに基づいてパーティショングループを作成します。たとえば、特定の
ノードで、セッションのソースファイルを使用でき、ソース修飾子トランスフォーメーシ
ョンにリソース要件が指定されている場合、DTMプロセスは、この要件に基づいてパーティ
ショングループを形成します。
ソース修飾子トランスフォーメーションのリソース要件を満たすために、DTMプロセスは、
readerスレッドからパーティショングループを作成します。ロードバランサは、リソース
を使用できるノードにreaderスレッドを分散させます。
注: ロードバランサによって、必須リソースの使用可能なノードで、スレッドが分散され
るようにするには、Integration Serviceがリソースをチェックするように設定する必要が
あります。
204
章 12: グリッド処理
パーティショングループの作成に関するルールおよび
ガイドライン
Integration Serviceによって、以下のルールとガイドラインが使用されパーティショング
ループが作成されます。
¨ Integration Serviceによって、パーティショングループの数は、グリッド内のノード
の数に制限されます。
¨ トランスフォーメーションをローカル形式でパーティションできる場合、DTMプロセス
は、トランスフォーメーションスレッドのパーティショングループを1つ形成して、1つ
のDTMプロセスでそのグループを実行します。以下の各トランスフォーメーションはロ
ーカル形式でパーティションされます。
- ローカル形式でパーティションするよう設定されたカスタムトランスフォーメーショ
ン
- エクスターナルプロシージャトランスフォーメーション
- キャッシュされたルックアップトランスフォーメーション
- 未ソートジョイナトランスフォーメーション
- ローカル形式でパーティションするよう設定されたSDK ReaderまたはWriterトランス
フォーメーション
キャッシュに関する作業
Integration Serviceによって、アグリゲータ、ランク、ジョイナ、ソータ、およびルック
アップの各トランスフォーメーションにインデックスとデータキャッシュが作成されま
す。 セッションに複数のパーティションが含まれている場合、トランスフォーメーション
スレッドを、グリッド内の複数のノードに分散できます。これらのトランスフォーメーシ
ョンスレッドに単一のデータキャッシュとインデックスキャッシュを作成するには、ルー
トディレクトリとキャッシュディレクトリが、グリッド内のノードすべてで同じディレク
トリを指していることを確認します。
Integration Serviceによって、共有ディレクトリにルックアップトランスフォーメーショ
ンのキャッシュが作成される場合、最初のパーティショングループにキャッシュが構築さ
れます。そして、後続のパーティショングループによってこのキャッシュが使用されま
す。 ルックアップトランスフォーメーションキャッシュファイルに共有ディレクトリを設
定しないと、個別のノード上にある各サービスプロセスは、データベースまたはソースフ
ァイルからデータをフェッチしてキャッシュを作成します。ソースデータが頻繁に変更さ
れる場合、個別のノードで作成された各キャッシュが矛盾することがあります。
関連項目:
¨ 「セッションのキャッシュ」
(312ページの)
グリッドの接続とリカバリ
グリッド上でワークフローまたはセッションを実行する場合、サービスプロセスとDTMプロ
セスは、異なるノード上で実行されます。ネットワーク障害が発生すると、個別のノード
グリッドの接続とリカバリ
205
上で実行されている各プロセス間の接続が失われることがあります。サービスが予期せず
シャットダウンすることがあります。あるいは、ワークフローまたはセッションの実行中
にIntegration Serviceまたはサービスプロセスを無効にできます。これらの状況での
Integration Serviceのフェイルオーバーおよびリカバリの動作は、サービスプロセスが無
効にされたか、シャットダウンしたか、接続が失われたかによって異なります。 リカバリ
動作は、以下の要素によっても異なります。
¨ 高可用性オプション。 高可用性を使用している場合、ノードまたはサービスがシャッ
トダウンすると、ワークフローは別のノードにフェイルオーバーされます。高可用性を
使用していない場合、別のノードでワークフローを手動で再起動すればリカバリできま
す。
¨ リカバリ戦略。 エラー発生時にサスペンド状態にするようにワークフローを設定でき
ます。ワークフロー内のタスクにリカバリ戦略を設定できます。ワークフローが一時停
止する場合、リカバリ動作は、ワークフロー内のタスクごとに設定したリカバリ戦略に
よって異なります。
¨ シャットダウンモード。 Integration Serviceまたはサービスプロセスを無効にした場
合、サービスが、サービス上で実行されるプロセスを完了、強制終了、または停止する
ように指定できます。 Integration Serviceを無効にするか、サービスプロセスを無効
にするかで、動作が異なります。また、マスタサービスプロセスを無効にするか、
Worker Serviceプロセスを無効にするかでも動作が異なります。Integration Service
またはサービスプロセスも、予期せずシャットダウンすることがあります。この場合、
フェイルオーバーとリカバリ動作は、シャットダウンするサービスプロセスと設定済み
リカバリ戦略により異なります。
¨ 実行モード。 グリッド上でワークフローが実行される場合、Integration Serviceは、
別のノード上でワークフローとタスクがリカバリできます。 グリッド上でセッション
が実行される場合、再開リカバリ戦略を設定できません。
¨ 操作モード。Integration Serviceがセーフモードで実行されている場合、セッション
およびワークフローでリカバリは無効になっています。
注: Integration Serviceがグリッド内で実行されている場合は、セーフモードでフェイ
ルオーバーするように設定することはできません。
グリッド上で実行するためのワークフローま
たはセッションの設定
グリッド上でセッションまたはワークフローを実行する前に、グリッドを複数のノードに
割り当て、Integration Serviceはグリッド上で実行するように設定する必要があります。
Administratorツールで、グリッドの作成とIntegration Serviceの割り当てを行います。
ドメイン管理者でこれらの設定を確認することが必要になる場合があります。
グリッド上でワークフローまたはセッションを実行するには、以下のプロパティおよび設
定を使用します。
¨ ワークフロープロパティ。 ワークフロープロパティの[全般]タブで、ワークフロー
を実行するIntegration Serviceを割り当てます。 グリッド上で実行するように
Integration Serviceが設定されていることを確認します。
206
章 12: グリッド処理
¨ セッションプロパティ。 グリッド上でセッションを実行するには、セッションプロパ
ティの[設定オブジェクト]タブで、グリッド上でセッションを実行できるようにしま
す。
¨ リソース要件。 セッション、コマンド、定義済みイベント待ちタスクの[全般]タブ
で、リソース要件を設定します。
グリッド上で実行するためのワークフローまたはセッ
ションの設定に関するルールおよびガイドライン
グリッドで実行するようにセッションまたはワークフローを設定する際には、以下のルー
ルおよびガイドラインを使用します。
¨ グリッドでセッションを実行するには、オペレーティングシステムとビットモードがグ
リッドの各ノードで同一であることを確認します。 ノードが異なるオペレーティング
システムまたはビットモードで動作している場合、セッションはそのグリッドで実行で
きない場合があります。
¨ サービスプロセス変数をオーバーライドする場合には、Integration Serviceが、入力
ファイル、キャッシュ、ログ、ストレージ、および一時ディレクトリ、およびソースと
ターゲットファイルディレクトリにアクセスできることを確認します。
¨ セッション、コマンド、定義済みイベント待ちタスクが特定のノードで実行することを
確認するには、Integration Serviceがリソースをチェックしてタスクにリソース要件
を指定するように設定します。
¨ マッピングオブジェクトのセッションスレッドが特定のノードで実行することを確認す
るには、Integration Serviceがリソースをチェックしてそのオブジェクトにリソース
要件を指定するように設定します。
¨ キャッシュファイルを作成するセッションを実行する場合、共有場所を使用するように
ルートディレクトリとキャッシュディレクトリを設定して、キャッシュファイル間での
一貫性を確認します。
¨ ジョイナトランスフォーメーションでパーティションポイントを追加し、このトランス
フォーメーションが1:nのパーティション化として設定されている場合、Integration
Serviceが、共有場所内にキャッシュを構築することを確認します。 明細パイプライン
用のキャッシュを共有する必要があります。
¨ ルックアップトランスフォーメーションでパーティションポイントを追加し、パーティ
ションタイプがハッシュ自動キーでない場合、Integration Serviceが、共有場所内に
キャッシュを構築することを確認します。
¨ 動的パーティションを使用するセッションを実行して、グリッド内のノード全体にセッ
ションスレッドを分散する場合は、セッション用に動的パーティション化を設定して
「グリッドのノード数に基づく」方法を使用します。
¨ デバッグセッションはグリッド上で実行できません。
¨ グリッド上で実行するセッションでは、レジュームリカバリ戦略を設定できません。
¨ 実行に時間がかかるセッションを使用する場合、グリッド上で実行するようにセッショ
ンを設定します。
¨ 複数のコンカレントセッションを使用している場合、グリッド上で実行するようにワー
クフローを設定します。
グリッド上で実行するためのワークフローまたはセッションの設定
207
¨ グリッド上で永続プロファイルセッションを実行できますが、グリッド上で一時プロフ
ァイルセッションを実行することはできません。
¨ シーケンスジェネレータトランスフォーメーションを使用する場合、キャッシュされる
値の数を増加して、マスタおよびワーカDTMプロセスとリポジトリ間で必要な通信の回
数を減らします。
¨ グリッド上でワークフローまたはセッションを実行する場合にログビューアが必ずログ
イベントを正確に順序付けることができるように、時間同期化ソフトウェアを使用し
て、グリッドのノードが確実に同期化された日時を使用するようにします。
¨ Windows環境でワークフローが[E-Mail]タスクを使用する場合、[E-Mail]タスクを
確実に実行できるように、各ノードで同じMicrosoft Outlookプロファイルを設定しま
す。
208
章 12: グリッド処理
第 13 章
ロードバランサ
この章では、以下の項目について説明します。
¨ ロードバランサの概要, 209 ページ
¨ ワークフローへのサービスレベルの割り当て, 210 ページ
¨ タスクへのリソースの割り当て, 210 ページ
ロードバランサの概要
ロードバランサによって、ノード上で実行されているIntegration Serviceプロセスにタス
クがディスパッチされます。 ワークフローを実行する場合、ロードバランサによって、ワ
ークフロー内のセッション、コマンド、定義済みイベント待ちタスクがディスパッチされ
ます。 Integration Serviceがリソースをチェックするように設定されている場合、ロー
ドバランサによって、タスク要件とリソース可用性が一致し、タスクを実行するのに最適
なノードが特定されます。 単一のノードまたは複数ノード全体にタスクをディスパッチす
る場合があります。
タスクを実行できるノードを特定するために、ロードバランサではタスクが必要とするリ
ソースを各ノードで使用可能なリソースと一致させます。 ロードバランサにより、タスク
を受け取った順序でタスクがディスパッチされます。ディスパッチするセッションタスク
およびコマンドタスクの数が、Integration Serviceがその時点で実行できる数を超えてい
る場合、ロードバランサはそのタスクをディスパッチキューに入れます。 ノードが利用可
能になったとき、キューから待機しているタスクは、ロードバランサにより、ワークフロ
ーのサービスレベルによって決定される順序でディスパッチされます。
Workflow Managerを使用して、リソースおよびサービスレベルを割り当てます。以下のタ
スクを実行できます。
¨ サービスレベルの割り当て。ワークフローにサービスレベルを割り当てます。 サービ
スレベルでは、ディスパッチを待機しているワークフロータスク間の優先度が設定され
ます。
¨ リソースの割り当て。タスクにリソースを割り当てます。 セッション、コマンド、お
よび定義済みのイベント待ちの各タスクは、成功させるためにPowerCenterリソースを
必要とします。 Integration Serviceがリソースをチェックするように設定されている
場合、ロードバランサではリソースが利用可能になっているノードにタスクをディスパ
ッチします。
209
ワークフローへのサービスレベルの割り当て
サービスレベルによって、ロードバランサがディスパッチキューからタスクをディスパッ
チする順序が決定します。 複数のタスクがディスパッチを待機している場合、ロードバラ
ンサによって、優先度の高いタスクの後に優先度の低いタスクがディスパッチされます。
Administratorツールでサービスレベルを作成し、ディスパッチ優先度を設定します。
ワークフロープロパティの[全般]タブで、サービスレベルをワークフローに割り当てま
す。
タスクへのリソースの割り当て
PowerCenterリソースとは、タスクを成功させるためにタスクが必要とするデータベース接
続、ファイル、ディレクトリ、ノード名、およびオペレーティングシステムのタイプのこ
とです。 ロードバランサでは、リソースを使用しタスクをディスパッチできます。
Integration Serviceが、グリッド上で実行するように設定されていない場合、またはリソ
ースをチェックするように設定されていない場合、リソース要件はロードバランサに無視
されます。 そのノード上で実行されているマスタIntegration Serviceプロセスにすべて
のタスクがディスパッチされます。
Integration Serviceがグリッド上で実行されている場合、およびリソースをチェックする
ように設定されている場合、ロードバランサではリソースを使用しタスクをディスパッチ
します。 Integration Serviceではワークフローのタスクが必要とするリソースをグリッ
ド内の各ノードで使用できるリソースと一致させ、どのノードがタスクを実行できるか判
断します。 ロードバランサによって、セッション、コマンド、および定義済みのイベント
待ちの各タスクが、使用可能なリソースを持つノードに分散されます。 例えば、セッショ
ンにより予約語ファイルのファイルリソースが必要な場合、ロードバランサによって、こ
のセッションが、このファイルにアクセスできるノードにディスパッチされます。 必須リ
ソースが利用可能のノードをIntegration Serviceが特定できない場合、タスクは失敗しま
す。
Administratorツールでは、各ノードで使用可能なリソースを定義します。 リソースに
は、定義済みリソースとユーザー定義リソースがあります。定義済みリソースには、ノー
ドで使用できる接続、ノード名、およびオペレーティングシステムのタイプが含まれてい
ます。ユーザー定義リソースには、ファイル/ディレクトリリソースおよびカスタムリソー
スが含まれています。
タスクのプロパティでは、PowerCenterリソースを、これらのリソースを必要とする再利用
不可能なタスクに割り当てます。 再利用可能なタスクにリソースを割り当てることはでき
ません。
210
章 13: ロードバランサ
以下の表に、リソースタイプと、リソースタイプに割り当て可能なリポジトリオブジェク
トを一覧表示します。
リソース
タイプ
定義済み/
リソースを使用するリポジトリオブジェクト
カスタム
ユーザー
定義
[セッション]、[コマンド]、および定義済みの
[Event Wait]タスクのインスタンス、およびセッ
ション内のすべてのマッピングオブジェクト。
ファイル/
ディレク
トリ
ユーザー
定義
[セッション]、[コマンド]、および定義済みの
[Event Wait]タスクのインスタンス、およびセッ
ション内の次のマッピングオブジェクト。
- ソース修飾子
- アグリゲータトランスフォーメーション
- カスタムトランスフォーメーション
- エクスターナルプロシージャトランスフォーメー
ション
- ジョイナトランスフォーメーション
- ルックアップトランスフォーメーション
- ソータトランスフォーメーション
- カスタムトランスフォーメーション
- Javaトランスフォーメーション
- HTTPトランスフォーメーション
- SQLトランスフォーメーション
- 共有体トランスフォーメーション
- ターゲット
ノード名
定義済み
[セッション]、[コマンド]、および定義済みの
[Event Wait]タスクのインスタンス、およびセッ
ション内のすべてのマッピングオブジェクト。
オペレー
ティング
システム
タイプの
タイプ
定義済み
[セッション]、[コマンド]、および定義済みの
[Event Wait]タスクのインスタンス、およびセッ
ション内のすべてのマッピングオブジェクト。
ユーザー
定義
リポジトリオブジェクトに適用されないリソースタイプを割り当てようとすると、
Workflow Managerは、以下のエラーメッセージを表示します。
The selected resource cannot be applied to this type of object. Please select a different resource.
Workflow Managerにより、接続リソースが割り当てられます。 リレーショナル、FTP、ま
たは外部ローダー接続を使用する場合は、Workflow Managerによって接続リソースが、セ
ッションインスタンス内のソース、ターゲット、およびトランスフォーメーションに割り
当てられます。 Workflow Managerでは接続リソースを手動で割り当てることができませ
ん。
リソースをタスクインスタンスに割り当てるには:
1.
Worklet DesignerまたはWorkflow Designerでタスクプロパティを開きます。
[Event Wait]タスクの場合、リソースを割り当てることができるのは、タスクが定
義済みのイベントを待機している場合に限ります。
タスクへのリソースの割り当て
211
212
2.
[全般]タブの[編集]をクリックします。
3.
[リソースの編集]ダイアログボックスの[追加]をクリックして、リソースを追加
します。
4.
[リソースの選択]ダイアログボックスで、リソースを割り当てるオブジェクトを選
択します。[リソース]リストに、Integration Serviceを実行するノードで使用で
きるリソースが表示されます。
5.
割り当てるリソースを選択した後、[選択]をクリックします。
6.
[リソースの編集]ダイアログボックスで[OK]をクリックします。
章 13: ロードバランサ
第 14 章
ワークフロー変数
この章では、以下の項目について説明します。
¨ ワークフロー変数の概要, 213 ページ
¨ 定義済みワークフロー変数, 214 ページ
¨ ユーザー定義ワークフロー変数, 219 ページ
¨ ワークレット変数の使用, 223 ページ
¨ ワークレットでの変数値の割り当て, 224 ページ
ワークフロー変数の概要
変数を作成してワークフロー内で使用すると、値を参照したり情報を記録したりできま
す。例えば、[ディシジョン]タスク内で変数を使用して、直前のタスクが正常に実行さ
れたかどうかを判定するとします。直前のタスクが正常に実行されたと判定された場合
は、次のタスクを実行できます。直前のタスクが正常に実行されたと判定されなかった場
合は、ワークフローを停止することができます。
以下のタイプのワークフロー変数を使用します。
¨ 定義済みワークフロー変数。 Workflow Managerによって、ワークフロー内のタスク用
に定義済みワークフロー変数が提供されます。
¨ ユーザー定義ワークフロー変数。ワークフローを作成する際に、ユーザー定義ワークフ
ロー変数を作成します。
以下のタイプのタスクを設定する際に、ワークフロー変数を使用します。
¨ 割り当てタスク。 ユーザー定義のワークフロー変数に値を割り当てるために、割り当
てタスクを使用します。例えば、カレント値に1を加えるように変数を設定すること
で、ユーザー定義のカウンタ変数を増やすことができます。
¨ ディシジョンタスク。 ディシジョンタスクによって、Integration Serviceでどのよう
にワークフローが実行されるか決定されます。例えば、最初のセッションが正常に終了
した場合のみ2番目のセッションを実行するために、ステータス変数が使用されます。
¨ リンク。リンクによって各ワークフロータスクが接続されます。 ワークフローにブラ
ンチを作成するために、リンクでワークフロー変数を使用します。例えば、ディシジョ
ンタスクの後に、判定条件が真に評価された場合のリンクと偽に評価された場合のリン
クを作成することができます。
213
¨ タイマータスク。タイマータスクによって、Integration Serviceでワークフロー内の
次のタスクがいつ実行すれるか指定されます。 Integration Serviceによって次のタス
クの実行が開始される時刻を指定するには、ユーザー定義の日付/時刻変数を使用しま
す。
変数を使用する式を作成するには、式エディタを使用します。式を作成するときは、[組
み込み]タブで組み込み変数を選択できます。ユーザー定義変数は、[ユーザー定義]タ
ブで選択できます。[関数]タブには、ワークフロー変数といっしょに使用する関数が含
まれます。ポイントアンドクリック方法を使用して、変数を使用する式を入力します。
ユーザー定義ワークフロー変数および組み込みワークフロー変数を使用した式を作成する
には、以下のキーワードを使用します。
¨ AND
¨ OR
¨ NOT
¨ TRUE
¨ FALSE
¨ NULL
¨ SYSDATE
定義済みワークフロー変数
ワークフローごとに一式の組み込み変数があり、それらを使ってワークフローやタスクの
状況を評価します。以下のタイプの組み込みワークフロー変数を使用します。
¨ タスク固有の変数。Workflow Managerにより、ワークフロー内の各タスクに対し、タス
ク固有の変数のセットが提供されます。 リンク条件にタスク固有の変数を使用して、
ワークフローの実行中にIntegration Serviceがたどるパスを制御します。Workflow
Managerは、式エディタ内のタスク名の下にタスク固有の変数をリストします。
¨ 組み込み変数。ワークフロー内の組み込み変数を使用して、ランタイム情報またはシス
テム情報(フォルダ名、Integration Service名、システム日付、ワークフロー開始時
刻など)を返します。 Workflow Managerでは、式エディタの組み込みノードの下に組
み込み変数が一覧表示されます。
ヒント: Integration Serviceでログファイルのエラー重要度レベルを、[トレース]
に設定した場合、ワークフローログに、ワークフロー変数の値が表示されます。 この
ロギングレベルは、トラブルシューティングの場合にのみ使用されます。
214
章 14: ワークフロー変数
以下の表に、Workflow Managerで使用可能なタスク固有のワークフロー変数を一覧表示し
ます。
タスク固有
の
説明
タスク
タイプ
データ
ータイ
プ
判定条件式の評価結果。
ディシ
ジョン
Integer
すべて
のタス
ク
日付/時
刻
すべて
のタス
ク
Integer
すべて
のタス
ク
Nstring
セッシ
ョン
Integer
セッシ
ョン
Nstring
変数
Condition
タスクが失敗した場合、Workflow Manager
は、ConditionにNULLを設定したままにし
ます。
構文の例:
$Dec_TaskStatus.Condition = <TRUE | FALSE | NULL |
any integer>
EndTime
関連タスクが終了した日付および時刻。精
度は秒までです。
構文の例:
$s_item_summary.EndTime > TO_DATE('11/10/2004
08:13:25')
ErrorCode
関連タスクに対して最後に出力されたエラ
ーコード。エラーがない場合、
Integration Serviceは、タスクが完了し
たときにErrorCodeを0に設定します。
構文の例:
$s_item_summary.ErrorCode = 24013
注: タスクが常に失敗し、この最終エラ
ーメッセージが表示される場合に、この変
数を使用する場合があります。
ErrorMsg
関連タスクに対して最後に出力されたエラ
ーメッセージ。
エラーがない場合、Integration Service
は、タスクが完了したときにErrorMsgを空
の文字列に設定します。
構文の例:
$s_item_summary.ErrorMsg = 'PETL_24013 Session run
completed with failure
Nstring型の変数は、最大で600文字の長さ
を持つことができます。
注: タスクが常に失敗し、この最終エラ
ーメッセージが表示される場合に、この変
数を使用する場合があります。
FirstErrorC
ode
セッションにおける最初のエラーメッセー
ジのエラーコード。
エラーがない場合、Integration Service
は、セッションが完了したときに
FirstErrorCodeを0に設定します。
構文の例:
$s_item_summary.FirstErrorCode = 7086
FirstErrorM
sg
セッションにおける最初のエラーメッセー
ジ。
定義済みワークフロー変数
215
タスク固有
の
説明
タスク
タイプ
データ
ータイ
プ
すべて
のタス
ク
Integer
セッシ
ョン
Integer
セッシ
ョン
Integer
すべて
のタス
ク
日付/時
刻
すべて
のタス
ク
Integer
変数
エラーがない場合、Integration Service
は、タスクが完了したときに
FirstErrorMsgを空の文字列に設定しま
す。
構文の例:
$s_item_summary.FirstErrorMsg = 'TE_7086
Tscrubber: Debug info… Failed to evalWrapUp'
Nstring型の変数は、最大で600文字の長さ
を持つことができます。
PrevTaskSta
tus
Integration Serviceが前回実行したワー
クフローのタスクの状態。次の状態があり
ます。
- ABORTED
- FAILED
- 停止
- SUCCEEDED
前回のタスク状態を評価する式を記述する
ときに、上記のキーワードを使用します。
構文の例:
$Dec_TaskStatus.PrevTaskStatus = FAILED
SrcFailedRo
ws
Integration Serviceがソースからの読み
込みに失敗した行の合計数。
構文の例:
$s_dist_loc.SrcFailedRows = 0
SrcSuccessR
ows
ソースからの読み込みが成功した行の合計
数。
構文の例:
$s_dist_loc.SrcSuccessRows > 2500
StartTime
関連タスクが開始された日付および時刻。
精度は秒までです。
構文の例:
$s_item_summary.StartTime > TO_DATE('11/10/2004 08:
13:25')
ステータス
ワークフロー内の前回実行タスクの状態。
次の状態があります。
- ABORTED
- 無効
- FAILED
- NOTSTARTED
- STARTED
- 停止
- SUCCEEDED
現在のタスク状態を評価する式を記述する
ときに、上記のキーワードを使用します。
構文の例:
$s_dist_loc.Status = SUCCEEDED
216
章 14: ワークフロー変数
タスク固有
の
説明
タスク
タイプ
データ
ータイ
プ
Integration Serviceがターゲットへの書
き込みに失敗した行の合計数。
セッシ
ョン
Integer
セッシ
ョン
Integer
セッシ
ョン
Integer
変数
TgtFailedRo
ws
構文の例:
$s_dist_loc.TgtFailedRows = 0
TgtSuccessR
ows
ターゲットに正常に書き込まれた行の合計
数。
構文の例:
$s_dist_loc.TgtSuccessRows > 0
TotalTransE
rrors
トランスフォーメーションエラーの合計
数。
構文の例:
$s_dist_loc.TotalTransErrors = 5
Statusを除くすべての組み込みワークフロー変数は、デフォルト値としてNULLを持ちま
す。Integration Serviceは、ワークフロー内でまだ実行されていないタスクから組み込み
変数が検出されると、デフォルト値NULLを使用します。したがって、まだ実行されていな
いタスクに依存する式およびリンク条件は有効です。「Status」のデフォルト値は
NOTSTARTEDです。
式における定義済みワークフロー変数の使用
式にワークフロー変数を使用するときは、Integration Serviceが式を評価してTrueまたは
Falseを返します。条件がTrueと評価された場合、Integration Serviceは次のタスクを実
行します。Integration Serviceはワークフローログに以下のメッセージのようなエントリ
を書き込みます。
INFO : LM_36506 : (1980|1040) Link [Session2 --> Session3]: condition is TRUE for the expression
[$Session2.PrevTaskStatus = SUCCEEDED].
式エディタは、組み込みワークフロー変数を[組み込み]タブに表示します。Workflow
Managerでは、タスク固有の変数がタスク別にグループ化されて表示されるとともに、ビル
トイン変数が[ビルドイン]ノードに表示されます。式内で変数を使用するには、目的の
変数をダブルクリックします。式エディタは、タスク固有の変数を以下の形式で[式]フ
ィールドに表示します。
$<TaskName>.<predefinedVariable>
ワークフロー内の条件の評価
判定条件式の結果を評価するには、リンク条件の条件を使用します。
定義済みワークフロー変数
217
以下の図に、条件を使用したリンク条件のあるワークフローを示します。
図 4. 条件変数の例
FileExistディシジョンタスクの判定条件式は、$Check_for_file.Status = SUCCEEDEDで
す。 マッピングには次の2つのリンク条件が含まれます。$FileExists.Condition = False
によって電子メールタスクが実行され、$FileExists.Condition = Trueによってコマンド
タスクProcess_the_Fileが実行されます。
ワークフローを実行する際に、Integration Serviceはリンク条件を評価し、FileExists
ディシジョンタスクの判定条件式に基づいた値を返します。 Integration Serviceでは、
Check_for_Fileタスクの結果に応じて、電子メールタスクまたはコマンドタスクが実行さ
れます。
ワークフロー内のタスクステータスの評価
ワークフロー内の前回実行タスクの状態をテストするには、リンク条件のStatusを使用し
ます。
以下の図に、ステータスを使用したリンク条件のあるワークフローを示します。
図 5. ステータス変数の例
ワークフローを実行するときに、Integration Serviceはリンク条件$Session2.Status =
SUCCEEDEDを評価し、セッション2のステータスに基づいた値を返します。
ワークフロー内の前回実行のタスクステータスの評価
Integration Serviceが前回実行したワークフロー内のタスクの状態をテストするには、リ
ンク条件のPrevTaskStatusを使用します。
ワークフロー内のタスクを無効にする場合は、PrevTaskStatusを使用します。条件に無効
タスクを使用していない場合は、StatusとPrevTaskStatusは同じ値を返します。
218
章 14: ワークフロー変数
以下の図に、PrevTaskStatusを使用したリンク条件のあるワークフローを示します。
図 6. PrevTaskStatus変数の例
ワークフローを実行するときに、Integration Serviceは無効となったセッション2をスキ
ップします。Integration Serviceは、リンク条件$Session2.PrevTaskStatus =
SUCCEEDEDが評価されると、セッション1の状態に基づいた値を返します。
ヒント: セッション2を無効にしないと、Integration Serviceはセッション2の状態に基
づいた値を返します。セッション2を有効または無効にするときに、リンク条件を変更する
必要はありません。
ユーザー定義ワークフロー変数
ワークフロー内に変数を作成できます。ワークフロー内に自分で変数を作成した場合、変
数はそのワークフロー内でのみ有効になります。作成した変数は、そのワークフロー内の
タスクで使用します。ユーザー定義のワークフロー変数は、編集や削除が可能です。
ユーザー定義の変数は、自分で指定した条件に基づいてワークフローの判定を行う必要が
ある場合に使用します。例えば、注文データベースにデータを毎晩ロードするワークフロ
ーを作成するとします。さらに、このデータのサブセットを定期的に、ローカルの注文デ
ータベースを10回更新するごとに、本社側のデータベースにロードする必要があるとしま
す。ローカルデータベースを更新するセッションと本社のデータベースを更新するセッシ
ョンを個別に作成します。
以下の図にワークフローを示します。
図 7. ワークフロー変数を使用するワークフロー
ここで、ユーザー定義の変数を使用して、本社にある注文データベースを更新するセッシ
ョンをいつ実行するかを決定します。
ユーザー定義ワークフロー変数
219
ユーザー定義ワークフロー変数を設定するには、以下の手順を実行します。
1.
ワークフローが実行された回数を表す持続型ワークフロー変数$$WorkflowCountを作
成します。
2.
[Start]タスクと両方のセッションをワークフローに追加します。
3.
ローカル注文データベースを更新するセッションの後に[ディシジョン]タスクを配
置します。
ワークフローの実行回数が10で均等に割りきれるかどうかを確認する判定条件を設定
します。このためには、MOD関数を使用します。
4.
[割り当て]タスクを作成して、$$WorkflowCount変数を1だけ増分します。
5.
判定条件が真に評価された場合、本社側のデータベースを更新するセッションに[デ
ィシジョン]タスクをリンクします。判定条件が偽に評価された場合、[ディシジョ
ン]タスクを[割り当て]タスクにリンクします。
条件を使用してワークフロー変数を設定する場合、ワークフローを実行するたびに、ロー
カルデータベースを更新するセッションが実行されます。本社側のデータベースを更新す
るセッションは、ワークフローを10回実行するごとに実行されます。
ワークフロー変数の初期値とカレント値
理論的には、Integration Serviceは、ワークフローの実行中にワークフロー変数に関して
以下の2つの異なる値を保持します。
¨ ワークフロー変数の初期値
¨ ワークフロー変数のカレント値
初期値とは、ワークフローの開始時に変数が持つ値です。初期値には、変数のパラメータ
ファイルに定義されている値、ワークフローの前回の実行によってリポジトリに保存され
ている値、変数に対してユーザーが定義した初期値、変数のデータ型に基づくデフォルト
値などが使用されます。
Integration Serviceは、以下の順に変数の初期値を探します。
1.
パラメータファイルに定義されている値
2.
リポジトリに保存されている値(変数が持続型の場合)
3.
ユーザーによって指定されたデフォルト値
4.
データ型に基づくデフォルト値
例えば、ワークフロー内にワークフロー変数を作成してデフォルト値を入力した一方で、
その変数の値をパラメータファイルに定義していないとします。このワークフローを初め
て実行する場合、Integration Serviceは変数の初期値をユーザー定義のデフォルト値とし
て評価します。
変数を持続型として宣言した場合、Integration Serviceは、ワークフローの実行が終了し
たときにこの変数の値をリポジトリに保存します。次回同じワークフローを実行するとき
は、リポジトリに保存されている値が変数の初期値として評価されます。
変数が非持続型の場合、Integration Serviceは変数の値を保存しません。次回同じワーク
フローを実行するときは、ユーザーによって指定されたデフォルト値が変数の初期値とし
て評価されます。
220
章 14: ワークフロー変数
リポジトリに保存されている値をワークフローの実行前に上書きしたい場合は、パラメー
タファイルにその変数の値を定義する必要があります。パラメータファイルにワークフロ
ー変数の値が定義されている場合、Integration Serviceは、リポジトリに保存されている
値や、変数に設定されている初期値ではなく、この値を使用します。
カレント値とは、ワークフローの進行にともなって変数に保持される値です。ワークフロ
ーの開始時の変数のカレント値は初期値と等しくなります。変数の値を更新する
[Assignment]タスクを作成している場合は、ワークフローの進行に合わせて変数の値が
変化します。
変数が持続型の場合、Integration Serviceは、ワークフローの実行が正常終了したときに
変数のカレント値をリポジトリに保存します。ワークフローが完了できなかった場合、
Integration Serviceは、リポジトリ内の変数の値を更新しません。
Integration Serviceは、ワークフロー変数ごとに、リポジトリに保存された値をワークフ
ローログに記録します。
データタイプのデフォルト値
他の方法によって変数の初期値を特定できない場合、Integration Serviceは変数のデータ
タイプに基づいてそのデフォルト値を使用します。
以下の表に、ユーザー定義ワークフロー変数の各データタイプのデフォルト値を示しま
す。
表 4. ユーザー定義ワークフロー変数の各データタイプのデフォルト値
データータイプ
Workflow Managerのデフォルト値
日付/時刻
1/1/1753 00:00:00.000000000 A.D.
ダブル
0
Integer
0
Nstring
空の文字列
ユーザー定義ワークフロー変数の作成
ワークフローのワークフロー変数は、ワークフロープロパティで作成することができま
す。
ワークフロー変数を作成するには:
1.
Workflow Designerで、新しいワークフローを作成するか、または既存のワークフロ
ーを編集します。
2.
[変数]タブを選択します。
3.
[追加]をクリックします。
ユーザー定義ワークフロー変数
221
4.
以下の表に示す情報を入力し、[OK]をクリックします。
フィールド
説明
名前
変数名。正しい形式は$$VariableNameです。ワークフロー
変数名は大文字/小文字を区別しません。
ユーザー定義ワークフロー変数に単独のドル記号($)を
使用してはなりません。単独のドル記号($)は、組み込
みワークフロー変数用に予約されています。
データ型
変数のデータ型。以下のデータ型の中から選択できます。
- 日付/時刻
- ダブル
- Integer
- Nstring
パーシステン
ト
変数が持続型かどうか。ワークフローの実行の間で変数の
値を保持したい場合は、このオプションを有効にします。
デフォルト値
変数のデフォルト値。パラメータファイルで変数に値を設
定しておらず、リポジトリに値が格納されていない場合、
セッション中、Integration Serviceは変数にこの値を使
用します。
Date/Time型の変数で使用できる形式は、以下のとおりで
す。
- MM/DD/RR
- MM/DD/YYYY
- MM/DD/RR HH24:MI
- MM/DD/YYYY HH24:MI
- MM/DD/RR HH24:MI:SS
- YYYY/MM/DD HH24:MI:SS
- MM/DD/RR HH24:MI:SS.MS
- MM/DD/YYYY HH24:MI:SS.MS
- MM/DD/RR HH24:MI:SS.US
- MM/DD/YYYY HH24:MI:SS.US
- MM/DD/RR HH24:MI:SS.NS
- MM/DD/YYYY HH24:MI:SS.NS
以下の区切り記号を使用することができます。ダッシュ
(-)、スラッシュ(/)、バックスラッシュ(\\uff09、
コロン(:)、ピリオド(.)、およびスペース。
Integration Serviceでは、余分な空白は無視されます。
年または時間の「HH12」形式には、1桁または3桁の値を使
用できません。
Nstring型の変数は、最大で600文字の長さを持つことがで
きます。
222
デフォルト値
= NULL
変数のデフォルト値がNULLかどうか。デフォルト値がNULL
の場合、このオプションを有効にします。
説明
変数に関する説明。
5.
新しいワークフロー変数のデフォルト値を検査するには、[検査]をクリックしま
す。
6.
[適用]をクリックして新しいワークフロー変数を保存します。
章 14: ワークフロー変数
7.
[OK]をクリックします。
ワークレット変数の使用
ワークレット変数はワークフロー変数に似ています。ワークレットは、タスクと同じ定義
済み変数のセットを持ちます。また、ユーザー定義のワークレット変数を作成することも
できます。ユーザー定義のワークフロー変数と同様に、ユーザー定義のワークレット変数
には、持続型と非持続型があります。
永続ワークレット変数
ユーザー定義のワークレット変数には、持続型と非持続型があります。持続型ワークレッ
ト変数を作成するには、変数を作成するときに[パーシステント]を選択します。永続ワ
ークレット変数を作成した場合、ワークレット変数は、次回Integration Serviceによって
親ワークフローでワークレットが実行されるときも保持されます。
たとえば、持続型変数を持つワークレットがあるとします。ワークレットを2回実行するた
めに、ワークフロー内にワークレットのインスタンスが2つあるとします。ワークレットの
1つ目のインスタンスはWorklet1、2つ目のインスタンスはWorklet2です。
ワークフローの実行時、持続型ワークレット変数はWorklet1での値を保持してそれが
Worklet2における初期値となります。Integration ServiceでWorklet2が実行された後、
Integration Serviceによって永続変数の値がリポジトリに保持され、次回このワークフロ
ーを実行するときにこの値が使用されます。
ワークレット変数は、同じワークフローが実行されるときだけその値を持続します。ワー
クレット変数は、別のワークフローにあるワークレットのインスタンスが使用された場合
はその値を持続しません。
初期値のオーバーライド
それぞれのワークレットインスタンスごとに、ワークフロー変数をワークレット変数に割
り当てることで、ワークレット変数の初期値を上書きすることができます。
ワークレット変数の初期値を上書きするには:
1.
Workflow Designerの作業領域内でワークレットのインスタンスをダブルクリックしま
す。
2.
[変数]タブで、プリワークレット変数の割り当てで[追加]ボタンをクリックしま
す。
3.
[ユーザー定義ワークレット変数]フィールドの右端のボタンをクリックし、ワーク
レット変数を選択します。
4.
[適用]をクリックします。
このワークレットインスタンス内のワークレット変数には、初期値として選択された
ワークフロー変数が含まれます。
ワークレット変数の使用
223
ワークレット変数の使用に関するルールおよびガイド
ライン
ワークレット変数を使用する際には、以下のルールおよびガイドラインを使用します。
¨ ワークレットで親ワークフロー変数を使用することはできません。
¨ ワークフロー変数の値をワークレット変数に割り当てて初期化することができます。
¨ 親ワークフローでユーザー定義のワークレット変数を使用することはできません。
¨ ワークフローの他のタスクに定義済みの変数を使えるのと同様に、定義済みのワークレ
ット変数を親ワークフローで使用することはできます。
ワークレットでの変数値の割り当て
ワークレットの実行前または実行後に変数の値を更新できます。この機能により、1つのワ
ークレットから同じワークフロー内の別のワークレット、または親ワークレットに情報を
渡すことができます。たとえば、同じカウンタをインクリメントする必要がある2つのワー
クレットを含むワークフローがあるとします。1つ目のワークレットでカウンタをインクリ
メントし、更新後のカウンタ値を2つ目のワークレットに渡し、そのカウンタを再び2つ目
のワークレットでインクリメントすることができます。
また、情報をワークレットから再利用不可能なセッションに、あるいは再利用不可能なセ
ッションからワークレットに渡すこともできます。この場合、ワークレットとセッション
が共に同じワークフローあるいは親ワークレットであることが条件です。再利用可能なワ
ークレットと再利用不可能なワークレット内の変数を割り当てることができます。
ワークレットの実行前に変数を割り当てるか、またはワークレットの実行後に変数を割り
当てるかによって、異なる変数値を更新できます。ワークレットの実行前または実行後に
次のタイプの変数を更新できます。
¨ ワークレット実行前の変数割り当て。ワークレットの実行前にユーザー定義のワークレ
ット変数を更新できます。 これらのワークレット変数に、親ワークフロー変数または
ワークレット変数の値、あるいはワークフローまたは親ワークレットの他のタスクから
のマッピング変数の値を割り当てることができます。
ワークレットの親からの値でワークレット変数を更新できます。したがって、ワークレ
ットがワークフロー内の別のワークレットである場合、そのワークフロー変数の値では
なく、親ワークレット変数からの値を割り当てることができます。
¨ ワークレット実行後の変数割り当て。ワークレットの完了後、親ワークフローまたはワ
ークレット変数を更新できます。 これらの変数に、ユーザー定義のワークレット変数
の値を割り当てることができます。
ワークレットを編集するときには[変数]タブで変数を割り当てます。
ワークレット間での変数値の受け渡し
1つのワークレットから同じワークフロー内の後続ワークレットまたは親ワークレットに値
を渡すために、ワークレット内の変数値を割り当てます。例えば、ワークフローに
wklt_CreateCustListとwklt_UpdateCustOrdersの2つのワークレットが含まれているとし
224
章 14: ワークフロー変数
ます。Worklet wklt_UpdateCustOrdersは、wklt_CreateCustListで更新されたワークレッ
ト変数の値を使用する必要があります。
以下の図にワークフローを示します。
wklt_CreateCustListからwklt_UpdateCustOrdersにワークレット変数を渡すには、以下の
手順を実行します。
1.
例えば、ワークレット変数$$URLString1を使用するようにワークレット
wklt_CreateCustListを設定します。
2.
例えば、ワークレット変数$$URLString2を使用するようにワークレット
wklt_UpdateCustOrdersを設定します。
3.
例えば、ワークフロー変数$$PassURLStringを使用するようにワークフローを設定し
ます。
4.
ワークレットの完了後、ワークレット変数$$URLString1の値を、ワークフロー変数$
$PassURLStringに割り当てるようにワークレットwklt_CreateCustListを設定しま
す。
5.
ワークレットを開始する前に、ワークフロー変数 $$PassURLStringの値を、ワークレ
ット変数$$URLString2に割り当てるようにワークレットwklt_UpdateCustOrdersを設
定します。
変数割り当ての設定
ワークレットを編集するときには[変数]タブで変数を割り当てます。ワークレットの実
行前または実行後に、次のタイプの変数に値を割り当てます。
¨ ワークレット実行前の変数割り当て。ユーザー定義のワークレット変数を、親ワークフ
ローまたはワークレット変数の値、あるいはワークフロー内の他のタスクからのマッピ
ング変数またはこのワークレットの前に実行している親ワークレットの値で更新しま
す。
¨ ワークレット実行後の変数割り当て。親ワークフローおよびワークレット変数を、ユー
ザー定義ワークレット変数の値で更新します。
ワークレット内の変数を割り当てるには:
1.
変数を割り当てるワークレットを編集します。
2.
[変数]タブをクリックします。
3.
変数割り当てタイプを選択します。
¨ ワークレット実行前の変数割り当て。ワークレットの実行前にユーザー定義のワー
クレット変数に値を割り当てます。
¨ ワークレット実行後の変数割り当て。ワークレットの完了後に親ワークフローおよ
びワークレット変数に値を割り当てます。
4.
変数割り当てフィールドの[編集]ボタンをクリックします。
ワークレットでの変数値の割り当て
225
5.
プリワークレット変数またはポストワークレット変数の割り当て領域で、追加ボタン
をクリックして、変数割り当て文を追加します。
6.
[ユーザー定義ワークレット変数]フィールドおよび[親ワークフロー/ワークレット
変数]フィールドのオープンボタンをクリックして、値を読み込む変数または値を割
り当てる変数を選択します。プリワークレット変数の割り当てでは、これらのフィー
ルドにパラメータと変数名を入力する場合があります。Workflow Managerでは、パラ
メータと変数名は検査されません。
Workflow Managerは、割り当て文の右側から割り当て文の左側の変数に値を割り当て
ます。したがって、変数割り当て文が“$$SiteURL_WFVar=$$SiteURL_WkltVar,”の場
合、Workflow Managerは$$SiteURL_WkltVar の値を$$SiteURL_WFVarに割り当てま
す。
7.
Configuring Variable AssignmentsからConfiguring Variable Assignmentsまでの
手順を繰り返して、さらに変数割り当て文を追加します。
変数割り当て文を削除するには、割り当て文のフィールドの1つをクリックして、[カ
ット]ボタンをクリックします。
8.
226
[OK]をクリックします。
章 14: ワークフロー変数
第 15 章
セッションのパラメータおよ
び変数
この章では、以下の項目について説明します。
¨ セッションパラメータに関する作業, 227 ページ
¨ セッションのマッピングパラメータおよび変数, 234 ページ
¨ セッションでのパラメータ値および変数値の割り当て, 235 ページ
セッションパラメータに関する作業
セッションパラメータは、データベース接続やソースファイルとターゲットファイルな
ど、セッションの実行ごとに変更できる値を示します。
セッションパラメータには、ユーザー定義パラメータまたは組み込みパラメータのいずれ
かがあります。セッションまたはワークフローのプロパティでユーザー定義のセッション
パラメータを使用し、パラメータファイルでその値を定義します。セッションを実行する
際は、Integration Serviceではパラメータファイル内のパラメータをセッション内のパラ
メータと一致させます。 セッションプロパティ値にパラメータファイルの値を使用しま
す。パラメータファイルでは、フォルダ名とセッション名は大文字/小文字が区別されま
す。
例えば、ログファイルにセッションログを書き込むことができます。セッションプロパテ
ィで、セッションログファイル名として$PMSessionLogFileを使用し、パラメータファイル
で$PMSessionLogFileをTestRun.txtに設定します。セッションを実行する際に、
Integration Serviceによって、TestRun.txtと名付けられたセッションログが作成されま
す。
ユーザー定義のセッションパラメータにはデフォルト値がないので、パラメータファイル
でこれらを定義する必要があります。Integration Serviceによってユーザー定義のセッシ
ョンパラメータの値が検索できない場合、セッションが失敗するか、空の文字列をデフォ
ルト値とするか、または実行時にパラメータの展開に失敗します。
pmcmdを使用してセッションを開始すると、各種パラメータファイルを使用して1つのセッ
ションを実行できます。pmcmdを使用して設定したパラメータファイルは、セッションまた
はワークフロープロパティでパラメータファイルを上書きします。
227
組み込みセッションパラメータを使用して、フォルダ名、サービス名、セッション実行統
計などのランタイム情報を取得します。組み込みセッションパラメータは、セッション実
行後のシェルコマンド、SQLコマンド、およびメールメッセージの中に使用できます。それ
らのセッションパラメータは、DesignerおよびWorkflow Managerでセッションパラメータ
を受け入れる入力フィールドに使用できます。Integration Serviceは組み込みセッション
パラメータの値を設定します。組み込みセッションパラメータ値は、パラメータファイル
内には定義することができません。これらのパラメータは、Integration Serviceでセッシ
ョンの実行時に展開されます。
以下の表に、ユーザー定義のセッションパラメータを示します。
パラメータタイ
プ
命名規則
説明
セッションログ
ファイル
$PMSessionLogFil
e
セッション実行間のセッションログの
名前を定義します。
パーティション
の数
$DynamicPartitio
nCount
セッションのパーティション数を定義
します。
ソースファイル
$InputFileName
ソースファイル名を定義します。
適切なプレフィックスを使用してパラ
メータ名を定義します。
ルックアップフ
ァイル
$LookupFileName
ルックアップファイル名を定義しま
す。
適切なプレフィックスを使用してパラ
メータ名を定義します。
ターゲットファ
イル
$OutputFileNames
拒否ファイル
$BadFileName
ターゲットファイル名を定義します。
適切なプレフィックスを使用してパラ
メータ名を定義します。
拒否ファイル名を定義します。
適切なプレフィックスを使用してパラ
メータ名を定義します。
データベース接
続
$DBConnectionNam
e
ソース、ターゲット、ルックアップ、
またはストアドプロシージャのリレー
ショナルデータベース接続を定義しま
す。
適切なプレフィックスを使用してパラ
メータに名前を付けます。
228
外部ローダー接
続
$LoaderConnectio
nName
外部ローダー接続を定義します。
FTP接続
$FTPConnectionNa
me
FTP接続を定義します。
章 15: セッションのパラメータおよび変数
適切なプレフィックスを使用してパラ
メータ名を定義します。
適切なプレフィックスを使用してパラ
メータ名を定義します。
パラメータタイ
プ
命名規則
説明
キュー接続
$QueueConnection
メッセージキューのデータベース接続
を定義します。
Name
適切なプレフィックスを使用してパラ
メータ名を定義します。
ソースまたはタ
ーゲットアプリ
ケーション接続
$AppConnectionNa
me
ソースアプリケーションおよびターゲ
ットアプリケーションへの接続を定義
します。
適切なプレフィックスを使用してパラ
メータ名を定義します。
一般のセッショ
ンパラメータ
$ParamName
他のセッションプロパティを定義しま
す。たとえば、このパラメータを使用
して、テーブルオーナー名、テーブル
名の接頭語、FTPファイルまたはディ
レクトリ名、ルックアップキャッシュ
ファイル名接頭語、またはメールアド
レスを定義できます。このパラメータ
を使用して、ソース、ルックアップ、
ターゲット、およびリジェクトファイ
ル名を定義できますが、セッションロ
グファイル名やデータベース接続は定
義できません。
適切なプレフィックスを使用してパラ
メータ名を定義します。
以下の表に、組み込みセッションパラメータを示します。
パラメータ
タイプ
命名規則
説明
フォルダ名
$PMFolderName
フォルダ名を返します。
Integratio
n Service
名
$PMIntegrationServiceName
Integration Service名を
返します。
マッピング
名
$PMMappingName
マッピング名を返します。
Repository
Service名
$PMRepositoryServiceName
リポジトリサービス名を返
します。
リポジトリ
ユーザ名
$PMRepositoryUserName
リポジトリユーザ名を返し
ます。
セッション
名
$PMSessionName
セッション名を返します。
セッションパラメータに関する作業
229
パラメータ
タイプ
命名規則
説明
セッション
実行モード
$PMSessionRunMode
セッション実行モード(ノ
ーマルまたはリカバリ)を
返します。
ソース側の
影響を受け
た行の数
$PMSourceQualifierName@numAffe
ctedRows
Integration Serviceで名
前付きSource Qualifierか
ら正常に読み込まれた行の
数が返されます。
適切なプレフィックスおよ
びサフィックスを使用して
パラメータ名を定義しま
す。
ソース側の
適用された
行の数
$PMSourceQualifierName@numAppl
iedRows
Integration Serviceで名
前付きSource Qualifierか
ら正常に読み込まれた行の
数が返されます。
適切なプレフィックスおよ
びサフィックスを使用して
パラメータ名を定義しま
す。
ソース側の
拒否された
行の数
$PMSourceQualifierName@numReje
ctedRows
Integration Serviceで名
前付きSource Qualifierか
らの読み込み中に削除され
た行の数が返されます。
適切なプレフィックスおよ
びサフィックスを使用して
パラメータ名を定義しま
す。
ソーステー
ブル名
$PMSourceName@TableName
名前付きソースインスタン
スのテーブル名が返されま
す。
適切なプレフィックスおよ
びサフィックスを使用して
パラメータ名を定義しま
す。
ターゲット
側の影響を
受けた行の
数
$PMTargetName@numAffectedRows
Integration Serviceで名
前付きターゲットインスタ
ンスに対する特定操作の影
響が及んだ行の数が返され
ます。
適切なプレフィックスおよ
びサフィックスを使用して
パラメータ名を定義しま
す。
230
章 15: セッションのパラメータおよび変数
パラメータ
タイプ
命名規則
説明
ターゲット
側の適用さ
れた行の数
$PMTargetName@numAppliedRows
Integration Serviceで名
前付きターゲットインスタ
ンスに正常に適用された行
の数が返されます。
適切なプレフィックスおよ
びサフィックスを使用して
パラメータ名を定義しま
す。
ターゲット
側の拒否さ
れた行の数
$PMTargetName@numRejectedRows
Integration Serviceで名
前付きターゲットインスタ
ンスへの書き込み中に拒否
された行の数が返されま
す。
適切なプレフィックスおよ
びサフィックスを使用して
パラメータ名を定義しま
す。
ターゲット
テーブル名
$PMTargetName@TableName
名前付きターゲットインス
タンスのテーブル名が返さ
れます。
適切なプレフィックスおよ
びサフィックスを使用して
パラメータ名を定義しま
す。
ワークフロ
ー名
$PMWorkflowName
ワークフロー名を返しま
す。
ワークフロ
ー実行ID。
$PMWorkflowRunId
ワークフロー実行IDを返し
ます。
ワークフロ
ー実行イン
スタンス名
$PMWorkflowRunInstanceName
ワークフロー実行インスタ
ンス名を返します。
適切なプレフィックスおよびサフィックスを使用してパラメータ名を定義します。 例え
ば、ソースインスタンスが「Customers」という名前の場合、ソーステーブル名を示すパラ
メータは$PMCustomers@TableNameとなります。ソース修飾子が「SQ_Customers」という名
前の場合、影響を受けた行のソース数を示すパラメータは
$PMSQ_Customers@numAffectedRowsとなります。
セッションログ名の変更
ファイルにログイベントを書き込むようにセッションを設定できます。セッションプロパ
ティで、セッションログファイルディレクトリは、デフォルトでサービスプロセス変数
$PMSessionLogDirとなります。セッションログファイル名は、デフォルトでは、
$PMSessionLogFileとなります。
セッションパラメータに関する作業
231
パラメータファイルで、$PMSessionLogFileをTestRun.txtに設定します。Administrator
ツールで、$PMSessionLogDirを \\server\infa_shared\SessLogsと定義します。 Integration
Serviceによってセッションが実行される場合、 \\server\infa_shared\SessLogsディレクトリに
TestRun.txtという名前のセッションログファイルが作成されます。
ターゲットファイルおよびディレクトリの変更
セッションのターゲットファイルとディレクトリを変更するには、セッションプロパティ
でターゲットファイルパラメータを使用します。[出力ファイル名]フィールドには、デ
ィレクトリ名とファイル名が含まれているパスを入力できます。[出力ファイル名]フィ
ールドにディレクトリを含める場合、出力ファイルディレクトリをクリアする必要があり
ます。Integration Serviceによって、出力ファイルディレクトリと出力ファイル名が連結
され、ターゲットファイルの場所が特定されます。
たとえば、セッションでファイルパラメータを使用して内部Webログと外部Webログを読み
取ります。内部Webログセッションの結果と外部Webログセッションの結果を別個の場所に
書き込むとします。
セッションのプロパティで、ターゲットファイルに$OutputFileNameと名前を付け、[出力
ファイルディレクトリ]フィールドをクリアします。パラメータファイルでは、内部Webロ
グセッションのターゲットファイルを作成するのに、$OutputFileNameを「 E:
\internal_weblogs\November_int.txt」に設定します。そのセッションが完了したら、今度は外
部Webログセッション用に$OutputFileNameを「 F:\external_weblogs\November_ex.txt」に設定し
ます。
ターゲットごとに異なるパラメータファイルを作成し pmcmdを使用すれば、特定のパラメー
タファイルでセッションを開始できます。このパラメータファイルは、セッションプロパ
ティのパラメータファイル名を上書きします。
ファイルでのソースパラメータの変更
パラメータファイルでセッションプロパティに複数のパラメータを定義し、セッションで
これらのパラメータの1つを使用できます。セッションプロパティでパラメータ名を変更
し、別のパラメータ値を指定して再度セッションを実行できます。
たとえば、パラメータファイル内に$InputFile_Productsという名前のセッションパラメー
タを作成します。パラメータ値を"products,txt"に設定します。同じパラメータファイル
内に、$InputFile_Itemsと呼ばれる別のパラメータを作成します。パラメータ値を
items.txtに設定します。
セッションプロパティでソースファイル名を$InputFile_Productsに設定すると、
Integration Serviceでproducts.txtが読み込まれます。 ソースファイル名を
$InputFile_Itemsに変更すると、Integration Serviceでitems.txtが読み込まれます。
接続パラメータの変更
ソース、ターゲット、ルックアップテーブル、またはストアドプロシージャを個別に指定
してセッションを再実行するには、接続パラメータを使用します。接続パラメータは、任
意のセッションのセッションプロパティで作成できます。パラメータで接続を参照できま
す。すべての接続セッションパラメータの名前には必ず、先頭に接頭語を指定し、その後
に任意の英数字や下線文字を付けます。
232
章 15: セッションのパラメータおよび変数
たとえば、2つのリレーショナルソースから読込むセッションを実行するとします。あるソ
ースにはデータベース接続「Marketing」を使用してアクセスし、他のソースには
「Sales」という接続でアクセスするとします。セッションプロパティで、
「$DBConnection_Source」という名前のソースデータベース接続パラメータを作成しま
す。パラメータファイル内で$DBConnection_SourceをMarketingと定義したあと、セッシ
ョンを実行します。次のセッション実行のパラメータファイルで$DBConnection_Sourceを
Salesに設定します。
ソースまたはターゲットの接続を上書きする接続パラメータを使用すれば、パラメータフ
ァイル内の接続属性を上書きすることができます。ソースインスタンスまたはターゲット
インスタンスに対して非リレーショナル接続パラメータを使用しているならば、接続属性
の上書きが可能です。パラメータファイル内に接続を定義すると、接続属性を定義する特
定のユーザー定義セッションパラメータがIntegration Serviceによって検索されます。た
とえば、$FTPConnectionMyFTPConnというFTP接続パラメータを作成し、それをパラメータ
ファイル内に定義するとします。 パラメータファイル内の次のパラメータが、
Integration Serviceによって検索されます。
¨ $Param_FTPConnectionMyFTPConn_Remote_Filename
¨ $Param_FTPConnectionMyFTPConn_Is_Staged
¨ $Param_FTPConnectionMyFTPConn_Is_Transfer_Mode_ASCII
これらのパラメータの値がいずれも定義されていない場合、接続オブジェクト用に定義さ
れた値がIntegration Serviceで使用されます。
上書き可能な接続属性は、次のテンプレートファイル内にリストされています。
<PowerCenter Installation Directory>/server/bin/ConnectionParam.prm
ランタイム情報の取得
フォルダ名、 Integration Service名、ソーステーブル名、ターゲットテーブル名などの
ランタイム情報を取得するには、組み込みセッションパラメータを使用します。組み込み
セッションパラメータは、セッション実行後のシェルコマンド、SQLコマンド、およびメー
ルメッセージの中に使用できます。それらのセッションパラメータは、Designerおよび
Workflow Managerでセッションパラメータを受け入れる入力フィールドに使用できます。
たとえば、セッション"s_UpdateCustInfo"の完了後に、セッション後の電子メールを送信
するとします。この電子メールには、ソース修飾子"SQ_Customers"およびターゲッ
ト"T_CustInfo"に関するセッション実行統計を含めます。電子メールの本文に、次のテキ
ストを入力します。
Statistics for session $PMSessionName
Integration service: $PMIntegrationServiceName
Source number of affected rows: $PMSQ_Customers@numAffectedRows
Source number of dropped rows: $PMSQ_Customers@numRejectedRows
Target number of affected rows: $PMT_CustInfo@numAffectedRows
Target number of applied rows: $PMT_CustInfo@numAppliedRows
Target number of rejected rows: $PMT_CustInfo@numRejectedRows
電子メール変数を使用して、セッション名、Integration Service名、ロードされた行数、
および拒否された行数を取得することもできます。
セッションパラメータに関する作業
233
ファイルパラメータとデータベース接続パラメータの
作成に関するルールおよびガイドライン
セッションファイルパラメータとデータベース接続パラメータは、各種ファイルとデータ
ベースに対してセッションを実行する柔軟性を提供します。
ファイルパラメータを作成する場合には、次の規則およびガイドラインに従ってくださ
い。
¨ ノードのリソースとしてパラメータファイルを定義する場合、パラメータファイルにア
クセスできるノードでIntegration Serviceがセッションを実行していることを確認し
ます。ノードのリソースを定義し、リソースをチェックするようにIntegration
Serviceを設定し、そのリソースを要求するようにセッションを編集します。
¨ ファイルパラメータを作成する場合、英数字と下線文字を使用します。たとえば、ソー
スファイルパラメータ名を指定するには、$InputFile_Dataなどの$InputFile Nameを使
用します。
¨ 特定タイプのセッションファイルパラメータにはすべて、明確な名前を付ける必要があ
ります。たとえば、ソースファイルパラメータを2つ作成する場合、$SourceFileAccts
および$SourceFilePricesという名前を付けます。
¨ ファイルでパラメータを定義すると、Integration Serviceのいずれかのローカルディ
レクトリを参照することができます。
¨ ファイルの場所を定義するパラメータを使用します。ファイルの場所を定義するエント
リをセッションプロパティでクリアします。パラメータファイルに、ファイルのフルパ
スを入力します。
¨ セッションを実行するたびにパラメータファイルのパラメータ値を変更できます。また
は、複数のパラメータファイルを作成することもできます。複数のパラメータファイル
を使用する場合は、-paramfileオプションまたは-localparamfileオプションを指定し
たpmcmd Startworkflowコマンドを使用して、使用するパラメータファイルを指定しま
す。
データベース接続パラメータを作成する場合には、次の規則およびガイドラインに従って
ください。
¨ リレーショナルソース、ターゲット、ルックアップ、およびストアドプロシージャの各
接続を変更できます。
¨ パラメータを定義すると、リポジトリ内の任意のデータベース接続を参照できます。
¨ セッションで、複数の接続に同じ$DBConnectionパラメータを使用します。
セッションのマッピングパラメータおよび変
数
セッションのプロパティのマッピングパラメータを使用して、所定のマッピング属性を変
更できます。たとえば、トランスフォーメーションオーバーライド内のマッピングパラメ
ータを使用して、ソース修飾子トランスフォーメーション内のフィルタまたはユーザー定
義の結合を上書きできます。
234
章 15: セッションのパラメータおよび変数
セッション内でマッピング変数を使用している場合は、セッションを編集してリポジトリ
に格納されている任意の変数値をクリアすることができます。変数値を取り消した場合、
次回セッションを実行する際にIntegration Serviceによりパラメータファイル内の値が使
用されます。 セッションでパラメータファイルが使用されない場合、Integration
Serviceではセッション実行前の変数の割り当てで割り当てられた値が使用されます。 割
り当てられた値がない場合、Integration Serviceではマッピングに定義されている初期値
が使用されます。
リポジトリに格納されているマッピング変数の値を表示または削除するには:
1.
Workflow Managerのナビゲータウィンドウで、[セッション]タスクを右クリック
し、 [パーシステント値の表示]を選択します。
変数の名前と値を確認できます。
2.
[リセット]をクリックして既存の変数値を削除します。
3.
[OK]をクリックします。
セッションでのパラメータ値および変数値の
割り当て
再利用不可能なセッションの実行前または実行後に、特定のパラメータ値および変数の値
を更新できます。この機能により、1つのセッションから同じワークフローまたはワークレ
ット内の別のセッションへと情報を渡すことができます。たとえば、同じカウンタをイン
クリメントする必要がある2つのセッションを含むワークフローがあるとします。1つ目の
セッションでカウンタをインクリメントし、更新後のカウンタ値を2つ目のセッションに渡
し、再度2つ目のセッションでカウンタをインクリメントすることができます。または、同
じWebサイトにアクセスするセッションを含むワークレットがあるとします。最初のセッシ
ョンがWebサイトからセッションIDを取得するように、次にそのセッションID値を後続のセ
ッションに渡すように設定できます。
また、セッションとワークレットが同じワークフローまたは親ワークレットにある限り、
セッションからワークレットに、あるいはワークレットからセッションに情報を渡すこと
もできます。
注:
再利用可能なセッションでパラメータおよび変数を割り当てることはできません。
更新可能なパラメータおよび変数のタイプは、セッション実行前に割り当てるか、または
セッション実行後に割り当てるかによって異なります。セッション実行前または実行後に
更新できるのは、次のパラメータおよび変数タイプです。
¨ セッション実行前の変数割り当てセッション実行前に、マッピングパラメータ、マッピ
ング変数、およびセッションパラメータを更新できます。 これらのパラメータおよび
変数には、親ワークフローまたはワークレット内のワークフローまたはワークレット変
数の値を割り当てることができます。したがって、セッションがワークフロー内のワー
クレット内にある場合は、ワークフロー変数ではなくワークレット変数から値を割り当
てることができます。
セッション実行前の変数割り当てでは、ワークレット変数を更新することはできませ
ん。
セッションでのパラメータ値および変数値の割り当て
235
¨ セッション実行後の成功時の変数割り当て親ワークフローまたは親ワークレット内のワ
ークフロー変数やワークレット変数は、セッションが正常に完了した後に更新できま
す。 これらの変数には、マッピングパラメータおよびマッピング変数の値を割り当てる
ことができます。
¨ セッション実行後の失敗時の変数割り当てセッションが失敗した場合に、親ワークフロ
ーまたは親ワークレット内のワークフロー変数やワークレット変数を更新できます。
これらの変数には、マッピングパラメータおよびマッピング変数の値を割り当てること
ができます。
パラメータおよび変数はセッションプロパティの[コンポーネント]タブで割り当てま
す。
セッション間でのパラメータ値および変数値の受け渡
し
1つのセッションから同じワークフローやワークレット内の以降のセッションに値を渡すた
めに、セッション内でパラメータ値および変数値を割り当てることができます。例えば、
ワークフローに、2つのセッションs_NewCustomersとs_MergeCustomersが含まれていると
します。Session s_MergeCustomersは、 s_NewCustomersで更新されたマッピング変数の
値を使用する必要があります。
以下の図にワークフローを示します。
s_NewCustomersからs_MergeCustomersにマッピング変数値を渡すには、次の手順を実行し
ます。
236
1.
例えば、マッピング変数$$Count1を使用するように、セッション s_NewCustomers に
関連付けられたマッピングを設定します。
2.
例えば、マッピング変数$$Count2を使用するように、セッション s_MergeCustomers
に関連付けられたマッピングを設定します。
3.
例えば、ユーザー定義のワークフロー変数$$PassCountValueを使用するように、ワー
クフローを設定します。
4.
セッションが正常に完了した後にマッピング変数$$Count1の値をワークフロー変数$
$PassCountValueに割り当てるように、セッションs_NewCustomersを設定します。
5.
セッションの開始前にワークフロー変数$$PassCountValueの値をマッピング変数$
$Count2に割り当てるように、セッションs_MergeCustomersを設定します。
章 15: セッションのパラメータおよび変数
変数割り当ての設定
ワークレットを編集するときには[変数]タブで変数を割り当てます。ワークレットの実
行前または実行後に、次のタイプの変数に値を割り当てます。
¨ ワークレット実行前の変数割り当て。ユーザー定義のワークレット変数を、親ワークフ
ローまたはワークレット変数の値、あるいはワークフロー内の他のタスクからのマッピ
ング変数またはこのワークレットの前に実行している親ワークレットの値で更新しま
す。
¨ ワークレット実行後の変数割り当て。親ワークフローおよびワークレット変数を、ユー
ザー定義ワークレット変数の値で更新します。
ワークレット内の変数を割り当てるには:
1.
変数を割り当てるワークレットを編集します。
2.
[変数]タブをクリックします。
3.
変数割り当てタイプを選択します。
¨ ワークレット実行前の変数割り当て。ワークレットの実行前にユーザー定義のワー
クレット変数に値を割り当てます。
¨ ワークレット実行後の変数割り当て。ワークレットの完了後に親ワークフローおよ
びワークレット変数に値を割り当てます。
4.
変数割り当てフィールドの[編集]ボタンをクリックします。
5.
プリワークレット変数またはポストワークレット変数の割り当て領域で、追加ボタン
をクリックして、変数割り当て文を追加します。
6.
[ユーザー定義ワークレット変数]フィールドおよび[親ワークフロー/ワークレット
変数]フィールドのオープンボタンをクリックして、値を読み込む変数または値を割
り当てる変数を選択します。プリワークレット変数の割り当てでは、これらのフィー
ルドにパラメータと変数名を入力する場合があります。Workflow Managerでは、パラ
メータと変数名は検査されません。
Workflow Managerは、割り当て文の右側から割り当て文の左側の変数に値を割り当て
ます。したがって、変数割り当て文が“$$SiteURL_WFVar=$$SiteURL_WkltVar,”の場
合、Workflow Managerは$$SiteURL_WkltVar の値を$$SiteURL_WFVarに割り当てま
す。
7.
Configuring Variable Assignmentsから6までの手順を繰り返して、さらに変数割り
当て文を追加します。
変数割り当て文を削除するには、割り当て文のフィールドの1つをクリックして、[カ
ット]ボタンをクリックします。
8.
[OK]をクリックします。
セッションでのパラメータ値および変数値の割り当て
237
第 16 章
パラメータファイル
この章では、以下の項目について説明します。
¨ パラメータファイルの概要, 238 ページ
¨ パラメータおよび変数のタイプ, 239 ページ
¨ パラメータおよび変数を使用する場所, 240 ページ
¨ パラメータファイル内の接続属性のオーバーライド, 252 ページ
¨ パラメータファイル構造体, 253 ページ
¨ パラメータファイル名および場所の設定, 257 ページ
¨ パラメータファイルの例, 260 ページ
¨ パラメータファイルの作成に関するガイドライン, 261 ページ
¨ パラメータおよびパラメータファイルのトラブルシューティング, 262 ページ
¨ パラメータおよびパラメータファイルに関するヒント, 263 ページ
パラメータファイルの概要
パラメータファイルは、パラメータと変数、およびそれらに関連する値のリストです。こ
れらの値はサービス、サービスプロセス、ワークフロー、ワークレット、またはセッショ
ンのプロパティを定義します。Integration Serviceにより、これらの値は、パラメータフ
ァイルを使用するワークフローまたはセッションを実行する際に適用されます。
パラメータファイルを使用すると、セッションまたはワークフローを実行するたびに、パ
ラメータや変数の値を柔軟に変更することができます。複数のサービス、サービスプロセ
ス、ワークフロー、ワークレット、およびセッションに関する情報を1つのパラメータファ
イルに含めることができます。また、複数のパラメータファイルを作成し、セッションま
たはワークフローを実行するたびに異なるファイルを使用することもできます。
Integration Serviceにより、ワークフローまたはセッションの開始時にパラメータファイ
ルが読み込まれ、ファイルに定義されたパラメータおよび変数の開始値が決定されます。
パラメータファイルはワードパッドやメモ帳などのテキストエディタを使って作成できま
す。
238
パラメータファイルを使用する際は、以下に注意してください。
¨ パラメータおよび変数のタイプ。1つのパラメータファイル内に、さまざまなタイプの
パラメータと変数を定義できます。 サービス変数、サービスプロセス変数、ワークフ
ロー変数とワークレット変数、セッションパラメータ、およびマッピングパラメータと
マッピング変数などが含まれます。
¨ パラメータファイルに設定可能なプロパティ。パラメータおよび変数を使用して、
DesignerおよびWorkflow Manager内に多数のプロパティを定義します。 例えば、リレ
ーショナルターゲットインスタンスの更新の上書きとしてセッションパラメータを入力
し、パラメータファイルのUPDATE文にこのパラメータを設定できます。パラメータは、
Integration Serviceでセッションの実行時に展開されます。
¨ パラメータファイル構造体。パラメータ名または変数名、およびパラメータ値または変
数値を「name=value」形式で1行に入力することで、パラメータファイルのパラメータ
または変数に値を割り当てます。 パラメータおよび変数のグループの先頭には、パラ
メータまたは変数を適用するサービス、サービスプロセス、ワークフロー、ワークレッ
ト、またはセッションを識別する見出しを付ける必要があります。
¨ パラメータファイルの場所。ワークフローまたはセッションで使用するパラメータファ
イルを指定します。 ワークフローまたはセッションのプロパティ、あるいは pmcmdコマ
ンドラインに、パラメータファイルの名前とディレクトリを入力できます。
パラメータおよび変数のタイプ
パラメータファイルには、さまざまなタイプのパラメータおよび変数を含めることができ
ます。パラメータファイルを使用するセッションまたはワークフローの実行時には、
Integration Serviceによってパラメータファイルが読み込まれ、ファイル内に定義された
パラメータおよび変数が展開されます。
パラメータファイルには、以下のタイプのパラメータおよび変数を定義できます。
¨ サービス変数。電子メールアドレス、ログファイル数、エラーしきい値など、
Integration Serviceの一般的なプロパティを定義します。 $PMSuccessEmailUser、
$PMSessionLogCount、$PMSessionErrorThresholdなどは、サービス変数の例です。パ
ラメータファイルで定義したサービス変数値は、Administratorツールで設定された値
をオーバーライドします。
¨ サービスプロセス変数。各Integration ServiceプロセスのIntegration Serviceファ
イルのディレクトリを定義します。 $PMRootDir、$PMSessionLogDir、$PMBadFileDir
などは、サービスプロセス変数の例です。パラメータファイルで定義したサービスプロ
セス変数値は、Administratorツールで設定された値をオーバーライドします。
Integration Serviceがオペレーティングシステムのプロファイルを使用する場合、オ
ペレーティングシステムのプロファイルで指定されているペレーティングシステムのユ
ーザーは、サービスプロセス変数に定義されたディレクトリへのアクセス権を持つ必要
があります。
¨ ワークフロー変数。ワークフロー内のタスク条件とレコード情報を評価します。 たと
えば、[ディシジョン]タスク内でワークフロー変数を使用して、直前のタスクが正常
に実行されたかどうかを判定できます。ワークフローで、$ TaskName.PrevTaskStatus
パラメータおよび変数のタイプ
239
は、組み込みワークフロー変数で、$$ VariableNameは、ユーザー定義のワークフロー変
数です。
¨ ワークレット変数。 ワークレット内のタスク条件とレコード情報を評価します。親ワ
ークフロー内では定義済みのワークレット変数を使用できます。ただし、ワークレット
内では親ワークフローのワークフロー変数を使用することはできません。ワークレット
で、$TaskName.PrevTaskStatusは、定義済みのワークレット変数で、$$ VariableName
は、ユーザー定義のワークレット変数です。
¨ セッションパラメータ。データベース接続またはファイル名など、セッション間で変更
できる値を定義します。 $PMSessionLogFileおよび$Param Nameは、ユーザー定義のセ
ッションパラメータです。
¨ マッピングパラメータ。消費税率など、セッション全体で一定の値を定義します。 マ
ッピングまたはマップレットで宣言される$$ ParameterNameは、ユーザー定義のマッピ
ングパラメータです。
¨ マッピング変数。 セッション中に変更できる値を定義します。Integration Service
は、セッションが正常に実行されるたびに、そのセッションの最後にマッピング変数の
値をリポジトリに保存し、その値を次回セッションを実行するときに使用します。 マ
ッピングまたはマプレットで宣言される$$ VariableNameは、マッピング変数です。
パラメータファイルには、以下のタイプの変数を定義することはできません。
¨ $Source接続変数および$Target接続変数。 リレーショナルソース、リレーショナルタ
ーゲット、ルックアップテーブル、またはストアドプロシージャ用のデータベースの場
所を定義します。
¨ 電子メール変数。 ロードされる行の数、セッションの完了時間、読み込み統計および
書き込み統計など、電子メールメッセージ内のセッション情報を定義します。
¨ ローカル変数。アグリゲータ、式、およびランクトランスフォーメーション内の変数ポ
ート内のデータを一時的に格納します。
¨ 組み込み変数。 Integration Service名やシステム日付などのランタイム情報またはシ
ステム情報を返す変数。
¨ トランザクション制御変数。データベース行の処理中にトランザクションをコミットま
たはロールバックする条件を定義します。
¨ ABAPプログラム変数。SAP構造体、SAP構造体のフィールド、またはABAPプログラムの値
を表します。
パラメータおよび変数を使用する場所
パラメータおよび変数を使用して、DesignerやWorkflow Managerのプロパティに値を割り
当てたり、サービスおよびサービスプロセスのプロパティを上書きしたりできます。例え
ば、パラメータを使用して、ルックアップキャッシュファイル名の接頭語、またはFTP接続
のデフォルトリモートディレクトリを指定できます。
プロパティがSQL文またはSQLコマンドの場合、SQL文またはSQLコマンド内にパラメータお
よび変数を使用するか、あるいはプロパティの入力フィールドにパラメータまたは変数を
入力して、そのパラメータまたは変数をパラメータファイル内の文またはコマンド全体に
設定することができます。
240
章 16: パラメータファイル
例えば、リレーショナルターゲットの上書きでパラメータまたは変数を使用するとしま
す。リレーショナルターゲットの上書きのUPDATEステートメント内にパラメータまたは変
数を入力して、パラメータファイルの適切な見出しの下にパラメータまたは変数を定義で
きます。または、パラメータファイルでUPDATEステートメントを定義するには、以下の手
順を実行します。
1.
Designerで、ターゲットインスタンスを編集し、[更新の上書き]フィールドにセッ
ションパラメータ$ParamMyOverrideを入力し、マッピングを保存します。
2.
Workflow Managerで、パラメータファイルを使用するようにワークフローまたはセッ
ションを設定します。
3.
パラメータファイルの適切な見出しの下にあるSQL UPDATE文に$ParamMyOverrideを設
定します。
また、パラメータファイルを使用して、Administratorツールで定義したサービスおよびサ
ービスプロセスのプロパティをオーバーライドすることもできます。 例えば、セッション
ログディレクトリ$PMSessionLogDirを上書きすることができます。これには、パラメータ
ファイルを使用するようにワークフローまたはセッションを設定し、パラメータファイル
で新しいファイルパスに$PMSessionLogDirを設定します。
パラメータおよび変数は、以下のPowerCenterオブジェクトに指定できます。
¨ ソース。ソースに関連する入力フィールドにパラメータおよび変数を使用できます。
¨ ターゲット。ターゲットに関連する入力フィールドにパラメータおよび変数を使用でき
ます。
¨ トランスフォーメーション。トランスフォーメーションに関連する入力フィールドにパ
ラメータおよび変数を使用できます。
¨ タスク。Workflow Managerのタスクに関連する入力フィールドにパラメータおよび変数
を使用できます。
¨ セッション。セッションタスクに関連する入力フィールドにパラメータおよび変数を使
用できます。
¨ ワークフロー。ワークフローに関連する入力フィールドにパラメータおよび変数を使用
できます。
¨ 接続。接続オブジェクトに関連する入力フィールドにパラメータおよび変数を使用でき
ます。
¨ データプロファイリングオブジェクト。データプロファイリングに関連する入力フィー
ルドにパラメータおよび変数を使用できます。
以下の表に、パラメータおよび変数を指定できるソースに関連する入力フィールドを一覧
表示します。
表 5. パラメータおよび変数を受け入れるソース入力フィールド
ソースタイプ
フィールド
有効なパラメータおよび変数のタ
イプ
リレーショナル
ソーステーブル名
ワークフロー変数、ワークレット
変数、セッションパラメータ、マ
ッピングパラメータ、およびマッ
ピング変数。
パラメータおよび変数を使用する場所
241
ソースタイプ
フィールド
有効なパラメータおよび変数のタ
イプ
Workflow Managerのセッションプ
ロパティ([マッピング]タブ)
でパラメータおよび変数をオーバ
ーライドする際に、このフィール
ドにパラメータおよび変数を指定
することができます。
PeopleSoft
SetID、
すべて。
有効日、
ツリー名、
制御値設定、
抽出日
TIBCO
TIB/Adapter SDKリポジ
トリURL
サービスおよびサービスプロセス
変数。
Webサービス
エンドポイントURL
マッピングパラメータとマッピン
グ変数
Workflow Managerのセッションプ
ロパティ([マッピング]タブ)
でパラメータおよび変数をオーバ
ーライドする際に、このフィール
ドにパラメータおよび変数を指定
することができます。
以下の表に、パラメータおよび変数を指定できるターゲットに関連する入力フィールドを
一覧表示します。
表 6. パラメータおよび変数を受け入れるターゲット入力フィールド
ターゲットタ
イプ
フィールド
有効なパラメータおよび変数のタ
イプ
リレーショナル
更新オーバーライド
すべて。
セッション実行前およ
び実行後のSQLコマンド
Workflow Managerのセッションプ
ロパティ([マッピング]タブ)
でパラメータおよび変数をオーバ
ーライドする際に、これらのフィ
ールドにパラメータおよび変数を
指定することができます。
ターゲットテーブル名
ワークフロー変数、ワークレット
変数、セッションパラメータ、マ
ッピングパラメータ、およびマッ
ピング変数。
リレーショナル
Workflow Managerのセッションプ
ロパティ([マッピング]タブ)
でパラメータおよび変数をオーバ
242
章 16: パラメータファイル
ターゲットタ
イプ
フィールド
有効なパラメータおよび変数のタ
イプ
ーライドする際に、このフィール
ドにパラメータおよび変数を指定
することができます。
XML
キャッシュディレクト
リ
サービスおよびサービスプロセス
変数。
Workflow Managerのセッションプ
ロパティ([マッピング]タブ)
でパラメータおよび変数をオーバ
ーライドする際に、このフィール
ドにパラメータおよび変数を指定
することができます。
TIBCO
TIB/Adapter SDKリポジ
トリURL
サービスおよびサービスプロセス
変数。
Webサービス
エンドポイントURL
マッピングパラメータとマッピン
グ変数。
Workflow Managerのセッションプ
ロパティ([マッピング]タブ)
でパラメータおよび変数をオーバ
ーライドする際に、このフィール
ドにパラメータおよび変数を指定
することができます。
以下の表に、パラメータおよび変数を指定できるトランスフォーメーションに関連する入
力フィールドを一覧表示します。
表 7. パラメータおよび変数を受け入れるトランスフォーメーション入力フィ
ールド
トランスフォ
ーメーション
のタイプ
フィールド
有効なパラメータおよび変数のタ
イプ
式エディタを使
用可能なトラン
スフォーメーシ
ョン
トランスフォーメーシ
ョンの式
マッピングパラメータとマッピン
グ変数。
アグリゲータ、
ジョイナ、ルッ
クアップ、ラン
ク、XMLジェネ
レータ
キャッシュディレクト
リ
サービスおよびサービスプロセス
変数。
Workflow Managerのセッションプ
ロパティ([マッピング]タブ)
でパラメータおよび変数をオーバ
ーライドする際に、このフィール
ドにパラメータおよび変数を指定
することができます。
パラメータおよび変数を使用する場所
243
トランスフォ
ーメーション
のタイプ
フィールド
有効なパラメータおよび変数のタ
イプ
カスタム、エク
スターナルプロ
シージャ、
HTTP、XMLパー
サー
実行時位置
サービスおよびサービスプロセス
変数。
データマスク
シード
マッピングパラメータとマッピン
グ変数。
エクスターナル
プロシージャ
初期化プロパティ
サービスおよびサービスプロセス
変数。
HTTP
ベースURL
マッピングパラメータとマッピン
グ変数。
ルックアップ
SQLオーバーライド
すべて。
キャッシュファイル名
のプレフィックス
Workflow Managerのセッションプ
ロパティ([マッピング]タブ)
でパラメータおよび変数をオーバ
ーライドする際に、このフィール
ドにパラメータおよび変数を指定
することができます。
接続情報
セッションパラメータ
$DBConnectionNameおよび
$AppConnectionName、接続変数
$Sourceおよび$Target、マッピン
グパラメータおよび変数。
ルックアップ
Workflow Managerのセッションプ
ロパティ([マッピング]タブ)
でパラメータおよび変数をオーバ
ーライドする際に、このフィール
ドにパラメータおよび変数を指定
することができます。
Workflow Managerのセッションプ
ロパティ([マッピング]タブ)
でパラメータおよび変数をオーバ
ーライドする際に、このフィール
ドにパラメータおよび変数を指定
することができます。
ソータ
デフォルトワークディ
レクトリ
サービスおよびサービスプロセス
変数。
Workflow Managerのセッションプ
ロパティ([マッピング]タブ)
でパラメータおよび変数をオーバ
ーライドする際に、このフィール
ドにパラメータおよび変数を指定
することができます。
ソース修飾子
(リレーショナ
ルソース)
244
SQLクエリ
すべて。
ユーザー定義結合
Workflow Managerのセッションプ
ロパティ([マッピング]タブ)
ソースフィルタ条件。
章 16: パラメータファイル
トランスフォ
ーメーション
のタイプ
SQL
フィールド
有効なパラメータおよび変数のタ
イプ
セッション実行前およ
び実行後のSQLコマンド
でパラメータおよび変数をオーバ
ーライドする際に、このフィール
ドにパラメータおよび変数を指定
することができます。
スクリプトファイル名
マッピングパラメータとマッピン
グ変数。
Workflow Managerのセッションプ
ロパティ([マッピング]タブ)
でパラメータおよび変数をオーバ
ーライドする際に、このフィール
ドにパラメータおよび変数を指定
することができます。
ストアドプロシ
ージャ
呼び出しテキスト(未
接続のストアドプロシ
ージャ)
すべて。
ストアドプロシ
ージャ
接続情報
セッションパラメータ
$DBConnectionName、接続変数
$Sourceおよび$Target。
Workflow Managerのセッションプ
ロパティ([マッピング]タブ)
でパラメータおよび変数をオーバ
ーライドする際に、このフィール
ドにパラメータおよび変数を指定
することができます。
Workflow Managerのセッションプ
ロパティ([マッピング]タブ)
でパラメータおよび変数をオーバ
ーライドする際に、このフィール
ドにパラメータおよび変数を指定
することができます。
Webサービスコ
ンシューマ
エンドポイントURL
マッピングパラメータとマッピン
グ変数。
Workflow Managerのセッションプ
ロパティ([マッピング]タブ)
でパラメータおよび変数をオーバ
ーライドする際に、このフィール
ドにパラメータおよび変数を指定
することができます。
パラメータおよび変数を使用する場所
245
以下の表に、パラメータおよび変数を指定できるWorkflow Managerのタスクに関連する入
力フィールドを一覧表示します。
表 8. パラメータおよび変数を受け入れるタスク入力フィールド
246
タスクタイプ
フィールド
有効なパラメータおよび変数のタ
イプ
[割り当て]タ
スク
割り当て(ユーザー定
義変数および式)
ワークフロー変数とワークレット
変数
[コマンド]タ
スク
コマンド(名前および
コマンド)
サービス、サービスプロセス、ワ
ークフロー、およびとワークレッ
ト変数
[コマンド]タ
スク
セッション実行前およ
び実行後のシェルコマ
ンド
すべて
[ディシジョ
ン]タスク
ディシジョン名(評価
する条件)
ワークフロー変数とワークレット
変数
電子メールタス
ク
メールユーザー名、件
名、および本文
サービス、サービスプロセス、ワ
ークフロー、およびとワークレッ
ト変数
[イベント待
ち]タスク
トリガファイル名(定
義済みイベント)
サービス、サービスプロセス、ワ
ークフロー、およびとワークレッ
ト変数
リンク
リンク条件
サービス、サービスプロセス、ワ
ークフロー、およびとワークレッ
ト変数
セッション
Where to Use Parameters and Variablesを参照してくださ
い。
[タイマ]タス
ク
時刻指定: ワークフロ
ー変数から開始時刻を
決定する
章 16: パラメータファイル
ワークフロー変数とワークレット
変数
以下の表に、パラメータおよび変数を指定できるセッションに関連する入力フィールドを
一覧表示します。
表 9. パラメータおよび変数を受け入れるセッション入力フィールド
タブ
フィールド
有効なパラメータおよび変数のタ
イプ
[プロパティ]
タブ
セッションログファイ
ル名
組み込みセッションパラメータ
$PMSessionLogFile。
[プロパティ]
タブ
セッションログファイ
ルディレクトリ
サービスおよびサービスプロセス
変数。
[プロパティ]
タブ
パラメータファイル名
ワークフローとワークレット変
数。
[プロパティ]
タブ
$Source接続値および
$Target接続値
セッションパラメータ
$DBConnectionNameおよび
$AppConnectionName、接続変数
$Sourceおよび$Target。
[プロパティ]
タブ
プッシュダウンの最適
化セッションプロパテ
ィ
マッピングパラメータ$
$PushdownConfig。
[設定オブジェ
クト]タブ
セッションログカウン
ト数
サービス変数
$PMSessionLogCount。
[設定オブジェ
クト]タブ
セッションエラーしき
い値
サービス変数
$PMSessionErrorThreshold。
[設定オブジェ
クト]タブ
リレーショナルエラー
ログのテーブル名の接
頭語
すべて。
[設定オブジェ
クト]タブ
エラーログファイル名
およびエラーログファ
イルディレクトリ
サービス変数、サービスプロセス
変数、ワークフロー変数、ワーク
レット変数、セッションパラメー
タ。
[設定オブジェ
クト]タブ
動的パーティション化
のパーティション数
組み込みセッションパラメータ
$DynamicPartitionCount。
[マッピング]
タブ
マッピングで設定する
プロパティを上書きす
るトランスフォーメー
ションプロパティ
プロパティによって変わります。
詳細については、Where to Use
Parameters and Variablesを参照
してください。
[マッピング]
タブ
リレーショナル接続値
セッションパラメータ
$DBConnectionName、接続変数
$Sourceおよび$Target。
[マッピング]
タブ
キュー接続値
セッションパラメータ
$QueueConnectionName。
パラメータおよび変数を使用する場所
247
タブ
フィールド
有効なパラメータおよび変数のタ
イプ
この接続タイプの場合、パラメー
タファイル内の接続属性はオーバ
ーライドできます。
[マッピング]
タブ
FTP接続値
セッションパラメータ
$FTPConnectionName。
この接続タイプの場合、パラメー
タファイル内の接続属性はオーバ
ーライドできます。
[マッピング]
タブ
アプリケーション接続
値
セッションパラメータ
$AppConnectionName。
この接続タイプの場合、パラメー
タファイル内の接続属性はオーバ
ーライドできます。
[マッピング]
タブ
外部ローダー接続値
セッションパラメータ
$LoaderConnectionName。
この接続タイプの場合、パラメー
タファイル内の接続属性はオーバ
ーライドできます。
248
[マッピング]
タブ
FTPリモートファイル名
すべて。
[マッピング]
タブ
ルックアップソースフ
ァイル名およびルック
アップソースファイル
ディレクトリ
サービス変数、サービスプロセス
変数、ワークフロー変数、ワーク
レット変数、セッションパラメー
タ。
[マッピング]
タブ
セッション実行前およ
び実行後のSQLコマンド
(ソースおよびターゲ
ット)
すべて。
[マッピング]
タブ
ファイルソースおよび
ファイルターゲット用
のコードページ
ワークフロー変数、ワークレット
変数、セッションパラメータ
$ParamName。
[マッピング]
タブ
ソース入力ファイル名
およびソース入力ファ
イルディレクトリ
サービス変数、サービスプロセス
変数、ワークフロー変数、ワーク
レット変数、セッションパラメー
タ。
[マッピング]
タブ
ソース入力ファイルコ
マンド
サービス変数、サービスプロセス
変数、ワークフロー変数、ワーク
レット変数、セッションパラメー
タ。
[マッピング]
タブ
リレーショナルソース
のテーブル所有者名
すべて。
章 16: パラメータファイル
タブ
フィールド
有効なパラメータおよび変数のタ
イプ
[マッピング]
タブ
ターゲット統合ファイ
ル名およびターゲット
統合ファイルディレク
トリ
サービス変数、サービスプロセス
変数、ワークフロー変数、ワーク
レット変数、セッションパラメー
タ。
[マッピング]
タブ
ターゲット統合コマン
ド
サービス変数、サービスプロセス
変数、ワークフロー変数、ワーク
レット変数、セッションパラメー
タ。
[マッピング]
タブ
ターゲットヘッダおよ
びターゲットフッタの
コマンド
サービス変数、サービスプロセス
変数、ワークフロー変数、ワーク
レット変数、セッションパラメー
タ。
[マッピング]
タブ
ターゲット出力ファイ
ル名およびターゲット
出力ファイルディレク
トリ
サービス変数、サービスプロセス
変数、ワークフロー変数、ワーク
レット変数、セッションパラメー
タ。
[マッピング]
タブ
ターゲット拒否ファイ
ル名およびターゲット
拒否ファイルディレク
トリ
サービス変数、サービスプロセス
変数、ワークフロー変数、ワーク
レット変数、セッションパラメー
タ。
[マッピング]
タブ
ターゲットテーブル名
接頭語
すべて。
[マッピング]
タブ
Teradata FastExport一
時ファイル
サービスおよびサービスプロセス
変数。
[マッピング]
タブ
Teradata外部ローダー
用の制御ファイルコン
テンツのオーバーライ
ド
すべて。
[マッピング]
タブ
WebSphere MQ、JMS、
SAP ALE IDoc、TIBCO、
webMethods、Web
Service Providerソー
ス用のリカバリキャッ
シュディレクトリ
サービスおよびサービスプロセス
変数。
[マッピング]
タブ
継続サブスクリプショ
ン名
セッションパラメータ$Param名。
[マッピング]
タブ
MQソース修飾子フィル
タ条件
すべて。
[マッピング]
タブ
SAPステージングファイ
ル名およびSAPステージ
サービス変数、サービスプロセス
変数、ワークフロー変数、ワーク
パラメータおよび変数を使用する場所
249
タブ
フィールド
有効なパラメータおよび変数のタ
イプ
ングファイルディレク
トリ
レット変数、セッションパラメー
タ。
[マッピング]
タブ
SAPソースファイルディ
レクトリ
サービス変数、サービスプロセス
変数、ワークフロー変数、ワーク
レット変数、セッションパラメー
タ。
[コンポーネン
ト]タブ
セッション後のメール
(ユーザー名、件名、
および本文)
すべて。
[コンポーネン
ト]タブ
セッション実行後に発
信されるメールの添付
ファイル名
すべて。
以下の表に、パラメータおよび変数を指定できるワークフローに関連する入力フィールド
を一覧表示します。
表 10. パラメータおよび変数を受け入れるワークフロー入力フィールド
タブ
フィールド
有効なパラメータおよび変数のタ
イプ
[プロパティ]
タブ
ワークフローログファ
イル名およびワークフ
ローログファイルディ
レクトリ
サービス、サービスプロセス、ワ
ークフロー、およびワークレット
変数。
[プロパティ]
タブ
ワークフローログカウ
ント数
サービス変数
$PMWorkflowLogCount。
[全般]タブ
サスペンド時のメール
(ユーザー名、件名、
および本文)
サービス、サービスプロセス、ワ
ークフロー、およびワークレット
変数。
以下の表に、パラメータおよび変数を指定できるWorkflow Managerの接続オブジェクトに
関連する入力フィールドを一覧表示します。
表 11. パラメータおよび変数を指定できる接続オブジェクト入力フィールド
250
接続タイプ
フィールド
有効なパラメータおよび変数のタ
イプ
リレーショナル
データベースユーザー
名、パスワード
セッションパラメータ
$ParamName。
章 16: パラメータファイル
接続タイプ
フィールド
有効なパラメータおよび変数のタ
イプ
pmpasswdコマンドラインプログラ
ムを使用し、CRYPT_DATA暗号化タ
イプを指定して、パラメータファ
イル内のパスワードを暗号化しま
す。
リレーショナ
ル: ソース、タ
ーゲット、ルッ
クアップ、スト
アドプロシージ
ャ
接続およびトランザク
ション環境SQL
すべて。
FTP
ホストマシンのユーザ
ー名、パスワード
セッションパラメータ
$ParamName。
pmpasswdコマンドラインプログラ
ムを使用し、CRYPT_DATA暗号化タ
イプを指定して、パラメータファ
イル内のパスワードを暗号化しま
す。
FTP
デフォルトリモートデ
ィレクトリ
すべて。
アプリケーショ
ン
アプリケーションユー
ザー名、パスワード
セッションパラメータ
$ParamName。
pmpasswdコマンドラインプログラ
ムを使用し、CRYPT_DATA暗号化タ
イプを指定して、パラメータファ
イル内のパスワードを暗号化しま
す。
アプリケーショ
ン: Webサービ
スコンシューマ
エンドポイントURL
セッションパラメータ
$ParamName、マッピングパラメー
タと変数。
アプリケーショ
ン: HTTP
ベースURL
セッションパラメータ
$ParamName。
アプリケーショ
ン: JMS
JMS接続先
セッションパラメータ
$ParamName。
ローダー
データベースユーザー
名、パスワード
セッションパラメータ
$ParamName。
pmpasswdコマンドラインプログラ
ムを使用し、CRYPT_DATA暗号化タ
イプを指定して、パラメータファ
イル内のパスワードを暗号化しま
す。
パラメータおよび変数を使用する場所
251
以下の表に、パラメータおよび変数を指定できるデータプロファイリングに関連する入力
フィールドを一覧表示します。
表 12. パラメータおよび変数を受け入れるデータプロファイリング入力フィ
ールド
オブジェクト
フィールド
有効なパラメータおよび変数のタ
イプ
データプロファ
イルドメイン
データプロファイリン
グドメイン値
サービスおよびサービスプロセス
変数
パラメータファイル内の接続属性のオーバー
ライド
セッションパラメータを使用してソースまたはターゲットの接続を定義する場合、パラメ
ータファイル内の接続属性を上書きすることができます。$FTPConnection Name、
$QueueConnection Name、$LoaderConnectionName、または$AppConnection Nameセッション
パラメータを使用します。
パラメータファイル内に接続を定義すると、接続属性を定義する特定のユーザー定義セッ
ションパラメータがIntegration Serviceによって検索されます。たとえば、
$QueueConnectionMyMQというメッセージキュー接続パラメータを作成して、パラメータフ
ァイル内の“[s_MySession]”セクションで定義するとします。 Integration Service
は、パラメータファイル内のこのセクションを検索し、「rows per message(メッセージ
あたりの行数)」パラメータ$Param_QueueConnectionMyMQ_Rows_Per_Messageを探しま
す。
PowerCenterをインストールすると、FTP、キュー、ローダ、およびアプリケーション接続
用の上書き可能な接続属性をリストしたConnectionParam.prmという名前のテンプレートフ
ァイルが、インストールプログラムによって作成されます。 ConnectionParam.prmファイ
ルは、次のディレクトリに配置されています。
<PowerCenter Installation Directory>/server/bin
パラメータファイル内に接続を定義する際には、適切な接続タイプのテンプレートをコピ
ーしてパラメータファイル内に貼り付けてください。その後、パラメータ値を指定しま
す。
たとえば、パラメータファイル内にFTP接続の接続属性を上書きするには、次の手順を実行
します。
252
1.
セッションまたはワークフローをパラメータファイルで実行されるように設定しま
す。
2.
セッションプロパティの[マッピング]タブで、[接続]ノード内のソースインスタ
ンスまたはターゲットインスタンスを選択します。
章 16: パラメータファイル
3.
[値]フィールドで[開く]ボタンをクリックして、セッションパラメータを使用す
るように接続を設定します。たとえば、FTP接続には$FTPConnectionMyFTPConnを使用
します。
4.
テキストエディタでConnectionParam.prmテンプレートファイルを開き、属性を上書
きする対象の接続タイプのセクションまでスクロールします。たとえば、FTP接続の場
合、 「接続タイプ:FTP」セクションに位置付けます。
Connection Type : FTP
--------------------...
Template
====================
$FTPConnection<VariableName>=
$Param_FTPConnection<VariableName>_Remote_Filename=
$Param_FTPConnection<VariableName>_Is_Staged=
$Param_FTPConnection<VariableName>_Is_Transfer_Mode_ASCII=
5.
上書きする接続属性のテンプレートテキストをコピーします。例えば、[リモートフ
ァイル名]属性および[Is Staged]属性を上書きするには、次の行をコピーします。
$FTPConnection<VariableName>=
$Param_FTPConnection<VariableName>_Remote_Filename=
$Param_FTPConnection<VariableName>_Is_Staged=
6.
テキストをパラメータファイルに貼り付けます。 <VariableName>を接続名で置き換え
て、パラメータ値を指定します。以下に例を示します。
[MyFolder.WF:wf_MyWorkflow.ST:s_MySession]
$FTPConnectionMyFTPConn=FTP_Conn1
$Param_FTPConnectionMyFTPConn_Remote_Filename=ftp_src.txt
$Param_FTPConnectionMyFTPConn_Is_Staged=YES
注: 等号符号の前または後にあるスペースまたは引用符は、パラメータ名または値の
一部としてIntegration Serviceに解釈されます。
属性の値を定義しない場合、接続オブジェクト用に定義された値がIntegration
Serviceで使用されます。
パラメータファイル構造体
パラメータファイルには、パラメータと変数、および割り当てられた値のリストが含まれ
ます。パラメータおよび変数はパラメータファイルの各セクションでグループ化されま
す。各セクションの先頭には、パラメータまたは変数を定義する、Integration Serviceプ
ロセス、ワークフロー、ワークレット、またはセッションを識別する見出しが付けられま
パラメータファイル構造体
253
す。 見出しのすぐ下でパラメータや変数を定義します。このとき各パラメータや変数を新
しい行に入力します。各セクション内では、パラメータおよび変数を任意の順序で記述で
きます。
パラメータまたは変数の定義は、「 名前=値」の形式で入力します。例えば、以下の行で
は、サービス変数$PMSuccessEmailUserとセッションパラメータ$ParamTgtOverrideに値が
割り当てられます。
[email protected]
$ParamTgtOverride=UPDATE T_SALES SET DATE_SHIPPED = :TU.DATE_SHIPPED, TOTAL_SALES = :TU.TOTAL_SALES
WHERE :TU.EMP_NAME = EMP_NAME and EMP_NAME = 'MIKE SMITH'
Integration Serviceでは、行の先頭から最初の等号までの間のすべての文字はパラメータ
名、最初の等号から行末までの間のすべての文字はパラメータ値として解釈されます。 し
たがって、パラメータ名と等号の間にスペースを入力した場合、そのスペースは
Integration Serviceによってパラメータ名の一部として解釈されます。 行に複数の等号
が含まれている場合、最初の等号の後にあるすべての等号はIntegration Serviceによって
パラメータ値の一部として解釈されます。
警告: Integration Serviceでは、 パラメータファイルを使用してワークフローを実行す
る際に、フォルダ、ワークフロー、およびセッションの名前を修飾するためにピリオド
(.)が使用されます。 フォルダ名にピリオド(.)が含まれる場合、Integration
Serviceにより名前が適切に修飾されず、ワークフローが失敗します。
パラメータファイルのセクション
パラメータおよび変数は、パラメータファイルのどのセクションにも定義できます。ワー
クフロー、ワークレットまたはセッションセクションにサービスまたはサービスプロセス
変数を定義する場合、その変数はタスクを実行するサービスプロセスに適用されます。同
様に、セッションセクションにワークフロー変数を定義する場合、そのワークフロー変数
の値はセッションを実行するときにのみ適用されます。
以下の表に、パラメータファイルの各セクションを定義するパラメータファイルの見出し
と、各セクションに定義するパラメータおよび変数の範囲を示します。
254
見出し
範囲
[グローバル]
すべてのIntegration Services、
Integration Serviceプロセス、ワーク
フロー、ワークレット、およびセッショ
ン。
[サービス:サービス名]
このサービスを実行する名前付きの
Integration Service、ワークフロー、
ワークレット、およびセッション。
[サービス:サービス名.ND:ノード名]
このサービスプロセスを実行する名前付
きのIntegration Serviceプロセス、ワ
ークフロー、ワークレット、およびセッ
ション。
[フォルダ名.WF:ワークフロー名]
名前付きワークフローおよびワークフロ
ー内のすべてのセッション。
章 16: パラメータファイル
見出し
範囲
[フォルダ名.WF:ワークフロー
名.WT:ワークレット名]
名前付きワークレットおよびワークレッ
ト内のすべてのセッション。
[フォルダ名.WF:ワークフロー
名.WT:ワークレット名.WT:ワークレ
ット名...]
ネストしたワークレットおよびネストし
たワークレット内のすべてのセッショ
ン。
[フォルダ名.WF:ワークフロー名.ST:
セッション名]
名前付きセッション。
-または[フォルダ名.WF:ワークフロー名.WT:
ワークレット名.ST:セッション名]
-または[フォルダ名.セッション名]
-または[セッション名]
各見出しはパラメータファイルで1つのみ作成します。パラメータファイルに同じ見出しを
何度も指定した場合、Integration Serviceでは最初の見出しの下のセクションの情報が使
用され、後続の同一の見出しの下のセクションの情報は無視されます。 例えば、パラメー
タファイルに以下のような同一の見出しが含まれていたとします。
[HET_TGTS.WF:wf_TCOMMIT1]
$$platform=windows
...
[HET_TGTS.WF:wf_TCOMMIT1]
$$platform=unix
$DBConnection_ora=Ora2
ワークフローwf_TCOMMITでは、マッピングパラメータ $$platformの値は「unix」ではなく
「windows」で、セッションパラメータ $DBConnection_oraは定義されていません。
パラメータファイル内の複数のセクションで同じパラメータや変数を定義すると、最も小
さいスコープのパラメータまたは変数が、より大きいスコープのパラメータまたは変数よ
りも優先されます。たとえば、パラメータファイルには以下のセクションが含まれます。
[HET_TGTS.WF:wf_TGTS_ASC_ORDR]
$DBConnection_ora=Ora2
[HET_TGTS.WF:wf_TGTS_ASC_ORDR.ST:s_TGTS_ASC_ORDR]
$DBConnection_ora=Ora3
セッションs_TGTS_ASC_ORDRでは、セッションパラメータ $DBConnection_oraの値は
「Ora3」です。ワークフロー内の他のすべてのセッションでは、「Ora2」となります。
コメント
パラメータファイルにはコメントを含めることができます。Integration Serviceでは、有
効でない見出しの行は無視されます。また、等号文字(=)は含まれません。 以下にパラ
メータファイルのコメントの例を示します。
--------------------------------------Created 10/11/06 by JSmith.
*** Update the parameters below this line when you run this workflow on Integration Service Int_01.
パラメータファイル構造体
255
***
; This is a valid comment because this line contains no equals sign.
NULL値
パラメータファイルのパラメータおよび変数にはNULL値を割り当てることができます。パ
ラメータおよび変数にNULL値を割り当てると、Integration Serviceは、パラメータのタ
イプまたは変数のタイプに応じて、次の場所から値を取得します。
¨ サービスおよびサービスプロセス変数。Integration ServiceによりAdministratorツ
ール内で使用される値です。
¨ ワークフローとワークレット変数。Integration Serviceにより、リポジトリに保存さ
れている値(変数が永続の場合)、ユーザー固有のデフォルト値、またはデータタイプ
デフォルト値が使用されます。
¨ セッションパラメータ。セッションパラメータにはデフォルト値はありません。
Integration Serviceがセッションパラメータの値を検出できない場合、セッションが
失敗するか、空の文字列をデフォルト値とするか、実行時にパラメータの展開に失敗す
る可能性があります。たとえば、Integration Serviceはセッションパラメータ
$DBConnection Nameが定義されていないセッションに失敗します。
¨ マッピングパラメータとマッピング変数。Integration Serviceにより、リポジトリに
保存された値(マッピング変数のみ)、設定された初期値、またはデータタイプデフォ
ルト値が使用されます。
NULL値を割り当てるには、マッピングパラメータまたは変数の値を"<null>"に設定する
か、値を空欄のままにします。たとえば、以下の行では、サービスプロセス変数
$PMBadFileDirと$PMCacheDirにNULL値を割り当てます。
$PMBadFileDir=<null>
$PMCacheDir=
サンプルのパラメータファイル
以下のテキストは、1つのIntegration Serviceのサービス変数および4つのワークフローの
パラメータを含むパラメータファイルからの抜粋です。
---------------------------------------File created by RSmith 11/12/2005
---------------------------------------[Service:IntSvs_01]
[email protected]
[email protected]
[HET_TGTS.WF:wf_TCOMMIT_INST_ALIAS]
$$platform=unix
[HET_TGTS.WF:wf_TGTS_ASC_ORDR.ST:s_TGTS_ASC_ORDR]
$$platform=unix
$DBConnection_ora=Ora2
$ParamAscOrderOverride=UPDATE T_SALES SET CUST_NAME = :TU.CUST_NAME, DATE_SHIPPED
= :TU.DATE_SHIPPED, TOTAL_SALES = :TU.TOTAL_SALES WHERE CUST_ID = :TU.CUST_ID
[ORDERS.WF:wf_PARAM_FILE.WT:WL_PARAM_Lvl_1]
$$DT_WL_lvl_1=02/01/2005 01:05:11
$$Double_WL_lvl_1=2.2
[ORDERS.WF:wf_PARAM_FILE.WT:WL_PARAM_Lvl_1.WT:NWL_PARAM_Lvl_2]
$$DT_WL_lvl_2=03/01/2005 01:01:01
$$Int_WL_lvl_2=3
$$String_WL_lvl_2=ccccc
256
章 16: パラメータファイル
パラメータファイル名および場所の設定
ワークフローまたはセッションを開始する場合は、パラメータファイルを使用して、パラ
メータ値および変数値をIntegration Serviceに渡します。 ワークフローまたはセッショ
ンのプロパティ、あるいは pmcmdコマンドラインに、パラメータファイル名とディレクトリ
を指定できます。 Integration Serviceでオペレーティングシステムプロファイルを使用
している場合、オペレーティングシステムプロファイルに指定されているオペレーティン
グシステムのユーザー名は、パラメータファイルへのアクセス権を持っている必要があり
ます。
pmcmdで使用するパラメータファイルは、ワークフローまたはセッションプロパティでパラ
メータファイルを上書きします。 pmcmdコマンドラインにパラメータファイル名を入力しな
い場合、Integration Serviceでは、ワークフローおよびワークフロー内のすべてのセッシ
ョンのワークフロープロパティで指定したパラメータファイルが使用されます。 pmcmdコ
マンドラインまたはワークフロープロパティでパラメータファイル名を入力しない場合、
Integration Serviceでは、セッションプロパティで指定したパラメータファイルが使用さ
れます。
ワークフローまたはセッションでのパラメータファイ
ルの使用
ワークフローまたはセッションのプロパティで、パラメータファイルの名前とディレクト
リを指定できます。ワークフローが並列実行されるように設定されている場合、各ワーク
フロー実行インスタンスのセッションに別々のパラメータファイルを使用するときは、セ
ッションパラメータファイル名としてワークフロー変数またはワークレット変数を指定し
ます。
ワークフローまたはセッションにパラメータファイルを指定しても、Integration Service
が指定したパラメータファイルを特定できない場合、ワークフローまたはセッションは失
敗します。
ワークフロープロパティ内のパラメータファイルの入力
ワークフローのプロパティでパラメータファイルを指定するには:
1.
Workflow Managerでワークフローを開きます。
2.
[ワークフロー]-[編集]をクリックします。
[ワークフローの編集]ダイアログボックスが表示されます。
3.
[プロパティ]タブをクリックします。
4.
[Parameter Filename(パラメータファイル名)]フィールドにパラメータファイル
の場所と名前を入力します。
ダイレクトパスまたはサービスプロセス変数のいずれかを入力できます。Integration
Serviceオペレーティングシステムに有効な区切り文字を使用します。 PowerCenter
環境を高可用性に設定した場合は、サービスプロセス変数をパスに含めます。
5.
[OK]をクリックします。
パラメータファイル名および場所の設定
257
セッションプロパティ内のパラメータファイルの入力
セッションのプロパティでパラメータファイルを指定するには:
1.
Workflow Managerでセッションを開きます。
[Edit Tasks(タスクの編集)]ダイアログボックスが表示されます。
2.
[プロパティ]タブをクリックし、[General Options]設定を開きます。
3.
[Parameter Filename(パラメータファイル名)]フィールドにパラメータファイル
の場所と名前を入力します。
ダイレクトパスまたはサービスプロセス変数を入力できます。Integration Service
オペレーティングシステムに有効な区切り文字を使用します。 PowerCenter環境を高
可用性に設定した場合は、サービスプロセス変数ををパスに含めます。
また、ユーザー定義のワークフロー変数またはワークレット変数も入力することがで
きます。ワークフローパラメータファイル内にセッションパラメータファイル名を定
義するためのワークフロー変数またはワークレット変数を入力します。
4.
[OK]をクリックします。
変数を使用したセッションパラメータファイルの指定
セッションパラメータファイル名として、ワークフロー変数またはワークレット変数を入
力できます。ワークフローが並列実行されるように設定されている場合、各ワークフロー
実行インスタンスのセッション用に別々のパラメータ値および変数値を定義するときは、
ワークフロー変数またはワークレット変数をセッションパラメータファイル名として入力
してください。
ワークフロー内のセッション用にワークフローパラメータファイルおよびセッションパラ
メータファイルを定義する場合、Integration Serviceではワークフローパラメータファイ
ルを使用するため、セッションパラメータファイルが無視されます。変数を使用してセッ
ションパラメータファイル名を定義する場合は、セッションパラメータファイル名を定義
し、ワークフローパラメータファイルに$PMMergeSessParamFile=TRUEを設定する必要があ
ります。$PMMergeSessParamFileプロパティを設定すると、Integration Serviceでセッシ
ョンパラメータファイルおよびワークフローパラメータファイルの両方が読み込まれま
す。
例えば、3つのセッションを含む2つのコンカレントインスタンスを実行するようにワーク
フローを設定したとします。
258
章 16: パラメータファイル
1番目と2番目のワークフローインスタンスでは、セッションに次のセッションパラメータ
ファイルを使用します。
セッショ
ン
セッションパラメータファイ
ル名
セッションパラメータファイ
ル名
(1番目のワークフロー実行イ
ンスタンス)
(2番目のワークフロー実行イ
ンスタンス)
s_1
s_1Inst1.txt
s_1Inst2.txt
s_2
s_2Inst1.txt
s_2Inst2.txt
s_3
s_3Inst1.txt
s_3Inst2.txt
ワークフロー変数を作成して、セッションパラメータファイル名を格納できます。例え
ば、ユーザー定義のワークフロー変数$$s_1ParamFileName、$$s_2ParamFileName、および
$$s_3ParamFileNameを作成することができます。各セッションのセッションプロパティ
で、パラメータファイル名をワークフロー変数に設定してください。
セッション
セッションパラメータファイル名
セッションプロパティ内
s_1
$$s_1ParamFileName
s_2
$$s_2ParamFileName
s_3
$$s_3ParamFileName
各ワークフローインスタンスのワークフローパラメータファイルで、各ワークフロー変数
を正しいセッションパラメータファイル名に設定し、$PMMergeSessParamFile=TRUEを設定
します。
セッションパラメータファイル名として変数を使用した場合、セッションパラメータファ
イルとワークフローパラメータファイルの両方に同じパラメータまたは変数が定義されて
いるときは、Integration Serviceでは次のルールに従ってパラメータ値および変数値が設
定されます。
¨ ワークフローパラメータファイルにもセッションパラメータファイルにも同一セクショ
ンにパラメータまたは変数が定義されている場合、Integration Serviceで使用される
のはワークフローパラメータファイル内の値です。
¨ セッションパラメータファイルのセッションセクション、およびワークフローパラメー
タファイルのワークフローセクションの両方にパラメータまたは変数が定義されている
場合、Integration Serviceで使用されるのはセッションパラメータファイル内の値で
す。
pmcmdでのパラメータファイルの使用
pmcmd startworkflowまたはstarttaskコマンドで、パラメータファイルを使用します。
これらのコマンドを使用して、ワークフローまたはセッションを開始するときに使用する
パラメータファイルを指定できます。
パラメータファイル名および場所の設定
259
pmcmd -paramfileオプションは、セッションまたはワークフローを実行するときに使用す
るパラメータファイルを定義します。 -localparamfileオプションは、Integration
Serviceマシン上のパラメータファイルにアクセスできない場合に参照できるローカルマシ
ン上のパラメータファイルを定義します。
次のコマンドは、myfile.txtというパラメータファイルを使用してワークフローAを開始し
ます。
pmcmd startworkflow -uv USERNAME -pv PASSWORD -s SALES:6258 -f east ‑w wSalesAvg -paramfile '\
$PMRootDir/myfile.txt' workflowA
次のコマンドは、myfile.txtというパラメータファイルを使用してタスクAを開始します。
pmcmd starttask -uv USERNAME -pv PASSWORD -s SALES:6258 -f east ‑w wSalesAvg -paramfile '\$PMRootDir/
myfile.txt' taskA
パラメータファイルの例
このセクションの例では、パラメータファイルの使用が必要なセッションについて説明し
ます。別の状態および時間値を指定してセッションを再実行することもできます。この例
では、設定可能なパラメータおよび変数を示し、パラメータ値と変数値をリストし、さら
にセッションを再実行する際の変更について説明します。
プロダクションフォルダにs_MonthlyCalculationsというセッションがあります。このセッ
ションではセッションパラメータを使用してソースファイルおよびターゲットデータベー
スに接続し、セッションログファイルに書き込みます。セッションに失敗した場合、
Integration Serviceによって電子メールメッセージが[email protected]に送信されま
す。 このセッションでは、文字列マッピングパラメータ$$Stateと日付/時刻マッピング変
数$$Timeを使用しています。$$Stateには「MA」と設定します。リポジトリ内の$$Timeの初
期値は「9/30/2005:04:00」ですが、この値を「10/1/2005 05:04:11」と上書きします。
次の表に、s_MonthlyCalculationsセッションのパラメータおよび変数を示します。
260
パラメータまたは変数のタイ
プ
パラメータまたは変
数の名前
定義
サービス変数
$PMFailureEmailUser
[email protected]
文字列マッピングパラメータ
$$State
MA
日付/時刻マッピング変数
$$Time
05/10/01 05:04:11
ソースファイル (セッション
パラメータ)
$InputFile1
Sales.txt
データベース接続 (セッショ
ンパラメータ)
$DBConnection_Targe
t
Sales
セッションログファイル (セ
ッションパラメータ)
$PMSessionLogFile
d:/session logs/
firstrun.txt
章 16: パラメータファイル
セッションのパラメータファイルには、フォルダ名とセッション名、各パラメータと変数
を記述します。
[Production.s_MonthlyCalculations]
[email protected]
$$State=MA
$$Time=10/1/2005 05:04:11
$InputFile1=sales.txt
$DBConnection_target=sales
$PMSessionLogFile=D:/session logs/firstrun.txt
次回のセッション実行時には、パラメータファイルを編集して状態をMDに変更し、$$Time
変数を削除することができます。これにより、Integration Serviceは前回のセッションで
リポジトリに格納された変数の値を使用できるようになります。
パラメータファイルの作成に関するガイドラ
イン
パラメータファイルを作成する際には、以下のルールおよびガイドラインを使用します。
¨ セッションパラメータをすべてリスト。セッションパラメータにはデフォルト値はあり
ません。 Integration Serviceがセッションパラメータの値を検出できない場合、セッ
ションが失敗するか、空の文字列をデフォルト値とするか、実行時にパラメータの展開
に失敗する可能性があります。セッションパラメータ名の大文字/小文字は区別されま
せん。
¨ 必要なマッピングパラメータおよびマッピング変数をすべてリスト。 マッピングパラ
メータおよび変数の値は、マッピング内のパラメータおよび変数の開始値となります。
マッピングパラメータ名および変数名の大文字/小文字は区別されません。
¨ 一意でないセッション名へのフォルダ名の入力。リポジトリ内にセッション名が複数存
在する場合は、セッションの場所を示すためにフォルダ名を入力します。
¨ マップレット内のパラメータと変数の前にマップレット名を配置。次の形式を使用しま
す。
mapplet_name.parameter_name=value
mapplet2_name.variable_name=value
¨ 複数のパラメータファイルの使用。ワークフロー、ワークレット、およびセッションに
対し、個別にパラメータファイルを割り当てます。 これらすべてのタスクに同じパラ
メータファイルを指定するか、複数のパラメータファイルを作成することができます。
¨ パラメータ値を定義する際の不必要な改行やスペースの不使用。Integration Service
では、余分なスペースはパラメータ名または値の一部として解釈されます。
¨ 日時の値に対する正しい日付形式の使用。日時の値には、以下の日付形式を使用しま
す。
- MM/DD/RR
- MM/DD/YYYY
- MM/DD/RR HH24:MI
- MM/DD/YYYY HH24:MI
パラメータファイルの作成に関するガイドライン
261
- MM/DD/RR HH24:MI:SS
- YYYY/MM/DD HH24:MI:SS
- MM/DD/RR HH24:MI:SS.MS
- MM/DD/YYYY HH24:MI:SS.MS
- MM/DD/RR HH24:MI:SS.US
- MM/DD/YYYY HH24:MI:SS.US
- MM/DD/RR HH24:MI:SS.NS
- MM/DD/YYYY HH24:MI:SS.NS
以下の区切り記号を使用することができます。ダッシュ(-)、スラッシュ(/)、バ
ックスラッシュ(\\uff09、コロン(:)、ピリオド(.)、およびスペース。
Integration Serviceでは、余分な空白は無視されます。年または時間の「HH12」形
式には、1桁または3桁の値を使用できません。
¨ パラメータや変数の値を引用符で囲まない。Integration Serviceでは、最初の等号の
後はすべて値の一部として解釈されます。
¨ エラーログテーブル名のプレフィックスに対する適切な長さのパラメータまたは変数値
の使用。エラーログテーブル名のプレフィックスにパラメータまたは変数を使用する場
合は、Oracle、Sybase、またはTeradataのエラーログテーブルの名前を付ける際に19文
字を超えるプレフィックスを指定しないようにします。 エラーテーブル名に使用でき
る文字数は、最大11文字です。Oracle、Sybase、Teradataデータベースでは、テーブル
名の最大長に30文字という制限があります。パラメータまたは変数名は、 19文字以上
を指定できます。
パラメータおよびパラメータファイルのトラ
ブルシューティング
セッションのパラメータファイル内にセクションが存在しますが、
Integration Serviceがそのセクションを読み込んでいないように思われ
ます。
Wrokflow Managerで表示されるとおりにフォルダ名とセッション名が正しく入力されてい
るかどうかを確認してください。また、ユーザー定義のセッションパラメータには、適切
なプレフィックスを使用してください。
ソースファイルパラメータを使用してソースファイルとその場所を指定
しようとしても、Integration Serviceがソースファイルを見つけられま
せん。
セッションプロパティでソースファイルディレクトリが消去されていることを確認してく
ださい。Integration Serviceにより、ソースファイルディレクトリとソースファイル名が
連結され、ソースファイルの場所が特定されます。
262
章 16: パラメータファイル
また、Integration Serviceのローカルにディレクトリが入力されており、オペレーティン
グシステムで適切な区切り文字が使用されていることを確認してください。
パラメータファイルを使用してワークフローを実行すると、セッション
の1つが必ず失敗します。
パラメータファイルに定義されていないパラメータがそのセッションで使用されている可
能性があります。Integration Serviceでは、パラメータファイルを使用して、ワークフロ
ー内のすべてのセッションが開始されます。 セッションのプロパティをチェックし、パラ
メータファイル内ですべてのセッションパラメータが正しく定義されていることを確認し
てください。
パラメータファイルを使用するワークフローまたはセッションを実行し
ましたが、失敗しました。Integration Serviceは、リカバリ実行中にど
のパラメータ値および変数値を使用しますか。
サービス変数、サービスプロセス変数、セッションパラメータ、およびマッピングパラメ
ータについては、Integration Serviceは、これらが存在する場合にはパラメータファイル
で指定された値を使用します。 パラメータファイルに値が指定されていない場合、
Integration Serviceはリカバリストレージファイルに保存された値を使用します。 ワー
クフロー、ワークレット、マッピング変数については、Integration Serviceは、リカバリ
ストレージファイルに保存された値を常に使用します。
パラメータおよびパラメータファイルに関す
るヒント
1つのパラメータファイルを使用して、関連するセッションのパラメータ
情報をグループ化します。
同じデータベース接続やディレクトリを使用する複数のセッションがある場合は、それら
を1つのパラメータファイルで定義します。接続またはディレクトリを変更する場合、1つ
のパラメータファイルを編集するだけですべてのセッションの情報を更新することができ
ます。
定期的に実行するセッションに対しては、pmcmdと複数のパラメータファ
イルを組み合わせます。
サイクル内のセッションパラメータを再利用する場合があります。たとえば、あるセッシ
ョンを売上げデータベースに対して毎日実行しますが、同じセッションを売上げおよびマ
ーケティングデータベースに対して週に1回実行するとします。セッションの実行ごとに異
なるパラメータファイルを作成することができます。週次セッションを実行するたびにセ
ッションプロパティでパラメータファイルを変更する代わりに、 pmcmdを使用して、セッシ
ョンを開始するときに使用するパラメータファイルを指定します。
パラメータおよびパラメータファイルに関するヒント
263
拒否ファイルパラメータとセッションログパラメータをターゲットファ
イルパラメータまたはターゲットデータベース接続パラメータといっし
ょに使用します。
ターゲットファイルパラメータまたはターゲットデータベース接続パラメータをセッショ
ンで使用する場合は、拒否ファイルパラメータを使うことで、拒否ファイルを追跡できま
す。同様に、セッションログパラメータを使うことで、セッションログをターゲットマシ
ンに書き込むことができます。
リソースを使用して、パラメータファイルへのアクセス権を持つノード
上でセッションが実行されることを確認します。
Administratorツールで、パラメータファイルへのアクセス権を持つ各ノードにファイルリ
ソースを定義し、リソースをチェックするようにIntegration Serviceを設定できます。
次に、パラメータファイルを使用するセッションを編集し、リソースを割り当てます。ワ
ークフローを実行すると、Integration Serviceにより、リソースが使用可能なノード上で
必須リソースを使用してセッションが実行されます。
セッションのワークフロー変数の初期値をセッションセクションで定義
することにより、これらの値を上書きできます。
ワークフロー変数の値を変更する[Assignment]タスクがワークフローに含まれる場合、
ワークフロー内の次のセッションでは、最新の変数の値がセッションの初期値として使用
されます。セッションの初期値を上書きするには、パラメータファイルのセッションセク
ションで新しい変数の値を定義します。
パラメータおよび変数を定義する際に、他のパラメータおよび変数を使
用することができます。
たとえば、パラメータファイルで、セッションパラメータ$PMSessionLogFileをサービスプ
ロセス変数を使用して以下のように定義できます。
$PMSessionLogFile=$PMSessionLogDir/TestRun.txt
264
章 16: パラメータファイル
第 17 章
FastExport
この章では、以下の項目について説明します。
¨ FastExportの使用の概要, 265 ページ
¨ 手順1。 FastExport接続の作成, 266 ページ
¨ 手順2 readerの変更, 269 ページ
¨ 手順3 ソース接続の変更, 269 ページ
¨ 手順4。 制御ファイルのオーバーライド(オプション), 269 ページ
¨ FastExportの使用に関するルールおよびガイドライン, 271 ページ
FastExportの使用の概要
FastExportは複数のTeradataセッションを使用して、Teradataデータベースから大容量の
データを素早くエクスポートするツールです。FastExportを使用してTeradataソースを読
み込むPowerCenterセッションを作成できます。
FastExportを使用するには、Teradataソースデータベースとのマッピングを作成します。
マッピングには、1つのソース修飾子トランスフォーメーションで結合された同じTeradata
ソースデータベースからの複数のソース定義を含めることができます。そのセッション中
は、Relational readerに代わってFastExport readerを使用します。セッションでエクス
ポートするTeradataテーブルとのFastExport接続を使用します。
FastExportでは、何をエクスポートするかを定義する制御ファイルを使用します。セッシ
ョンを開始した場合、Integration Serviceにより、FastExport接続属性から制御ファイ
ルが作成されます。 TeradataテーブルにSQLオーバーライドを作成する場合、
Integration Serviceでは、SQLが使用され制御ファイルが生成されます。 セッションプ
ロパティで制御ファイルを定義することにより、セッションの制御ファイルをオーバーラ
イドできます。
Integration Serviceにより、FastExportメッセージがセッションログに書き込まれ、
FastExportパフォーマンスに関する情報がFastExportログに書き込まれます。
PowerCenterは、FastExportログを、Temporary File Nameセッション属性で定義されたフ
ォルダに保存します。FastExportログのデフォルト拡張子は、.logです。
セッションでFastExportを使用するには、以下の手順を実行します。
1.
Workflow ManagerでFastExport接続を作成し、接続属性を設定します。
265
2.
セッションを開いて、[Reader]をRelational からTeradata FastExport Readerに
変更します。
3.
接続タイプを変更し、セッションに対してFastExport接続を選択します。
4.
必要に応じて、テキストエディタでFastExport制御ファイルを作成し、リポジトリに
保存します。
手順1。 FastExport接続の作成
Workflow ManagerでFastExport接続を作成します。FastExport接続を編集すると、その接
続を使用するセッションはすべて、この更新された接続を使用します。
FastExport接続を作成するには:
1.
Workflow Managerで、[接続]-[アプリケーション]をクリックします。
[接続ブラウザ]ダイアログボックスが表示されます。
2.
[新規作成]をクリックします。
3.
Teradata FastExport接続を選択し、[OK]をクリックします。
4.
FastExport接続の名前を入力します。
5.
データベースユーザー名を入力します。
6.
データベースユーザー名のパスワードを入力するか、あるいは[パスワードでパラメ
ータを使用]をクリックしてデータベースパスワードにセッションパラメータ
$ParamNameを使用します。
[パスワードでパラメータを使用]を有効にした場合は、ワークフローまたはセッシ
ョンパラメータファイルでパスワードを定義し、 pmpasswd CRYPT_DATAオプションを
使用してそのパスワードを暗号化します。
7.
FastExportでTeradataソースの読み込みに使用するコードページを選択します。
FastExportでは、fexpcodepagemapfile.datファイルが使用され、FastExportでサポ
ートされるTeradata文字セットにコードページ名がマッピングされます。 このファイ
ルにコードページが含まれていること、割り当てられた文字セットがTeradataデータ
ベースで有効になっていることを確認します。
8.
FastExport属性を入力して、[OK]をクリックします。
以下の表に、Teradata FastExport接続に設定する属性を示します。
表 13. FastExport接続属性
266
属性
デフォルト
値
説明
TDPID
なし
TeradataデータベースID。
Tenacity
4
FastExportがTeradataデータベースへのログオ
ンを試行する時間の長さです(単位:時間)。
章 17: FastExport
属性
デフォルト
値
説明
FastExportがログオンしようとしたが、最大数
のTeradataセッションがすでに実行されている
場合、FastExportは、SLEEPオプションで定義さ
れた時間待機します。SLEEP時間が経ったら、
FastExportは、再度Teradataデータベースにロ
グオンしようとします。
FastExportは、必要な数のセッションにログオ
ンするか、TENACITY時間を超えるまで、このプ
ロセスを繰り返します。
最大セッシ
ョン数
1
FastExportジョブ1つあたりのFastExportセッシ
ョンの最大数。[最大セッション数]は1以上
で、さらにシステムのアクセスモジュールプロ
セス(AMP)の合計数以下でなければなりませ
ん。
スリープ
6
FastExportがログインを再試行するまでの待ち
時間(単位:分)。FastExportは、ログインが
成功するか、Tenacity時間が経過するまでログ
インの試行を繰り返します。
ブロックサ
イズ
64000
エクスポートしたデータに使用する最大ブロッ
クサイズ。
データ暗号
化
無効
FastExportのデータ暗号化を有効にします。バ
ージョン8 Teradataクライアントを使用すれば
データ暗号化を使用できます。
Logtable名
FE_<ソース
テーブル名>
ログテーブル名をリスタートします。
FastExportユーティリティでは、リスタートロ
グテーブルでこの情報を使用して、Teradataデ
ータベース障害またはクライアントシステム障
害が原因で停止したジョブをリスタートしま
す。各FastExportジョブでは、個別のログテー
ブルを使用する必要があります。指定したテー
ブルが存在していない場合、FastExportユーテ
ィリティは、このテーブルを作成し、リスター
トログとして使用します。
PowerCenterでは、FastExportのリスタートはサ
ポートされていません。ただし、出力をステー
ジングする場合、FastExportを手動でリスター
トできます。
実行可能名
fexp
ソースデータの読み込みに使用するTeradataコ
マンド。 デフォルト値を使用します。
データベー
ス名
なし
接続するTeradataデータベースの名前。
Integration Serviceは、テーブル名のプレフィ
ックスとしてデータベース名を使用してSQL文を
生成します。
手順1。 FastExport接続の作成
267
コードページのマッピングファイルの確認
FastExport接続を作成する場合、FastExportでTeradataソースの読み込みに使用する
PowerCenterのコードページを選択します。 FastExportでは、fexpcodepagemapfile.dat
ファイルが使用され、FastExportでサポートされるTeradata文字セットにPowerCenterの
コードページ名がマッピングされます。例えば、「MS Windows Latin 1(ANSI)、Latin1
のスーパーセット」を接続コードページとして選択した場合、PowerCenterでは「MS1252」
という名前が付けられたコードページが使用され、Teradataでは「Latin1252_0A」という
名前が付けられた文字セットが使用されます。
fexpcodepagemapfile.datファイルでは、 Teradata International Character Set
Supportに指定された中から最適なTeradata文字セットをPowerCenterコードページにマッ
プします。Teradata文字セットは、使用する前にデータベースで有効にしておく必要があ
ります。デフォルトでは、以下の文字セットのみがTeradataデータベースで有効になって
います。
¨ ASCII
¨ EBCDIC
¨ UTF8
¨ UTF16
FastExport接続に選択するPowerCenterのコードページがfexpcodepagemapfile.datファイ
ルに存在しない場合、または割り当てられたTeradata文字セットがデータベースで有効に
なっていない場合は、Integration Serviceでセッションが失敗します。
fexpcodepagemapfile.datファイルは、 <PowerCenter installation directory>\server\binにありま
す。 このファイルにFastExport接続で選択するPowerCenterコードページが含まれている
こと、割り当てた文字セットがTeradataデータベースで有効になっていることを確認して
ください。追加のPowerCenterコードページをTeradata文字セットに割り当てたり、既存の
マッピングを変更したりするには、テキストエディタを使用します。PowerCenterコードペ
ージをTeradata文字セットに割り当てるには、以下の形式で単一行に名前を入力します。
<PowerCenter_code_page> = <Teradata_character_set>.
例: MS1252 = Latin1252_0A
このファイルを編集する際には、以下のルールおよびガイドラインを使用します。
¨ コメントを指定する場合は、感嘆符(!)で行を開始します。
¨ 行は、空白スペースのみやタブ文字のみでは構成できません。
¨ このファイルで単一のPowerCenterのコードページが複数のTeradata文字セットにマッ
ピングされている場合、FastExportではファイルで最後に割り当てられた文字セットが
使用されます。
注: Teradataでは、UnicodeのUTF-16LEエンコードについて、ビッグエンディアンとリト
ルエンディアンが区別されません。 UTF-16LEの文字を処理する場合は、Workflow Manager
でFastExport接続を作成する際に「UnicodeのUTF-16LEエンコード(プラットフォームエ
ンディアン)」のコードページを選択します。
268
章 17: FastExport
手順2 readerの変更
TeradataのデフォルトreaderはRelational readerです。FastExportを使用するには、
readerをTeradata FastExport readerに変更します。
手順3 ソース接続の変更
セッションでFastExportを使用するには、Teradataソース接続をTeradata FastExport接
続に変更します。セッション属性によっては上書きすることができます。
以下の表に、FastExportで変更できるセッション属性を示します。
表 14. FastExportセッション属性
属性
デフォルト
値
精度
ステージング済み
無効
有効にすると、FastExportはデータをステ
ージファイルに書き込みます。無効にする
と、FastExportはデータを名前付きパイプ
に書き込みます。
小数秒の精度。
0
タイムスタンプ内の小数点以下のミリ秒の
精度。0~6を入力できます。たとえば、精
度6のタイムスタンプは、
hh:mi:ss.ss.ss.ssです。ミリ秒精度は、
Teradataデータベース内の設定と一致して
いる必要があります。
Temporary File
$PMTempDir
\
PowerCenterは、一時ファイル名を使用し
て、ログファイル、制御ファイル、および
ステージングする出力ファイルの名前を生
成します。ファイルの完全パスを入力しま
す。
制御ファイルのオ
ーバーライド
空白
制御ファイルのテキストデータ。この属性
を使用して、Integration Serviceによっ
てセッションに作成された制御ファイルを
オーバーライドします。
手順4。 制御ファイルのオーバーライド(オ
プション)
デフォルトで、Integration Serviceにより、FastExportでセッションを実行する場合、
セッションおよび接続のプロパティに基づいて、FastExport制御ファイルが生成されま
手順2 readerの変更
269
す。 Integration Serviceにより、生成した制御ファイルが一時ファイルディレクトリに
保存され、次回セッションを実行する際にオーバーライドされます。
Integration Serviceにより生成された制御ファイルをオーバーライドできます。 制御フ
ァイルをオーバーライドする場合、Workflow Designerにより制御ファイルがリポジトリに
保存されます。セッションを実行する場合、Integration Serviceにより保存された制御フ
ァイルが使用されます。
各FastExport文は、次の基準を満たしている必要があります。
¨ 改行します。
¨ 先頭にはピリオド(.)を指定します。
¨ 終わりにはセミコロン(;)を指定します。
以下の表に、PowerCenterで使用できる制御ファイル文を示します。
表 15. FastExport制御ファイル文
制御ファイル文
説明
.LOGTABLE utillog ;
リスタートログテーブル名。
LOGON tdpz/user,pswd;
データベースログイン文字列。データベース、
ユーザー名、およびパスワードを指定します。
BEGIN EXPORT
最初のエクスポートコマンド。
.SESSIONS 20;
Teradataセッションの数。
.EXPORT OUTFILE ddname2;
エクスポートするデータの宛先ファイル。
SELECT EmpNo, Hours FROM
charges
データを選択するSQL文。
WHERE Proj_ID = 20
-
ORDER BY EmpNo ;
-
.END EXPORT ;
エクスポートタスクの終わりを示し、エクスポ
ートプロセスを開始します。
LOGOFF ;
データベースからの切断。
制御ファイルをオーバーライドする手順
1.
テキストエディタで制御ファイルを作成します。
2.
制御ファイルのテキストをクリップボードにコピーします。
3.
制御ファイルのテキストを[制御ファイルのオーバーライド]フィールドに貼り付け
ます。
Workflow Manager では、制御ファイルの構文は検証しません。セッションの実行時に
Teradataが制御ファイルの構文を検証します。制御ファイルが無効だと、セッションは失
敗に終わります。
270
章 17: FastExport
ヒント: 制御ファイルを読み込み専用に変更することで、その制御ファイルを各セッショ
ンに使用することができます。Integration Serviceでは、読み込み専用ファイルは上書き
されません。
FastExportの使用に関するルールおよびガイ
ドライン
PowerCenterでFastExportを使用する場合、以下のルールおよびガイドラインに従ってくだ
さい。
¨ TeradataにSQLオーバーライドを使用する場合、PowerCenterは、このSQLオーバーライ
ドを使用してFastExport制御ファイルを作成します。SQLオーバーライドを使用しない
場合、PowerCenterは、ソース修飾子内の接続されたポートに基づいて制御ファイルを
生成します。
¨ UNIX MP-RASオペレーティングシステムでは、FastExportは、最大2 GBのエクスポート
ファイルサイズをサポートしています。他のオペレーティングシステムでは、ファイル
サイズに制限はありません。
¨ エクスポートされたデータファイルを結合することはできません。
¨ セッション実行前SQLコマンドおよびFastExportを使用した場合、セッションは失敗し
ます。
FastExportの使用に関するルールおよびガイドライン
271
第 18 章
外部データのロード
この章では、以下の項目について説明します。
¨ 外部データのロードの概要, 272 ページ
¨ 外部ローダーの動作, 273 ページ
¨ IBM DB2へのロード, 275 ページ
¨ Oracleへのロード, 282 ページ
¨ Sybase IQへのロード, 285 ページ
¨ Teradataへのロード, 288 ページ
¨ セッション内での外部データのロードの設定, 299 ページ
¨ 外部データのロードのトラブルシューティング, 302 ページ
外部データのロードの概要
IBM DB2、Oracle、Sybase IQ、およびTeradataの外部ローダを使ってセッションターゲッ
トファイルをそれぞれのデータベースにロードするように、セッションを設定することが
できます。外部ローダを使用すると、ファイルまたはパイプから情報を直接ロードするこ
とによって、SQLコマンドを実行して同じデータをデータベースに挿入するよりも、セッシ
ョンのパフォーマンスを高めることができます。
1つのセッションで複数の外部ローダを使用してください。たとえば、マッピングに2つの
ターゲットが含まれている場合には、Oracle外部ローダ接続とSybase IQ外部ローダ接続を
使用するセッションを作成できます。
はじめに
外部ローダーを実行する前に、以下の作業を実行します。
¨ 制約の無効化。ロードを実行する前に、データを受け取るテーブルに組み込まれている
制約を無効にしておきます。 制約を無効にする方法の詳細については、データベース
のマニュアルを参照してください。
¨ データベースロギングのオフまたは無効化。高いパフォーマンスを維持するために、コ
ミット間隔を増やし、データベースロギングをオフにすることができます。 ただし、
272
失敗したセッションのデータベースのリカバリを実行するには、データベースロギング
をオンにしておく必要があります。
¨ コードページの設定。IBM DB2、Oracle、Sybase IQ、およびTeradataデータベースサ
ーバーは、ターゲットフラットファイルのコードページと同じコードページを使用する
必要があります。 Integration Serviceによって、ターゲットフラットファイルのコー
ドページを使用して制御ファイルとターゲットフラットファイルが作成されます。 タ
ーゲットフラットファイルに対して7ビットASCII以外のコードページを使用する場合
は、Integration ServiceをUnicodeデータ移動モードで実行します。
¨ 外部ローダー接続をリソースとして設定。Integration Serviceがグリッド上で実行す
るように設定されている場合、外部ローダーが利用可能なノード上に外部ローダー接続
をリソースとして設定します。
外部ローダーの動作
外部ローダーを使用するセッションを実行する場合、Integration Serviceにより制御ファ
イルとターゲットフラットファイルが作成されます。 制御ファイルには、データ形式や外
部ローダに対するロード指示などの情報が格納されます。制御ファイルの拡張子は.ctlで
す。制御ファイルおよびターゲットフラットファイルは、ターゲットファイルディレクト
リに格納されます。
セッションを実行する場合、Integration Serviceによりターゲットファイルが削除され、
再作成されます。 外部ローダは制御ファイルを使用してセッション出力をデータベースに
ロードします。日時データは、次の方法でIntegration Serviceで処理された後、データベ
ースにロードされます。
¨ セッションがサブ秒切り捨ての設定になっている場合、Integration Serviceでの日時
データ処理には精度19が使用されます。
¨ セッションがサブ秒切り捨ての設定になっていない場合、Integration Serviceでの日
時データ処理は、ターゲットフラットファイル内に指定されている精度に基づきます。
精度は19~29の範囲です。サブ秒の切り捨ては、指定された精度に基づきます。
¨ ターゲットファイル内に指定された精度は、データベース用に指定されている精度を越
える場合、データベース用に指定されている最大精度に制限されます。
Integration Serviceは、すべての外部データのロードが完了するまで待ってから、セッシ
ョン実行後に実行するコマンドを実行し、エクスターナルプロシージャを実行し、セッシ
ョン実行後に発信されるメールを送信します。
Integration Serviceにより、外部ローダーの初期化と完了のメッセージがセッションログ
に書き込まれます。 外部ローダのパフォーマンスの詳細については、外部ローダのログを
チェックしてください。ローダは、ターゲットフラットファイルと同じディレクトリにロ
グを保存します。外部ローダのログにはデフォルトで.ldrlogという拡張子が付きます。
外部ローダの動作は、選択したデータロード方法によって異なります。名前付きパイプま
たはフラットファイルにデータをロードできます。
外部ローダーの動作
273
名前付きパイプへのデータのロード
データがパイプに出力された時点で、外部ローダは即座にデータベースへのデータのロー
ドを開始します。ローダはロードが完了した時点で、即座に名前付きパイプを削除しま
す。
UNIXでは、Integration Serviceにより、設定されたターゲットファイル名に従って名付
けられた名前付きパイプに書き込まれます。
Windowsでは、Integration Serviceにより、指定された形式を使用して名前付きパイプに
データが書き込まれます。
\\.\pipe\<pipe name>
パイプ名は設定されたターゲットファイル名と同じです。
フラットファイルへのデータのステージング
WindowsまたはUNIXでフラットファイルにデータをステージングする場合、Integration
Serviceによって、設定されたターゲットファイル名に従って名付けられたフラットファイ
ルにデータが書き込まれます。 Integration Serviceによってターゲットフラットファイ
ルにすべてのデータが書き込まれた後で、外部ローダーによって、ターゲットデータベー
スへのデータのロードが開始されます。 外部ローダは、ターゲットフラットファイルをデ
ータベースにロードしたあとで、このファイルを削除しません。ターゲットファイルのデ
ィレクトリに、ターゲットフラットファイルのサイズに必要な容量があることを確認して
ください。
注: Integration Serviceでは、フラットファイルにデータをステージングするときに、
ポートの位取りに基づいて数値が丸められます。名前付きパイプにデータをロードする外
部ローダを使用している場合、またはターゲットをノーマルロードに設定している場合、
結果は丸められません。
Integration Serviceがフラットファイルターゲットにすべてのデータを書き込む前にセッ
ションが強制終了または失敗した場合、外部ローダーは起動されません。 Integration
Serviceがフラットファイルターゲットにすべてのデータを書き込んだ後にセッションが強
制終了または失敗した場合、外部ローダーはターゲットデータベースへのデータのロード
を完了してから終了します。
外部ローダーを使用したセッションのパーティション
化
フラットファイルターゲットを使用するセッションに複数のパーティションを設定する場
合、Integration Serviceによってパーティションごとにフラットファイルが1つずつ作成
されます。 一部の外部ローダは、複数のファイルからデータをロードすることができませ
ん。複数のパーティションがあるセッションで外部ローダを使用するときは、ご使用の外
部ローダに従ってターゲットパーティションタイプを設定する必要があります。
複数のファイルからデータをロードできる外部ローダを使用する場合は、フラットファイ
ルターゲットで使用可能なパーティションタイプを選択できます。パーティションごとに
外部ローダ接続も選択してください。Integration Serviceがパーティションごとに出力フ
ァイルを作成し、外部ローダーによって各ターゲットファイルからの出力がデータベース
274
章 18: 外部データのロード
にロードされます。 次のローダを使用する場合は、任意のターゲットパーティションタイ
プを使用してください。
¨ Oracle(パラレルロードが有効)
¨ Teradata TPump
複数のファイルからロードできないローダを使用する場合は、ラウンドロビンパーティシ
ョン化を使用して、データを単一のターゲットファイルへルーティングします。パーティ
ションごとに外部ローダ接続を選択してください。ただし、Integration Serviceによって
このローダー接続が最初のパーティションに使用されます。 Integration Serviceによっ
て単一の出力ファイルが作成され、外部ローダーによってターゲットファイルからの出力
がデータベースにロードされます。 ターゲットに他のパーティションタイプを選択した場
合、Integration Serviceのセッションは失敗します。 次のローダを使用する場合は、ラ
ウンドロビンのターゲットパーティションタイプを使用してください。
¨ IBM DB2 EE
¨ IBM DB2 EEE Autoloader
¨ Oracle(パラレルロードが無効)
¨ Sybase IQ
¨ Teradata MultiLoad
¨ Teradata Fastload
IBM DB2へのロード
IBM DB2ターゲットにロードする際は、IBM DB2 EEまたはIBM DB2 EEE外部ローダーを使用
します。 どちらの外部ローダーも、ターゲットに対して挿入操作と置換操作を行います。
ロード操作のリスタートまたは終了も行うことができます。 どちらの外部ローダーも、デ
ータをパーティション化し、パーティション化されたデータを対応するデータベースパー
ティションへ同時にロードすることができます。
IBM DB2 EE外部ローダー
IBM DB2 EE外部ローダーを使用して、次のいずれかのデータベースにロードします。
¨ IBM DB2 EEバージョン8.x
¨ IBM DB2 EEEバージョン8.x
¨ IBM DB2バージョン9.x
IBM DB2 EE外部ローダーによって、Integration Serviceインストールディレクトリにあ
る次のいずれかの実行可能ファイルが呼び出されます。
¨ db2load。 バージョン9.5より前のIBM DB2クライアント用に使用します。
¨ db2load95。IBM DB2クライアントバージョン9.5用に使用します。
外部ローダー接続を作成する場合は、Integration Serviceプロセスが実行されるマシン上
にインストールされているIBM DB2クライアントバージョンに応じて、実行可能ファイル名
を指定します。
IBM DB2へのロード
275
IBM DB2 EE外部ローダーでは、Integration Serviceからリモートであるマシン上のIBM
DB2サーバーにデータをロードできます。
LOBデータの処理
IBM DB2 EE外部ローダーでは、LOBデータ(Blob、Clob、Dbclobデータなど)をロードす
ることができません。 IBM DB2 EE外部ローダーを使用するセッションを実行し、ソースに
LOBデータが含まれる場合は、以下のマッピング設定に応じて、外部ローダーでは残りのデ
ータを正常にターゲットにロードできます。
¨ LOBポートが接続されていない状態。 外部ローダーによって、残りのデータが正常にタ
ーゲットにロードされます。
¨ LOBポートが接続されている状態。データベースバージョン8.xにロードする場合、外部
ローダーによりLOBデータはNULLとしてロードされ、残りのデータが正しくロードされ
ます。 データベースバージョン9.xにロードする場合、外部ローダーではどのデータも
ロードされません。 拒否された行は、外部ローダーによって外部ローダーログに記録
されます。
IBM DB2 EEE外部ローダー
IBM DB2 EEE外部ローダーを使用して、IBM DB2 EEEバージョン8.xデータベースにロード
します。 IBM DB2 EEE外部ローダは、IBM DB2 Autoloaderプログラムを起動してデータを
ロードします。Autoloaderプログラムは、db2atld実行ファイルを使用します。IBM DB2
EEEローダーによって、IBM DB2サーバーはIntegration Serviceをホストする同じマシン
上にあることが要求されます。
注: IBM DB2 EEEサーバーがIntegration Serviceからリモートであるマシン上に存在す
る場合は、IBM DB2 EE外部ローダーを使用するか、リレーショナルデータベース接続を使
用してIBM DB2 EEEデータベースに接続します。 IBM DB2ターゲットのためにデータベース
パーティション化を使用します。データベースパーティション化を使用した場合、
Integration Serviceによって、テーブルのパーティション情報のためにIBM DB2システム
に対してクエリが行われ、パーティション化データがターゲットデータベースで対応する
ノードにロードされます。
IBM DB2 EEE外部ローダーに関するルールおよびガイド
ライン
外部ローダを使用してIBM DB2にロードする場合には、以下の規則およびガイドラインに従
ってください。
¨ IBM DB2外部ローダは、区切りフラットファイルからロードします。ターゲットテーブ
ルのカラムの幅が、すべてのデータを格納するのに十分かどうか確認してください。
¨ IBM DB2クライアント認証を使用する接続の場合は、外部ローダ接続を作成する際に
PmNullUserユーザー名とPmNullPasswdを入力してください。PowerCenterによって、接
続ユーザー名がPmNullUserでIBM DB2データベースに接続する際に、IMB DB2クライアン
ト認証が使用されます。
¨ 複数のパーティションを伴うセッションについては、ラウンドロビンのパーティション
タイプを使用して、データを単一のターゲットファイルにルーティングします。
276
章 18: 外部データのロード
¨ 同じパイプライン内の複数のターゲットでIBM DB2外部ローダーを使用するように設定
した場合は、各ローダーによりターゲットデータベース上の異なるテーブルスペースに
ロードされる必要があります。
¨ データベーステーブルにデータをロードするための正しい権限レベルと特権が必要で
す。
操作モードの設定
外部ローダが実行するロードの種類は、IBM DB2の操作モードによって異なります。IBM
DB2 EEまたはIBM DB2 EEE外部ローダは、次のいずれかの操作モードで動作するように設定
できます。
¨ 挿入。既存のテーブルデータを変更せずに、ロードしたデータをテーブルに追加しま
す。
¨ 置き換え。テーブルから既存のデータをすべて削除して、ロードしたデータを挿入しま
す。 テーブルおよびインデックスの定義は変更されません。
¨ リスタート。以前に中断されたロード操作をリスタートします。
¨ 終了。以前に中断したロード操作を終了して、(整合点を超えている場合でも)操作を
開始ポイントまでロールバックします。 テーブルスペースは通常状態に戻り、外部ロ
ーダーによってすべてのテーブルオブジェクトは一貫した状態になります。
オーソリティ、特権、権限の設定
IBM DB2特権により、データベースリソースの作成およびアクセスが許可されます。オーソ
リティレベルにより、特権をグループ化し、データベースマネージャに対するより高いレ
ベルの保守およびユーティリティ操作を実行することが可能になります。特権とオーソリ
ティにより、データベースマネージャとそのデータベースオブジェクトへのアクセスを制
御します。必要な特権またはオーソリティを持っているオブジェクトにアクセスできま
す。
テーブルにデータをロードするためには、次のいずれかのオーソリティが必要です。
¨ SYSADMオーソリティ
¨ DBADMオーソリティ
¨ データベースに対するLOADオーソリティおよび次のいずれかの特権
- ロードユーティリティをINSERTモード、TERMINATEモード、またはRESTARTモードで起
動する場合、テーブルに対するINSERT特権。
- ロードユーティリティをREPLACEモード、TERMINATEモード、またはRESTARTモードで
起動する場合、テーブルに対するINSERTおよびDELETE特権。
さらに、適切な読み込みアクセスおよび読み込み/書き込み権限を持っている必要がありま
す。
¨ データベースインスタンスのオーナーは、外部ローダ入力ファイルに対する読み込みア
クセス権を持っている必要があります。
¨ IBM DB2がWindows上のサービスとして動作している場合には、サービス開始アカウント
に、LANリソース(ドライブ、ディレクトリ、ファイルなど)を使用する読み込み/書き
込み権限を持つユーザーアカウントを設定する必要があります。
IBM DB2へのロード
277
¨ IBM DB2 EEEにロードする場合には、データベースインスタンスのオーナーがロードダ
ンプファイルおよびロード一時ファイルに対する書き込み権限を持っている必要があり
ます。
IBM DB2 EE外部ローダーの属性の設定
IBM DB2 EE外部ローダーでは、ロード先となる以下のデータベースに基づき、単一のログ
または複数のログが作成されます。
¨ IBM DB2 EEバージョン8.xまたはパーティション化されていないIBM DB2バージョン
9.x。外部ローダーによって、ターゲットフラットファイルと同じディレクトリ内に、
拡張子.ldrlogを持つ単一の外部ローダーログが作成されます。
¨ IBM DB2 EEEバージョン8.xまたはパーティション化されたIBM DB2バージョン9.x。外部
ローダーによって、ターゲットフラットファイルと同じディレクトリ内に、複数の外部
ローダーログが作成されます。 ローダーログには以下の拡張子が付いています。
- ldrlog.load. number。 Load Agent外部ローダープロセスによって作成されたもので
す。 Load Agentによってログファイルが2つ作成されます。
- ldrlog.part. partition_number 。 Partitioning Agent外部ローダープロセスによっ
て作成されたものです。 Partitioning Agentでは、ターゲットテーブル内のパーテ
ィションの数に基づき、複数のファイルを作成できます。
- ldrlog.prep. partition_number 。 Pre-partitioning Agent外部ローダープロセスに
よって作成されたものです。 Pre-partitioning Agentでは、ターゲットテーブル内
のパーティションの数に基づき、複数のファイルを作成できます。
- ldrlog。 IBM DB2 EE外部ローダーによって作成されたものです。
以下の表に、IBM DB2 EE外部ローダー接続の属性を示します。
278
属性
デフォ
ルト値
説明
Opmode
挿入
IBM DB2外部ローダの操作モード。次のいずれかの
操作モードを選択します。
- 挿入
- 置換
- リスタート
- 終了
External
Loader
Executable
db2load
IBM DB2 EE外部ローダー実行可能ファイルの名前。
Integration Serviceプロセスが実行されるマシン
上にインストールされたIBM DB2クライアントバー
ジョンに基づき、次のいずれかのファイル名を入
力します。
- db2load。 バージョン9.5より前のIBM DB2クラ
イアントに使用します。
- db2load95。 IBM DB2クライアントバージョン
9.5に使用します。
DB2 Server
Location
リモー
ト
Integration Serviceに対応するIBM DB2データベ
ースサーバーの場所。 データベースサーバーが、
Integration Serviceが稼動しているマシン上に存
章 18: 外部データのロード
属性
デフォ
ルト値
説明
在している場合は、[ローカル]を選択します。
データベースサーバーがほかのマシン上に存在し
ている場合は、[リモート]を選択します。
ステージング
済み
無効
データのロード方法。データベースへのロード前
に、フラットファイルのステージング領域にデー
タをロードするには、[Is Staged]を選択しま
す。デフォルトでは、データは名前付きパイプを
使用してデータベースにロードされます。
リカバリ可能
有効
forward recoveryが有効な場合は、テーブルスペ
ースをバックアップ保留状態にします。forward
recoveryを無効にすると、IBM DB2テーブルスペー
スはバックアップ保留状態に設定されません。IBM
DB2テーブルスペースがバックアップ保留状態にあ
る場合は、テーブルスペースに関する操作を行う
前にデータベースを完全にバックアップする必要
があります。
IBM DB2 EE外部ローダーを使用した空白スペースのロード
IBM DB2 EE外部ローダーを通して空白スペースをロードする必要がある場合は、セッショ
ンを設定する必要があります。 ステージングしたモードでは、オプションのダブル引用符
を使用するようにフラットファイルを設定します。 ステージングしていないモードでは、
以下の行を制御ファイルに追加します。
MODIFIEDBY = keepblanks
制御ファイルを読み込み専用に設定します。
IBM DB2 EE外部ローダの戻りコード
IBM DB2 EE外部ローダは、ロード操作が成功したか失敗したかを戻りコードで示します。
Integration Serviceによって、外部ローダーの戻りコードがセッションログに書き込まれ
ます。 戻りコード(0)は、ロード操作が成功したことを示します。外部ローダーによっ
てロード操作が正常に完了された場合、Integration Serviceによってセッションログに次
のメッセージが書き込まれます。
WRT_8029 External loader process <external loader name> exited successfully.
それ以外の戻りコードは、ロード操作が失敗したことを示します。Integration Serviceに
よって、以下のエラーメッセージがセッションログに書き込まれます。
WRT_8047 Error: External loader process <external loader name> exited with error <return code>.
IBM DB2へのロード
279
以下の表に、IBM DB2 EE外部ローダーの戻りコードを示します。
コード
説明
0
外部ローダ操作が正常に完了しました。
1
外部ローダが制御ファイルを見つけられません。
2
外部ローダが外部ローダログファイルを開くことができませんでし
た。
3
制御ファイルが他のプロセスによってロックされているため、外部ロ
ーダが制御ファイルにアクセスできませんでした。
4
IBM DB2データベースがエラーを返しました。
IBM DB2 EEE外部ローダの属性の設定
IBM DB2 EEE外部ローダは、データベースにロードするときに異なるロードモードを使用す
るように設定できます。ロードモードにより、IBM DB2 EEE外部ローダがデータベースの複
数パーティションにまたがってデータをどのようにロードするかが決まります。IBM DB2
EEE外部ローダは、次のロードモードを使用するように設定できます。
¨ 分割およびロード。データをパーティション化して、対応するデータベースパーティシ
ョンを使用して同時にロードします。
¨ 分割専用。 データをパーティション化して、指定された分割ファイルディレクトリ内
のファイルに出力を書き込みます。
¨ ロード専用。データをパーティション化しません。 対応するデータベースパーティシ
ョンを使用して既存の分割ファイルにデータをロードします。
¨ 分析。すべてのデータベースパーティション間で均一に分散した最適パーティションマ
ップを生成します。 外部ローダーを分析モードで実行した後に、分割およびロードモ
ードで実行する場合、外部ローダーは最適パーティションマップを使用してデータをパ
ーティション化します。
IBM DB2 EEE外部ローダは、ロード先のデータベースパーティションの数に基づいて複数の
ログを作成します。各パーティションについて、外部ローダはパーティション番号に対応
した番号を外部ローダログファイル名に付加します。 IBM DB EEE外部ローダログのファイ
ル名は、「<>ファイル名</>.ldrlog.<>パーティション番号</2>」という形式で指定しま
す。
Integration Serviceでは、IBM DB2 EEE外部ローダーログがアーカイブされたり、上書き
されることはありません。 外部ローダーの実行時に同じ名前の外部ローダーログが存在す
る場合、外部ローダーによって既存の外部ローダーログファイルの最後に新しい外部ロー
ダーログメッセージが追加されます。外部ローダーログファイルは手動でアーカイブ、ま
たは削除する必要があります。
IBM DB2 EEE外部ローダーの戻りコードの詳細については、IBM DB2のマニュアルを参照し
てください。
280
章 18: 外部データのロード
以下の表に、IBM DB2 EEE外部ローダー接続の属性を示します。
属性
デフォ
ルト値
説明
Opmode
挿入
IBM DB2外部ローダの操作モード。次のいずれか
の操作モードを選択します。
- 挿入
- 置換
- リスタート
- 終了
External
Loader
Executable
db2atld
IBM DB2 EEE外部ローダ実行ファイルの名前。
Split File
Location
なし
分割ファイルの場所。SPLIT_ONLYロードモードを
設定した場合、外部ローダは分割ファイルを作成
します。
Output Nodes
なし
ロード操作を行うデータベースパーティション。
Split Nodes
なし
データをどのように分割するかを決定するデータ
ベースパーティション。この属性を指定しない
と、外部ローダが最適な分割方法を決定します。
Mode
Split
and load
外部ローダがデータをロードするときに使用する
ロードモード。次のいずれかのロードモードを選
択します。
- Split and load
- Split only
- Load only
- 分析
Max Num
Splitters
25
分割プロセスの最大数。
強制
いいえ
開始時に一部のターゲットパーティションまたは
テーブルスペースがオフラインであることを検出
した場合でも、外部ローダ操作を強制的に継続し
ます。
ステータス
Interval
100
外部ローダログに進捗メッセージを書き込む前に
外部ローダがロードするデータのサイズ(単位:
MB)。1~4,000MBの値を指定します。
ポート
6000-60
63
外部ローダがIBM DB2サーバーとの内部通信用ソ
ケットを作成するために使用する、TCPポートの範
囲。
Check Level
Nocheck
入力または出力時にレコードの切り詰めをチェッ
クします。
マップファイ
ル出力
なし
パーティションマップを指定するファイルの名
前。カスタマイズしたパーティションマップを使
IBM DB2へのロード
281
属性
デフォ
ルト値
説明
用するには、この属性を指定します。外部ローダ
を分析ロードモードで実行する場合に、カスタマ
イズしたパーティションマップを生成してくださ
い。
マップファイ
ル入力
なし
外部ローダを[Analyze]ロードモードで実行す
る場合のパーティションマップの名前。外部ロー
ダを[Analyze]モードで実行したい場合は、こ
の属性を指定する必要があります。
トレース
0
データ変換プロセスのダンプとハッシュ値の出力
を見たい場合に、外部ローダがトレースする行
数。
ステージング
済み
無効
データのロード方法。データベースへのロード前
に、フラットファイルのステージング領域にデー
タをロードするには、[Is Staged]を選択しま
す。それ以外の場合、データは名前付きパイプを
使用してデータベースにロードされます。
日付形式
mm/dd/
yyyy
日付形式。ターゲット定義で定義する日付形式と
一致する必要があります。IBM DB2は、次の日付
形式をサポートします。
- MM/DD/YYYY
- YYYY-MM-DD
- DD.MM.YYYY
- YYYY-MM-DD
Oracleへのロード
Oracleターゲットにロードする際は、Oracle SQL Loaderを使用してターゲットに対して挿
入、更新、および削除操作を実行してください。
Oracle外部ローダーでは、データベースによって拒否されたデータのための拒否ファイル
が作成されます。 拒否ファイルの拡張子は.ldrrejectです。ローダは、ターゲットファイ
ルディレクトリに拒否ファイルを保存します。
282
章 18: 外部データのロード
Oracle外部ローダーに関するルールおよびガイドライ
ン
外部ローダを使用してOracleにロードする場合には、以下の規則およびガイドラインに従
ってください。
¨ Oracle外部ローダを選択した場合は、デフォルトの外部ローダの実行ファイル名は
sqlloadです。これはほとんどのUNIXプラットフォームでは正しい名前ですが、Windows
を使っている場合は、Oracleのマニュアルを調べて、外部ローダ実行ファイルの名前を
確認してください。
¨ Oracle OS認証を使用する接続の場合は、外部ローダ接続を作成する際にPmNullUserユ
ーザー名とPmNullPasswdを入力してください。PowerCenterは接続ユーザー名が
PmNullUserでOracleデータベースへの接続を要求しているときに、Oracle OS認証を使
用します。
¨ Oracle外部ローダのターゲットフラットファイルは、固定長または区切りファイルで
す。
¨ パーティション化されたターゲットに書き込むときに最適なパフォーマンスを得るに
は、[ダイレクトパス]を選択してください。詳細については、Oracleのマニュアルを
参照してください。
¨ Oracle 10.xまたはOracle 11.xターゲットのタイムスタンプカラムにサブ秒データを書
き込むようにセッションを設定した場合、Integration Serviceによってデフォルトで
書き込まれるサブ秒データはマイクロ秒までです。 精度を高めるには、制御ファイル
を編集し、タイムスタンプ精度を変更します。たとえば、TIMESTAMP(9)を指定してナノ
秒を処理します。
¨ 最適なパフォーマンスを得るには、以下のガイドラインに従って、パーティション化さ
れたターゲットとパーティション化されていないターゲットの設定を決定します。
ターゲット
ロード方法
パラレルロード
ロードモード
パーティション
化
ダイレクトパス
有効化
付加
パーティション
化
通常パス
有効化
なし
非パーティショ
ン化
なし
無効化*
なし
* パラレルモードを無効にした場合、データを単一のターゲットファイルへ
ルーティングするには、ラウンドロビンパーティション化を選択する必要が
あります。
Oracleへのマルチバイトデータのロード
マルチバイトデータをOracleへロードするときは、固定長ファイルのデータ精度はバイト
単位、区切りファイルのデータ精度は文字単位です。ターゲットテーブルのカラムの幅
が、すべてのデータを格納するのに十分かどうか確認してください。
Oracleは、Ncharなどの文字単位のデータ型をサポートしています。その場合、精度は文字
単位になります。Ncharデータ型を使用する場合は、最大文字数にKを掛けます。Kは、選択
Oracleへのロード
283
したターゲットコードページで1文字に含まれる最大のバイト数です。これにより、
Integration Serviceではターゲットファイルをロードする前にデータを切り詰めることが
なくなります。
Oracle外部ローダーの属性の設定
以下の表に、Oracle外部ローダー接続の属性を示します。
284
属性
デフォルト値
説明
エラー数の上
限値
1
外部ローダがロード操作を中止するまでに許
可されるエラー数。
ロードモード
付加
外部ローダがデータをロードするときに使用
するロードモード。次のいずれかのロードモ
ードを選択します。
- 付加
- 挿入
- 置換
- 切り詰め
ロード方法
通常パスを使
用
外部ローダがデータをロードするときに使用
する方式。次のいずれかのロード方式を選択
します。
- 通常パスを使用
- ダイレクトパスを使用(リカバリ可能)。
- ダイレクトパスを使用(リカバリ可能)。
パラレルロー
ドを有効にす
る
パラレルロー
ドを有効にす
る
Oracle外部ローダが、パーティション化され
たOracleターゲットテーブルに並行してデー
タをロードするかどうかを決定します。
- パーティション化されたターゲットにロー
ドする場合は、[パラレルロード゙を有効に
する]を選択します。
- パーティション化されていないターゲット
にロードする場合は、[Do Not Enable
Parallel Load]を選択します。
Rows Per
Commit
10000
[ダイレクトパスを使用]ロード方式の場
合、この属性はロード操作に対するバインド
配列内の行数を指定します。[Use Direct
Path]ロード方式の場合、この属性は、外部
ローダがデータベースにデータを保存する前
にターゲットフラットファイルから読み込む
行数を指定します。
External
Loader
Executable
sqlload
外部ローダ実行ファイルの名前。
章 18: 外部データのロード
属性
デフォルト値
説明
ログファイル
名
なし
外部ローダログファイルのパスと名前。
ステージング
済み
無効
データのロード方法。データベースへのロー
ド前に、フラットファイルのステージング領
域にデータをロードするには、[Is Staged]
を選択します。それ以外の場合、データは名
前付きパイプを使用してデータベースにロー
ドされます。
Sybase IQへのロード
Sybase IQにロードする際は、Sybase IQ外部ローダーを使用して挿入操作を実行します。
Integration Serviceでは、マルチバイトデータをSybase IQターゲットにロードすること
ができます。 Integration Serviceでは、Sybase IQサーバーがIntegration Serviceと同
じマシン上にある場合、または異なるマシン上にある場合でもフラットファイルに書き込
むことができます。 Integration ServiceがSybase IQデータベースサーバーに対してロ
ーカルである場合、Integration Serviceでは名前付きパイプに書き込むことができます。
Sybase IQ外部ローダーに関するルールおよびガイドラ
イン
外部ローダを使用してSybase IQにロードする場合には、以下の規則およびガイドラインに
従ってください。
¨ ターゲットテーブルがプライマリキー制約に違反していないことを確認する必要があり
ます。
¨ Sybase IQ外部ローダを使用するには、読み込み/書き込みアクセス権を持つSybase IQ
ユーザーを事前に設定しておかなければなりません。
¨ Sybase IQ外部ローダのターゲットフラットファイルは、固定長または区切りファイル
です。
¨ Sybase IQ外部ローダはターゲットに対して更新操作や削除操作を実行できません。
¨ 複数のパーティションを伴うセッションについては、ラウンドロビンのパーティション
タイプを使用して、データを単一のターゲットファイルにルーティングします。
¨ Integration ServiceおよびSybase IQサーバーが異なるマシン上にある場合は、
Integration ServiceをホストするマシンからSybase IQサーバーをホストするマシン
へドライブをマッピングまたはマウントします。
Sybase IQへのマルチバイトデータのロード
マルチバイトデータをSybase IQターゲットにロードする場合は、以下のガイドラインを使
用します。
Sybase IQへのロード
285
区切りフラットファイルターゲット
区切りフラットファイルの場合、データ精度は文字単位です。ターゲットにマルチバイト
文字データを挿入する場合、マルチバイトデータ用に追加の精度を確保する必要はありま
せん。Sybase IQでは、オプションの引用符を使用できません。区切りターゲットフラット
ファイルを持っている場合は、[引用符]に[なし]を選択する必要があります。
マルチバイトデータをSybase IQにロードする場合、NULLキャラクタおよび区切り文字はそ
れぞれ4バイトまでにすることができます。区切り文字が通常の文字として読み取られない
ようにするために、区切り文字の各バイトは0x40未満のASCII値でなければなりません。
固定幅フラットファイルターゲット
固定長フラットファイルの場合、データ精度は文字単位ではなくバイト単位です。固定長
フラットファイルターゲットにマルチバイトデータをロードする場合は、マルチバイトデ
ータを許容できるように精度を設定します。精度が小さくてマルチバイトデータに対応で
きない場合、Integration Serviceにより、行が拒否ファイルに書き込まれます。
Sybase IQ外部ローダーの属性の設定
PowerCenterでは、Sybase IQに外部ローダー接続タイプを使用します。Sybase IQデータ
ベースのログイン資格情報には接続文字列属性を指定します。
接続文字列の属性は、使用するSybaseのバージョンに応じて次のようになります。
¨ Sybase IQ 12およびそれ以前のSybase IQのバージョンでは、接続文字列の属性は次の
ようになります。
uid=user ID; pwd=password; eng=Sybase IQ database server name; links=tcpip (host=host name;
port=port number)
例えば、次の接続文字列を使用できます。
uid=qasrvr65;pwd=qasrvr65;eng=SUNQA2SybaseIQ_1243;links=tcpip(host=sunqa2)
¨ Sybase IQ 15.xの接続文字列の属性は、次のようにする必要があります。
uid=user ID; pwd=password; eng=Sybase IQ database server name
例えば、次の接続文字列を使用できます。
uid=qasrvr65;pwd=qasrvr65;eng=SUNQA2SybaseIQ
注: 接続文字列に引用符を使用した場合、セッションが失敗する可能性があります。
以下の表に、Sybase IQ外部ローダー接続の属性を示します。
286
属性
デフォル
ト値
説明
Block Factor
10000
ターゲットSybaseテーブル内の1ブロックあた
りのレコード数。外部ローダがロード操作に
[Block Factor]属性を適用するのは、固定
長フラットファイルターゲットの場合のみで
す。
ブロックサイズ
50000
Sybaseデータベース操作に使用されるブロッ
クのサイズ。外部ローダがロード操作に
章 18: 外部データのロード
属性
デフォル
ト値
説明
[Block Size]属性を適用するのは、区切り
フラットファイルターゲットの場合のみで
す。
Checkpoint
有効
利用可能にすると、Sybase IQデータベースは
テーブルを正常にロードしたあとでチェック
ポイントを発行します。利用不可にすると、
データベースはチェックポイントを発行しま
せん。
Notify Interval
1000
Sybase IQ外部ローダが外部ローダログにステ
ータスメッセージを書き込む前にロードする
行数。
Server Datafile
Directory
なし
Integration Serviceをホストするマシンか
らアクセスできる、Sybase IQサーバーの場
所。ターゲットファイルの場所を指定する
と、Sybase IQサーバーはそのファイルのアク
セスに失敗することがあります。
この属性には、データベースサーバーのイン
ストールディレクトリからの相対的な位置を
指定します。
ディレクトリがWindowsシステムにある場合
は、ディレクトリパスにバックスラッシュ(\
\uff09を使用します。
D:\mydirectory\inputfile.out
ディレクトリがUNIXシステムにある場合は、
ディレクトリパスにフォワードスラッシュ
(/)を使用します。
/mydirectory/inputfile.out
データベースサーバーインストールをホスト
するマシンに対応する構文を使用してディレ
クトリパスを入力します。たとえば
Integration ServiceがWindowsマシン上にあ
り、Sybase IQサーバがUNIXマシン上にある
場合は、UNIXの構文を使用します。
External Loader
Executable
Sybase
IQ 12お
よびそれ
以前のバ
ージョ
ン:
dbisql
Sybase
15.x:
dbisql host<hos
tname> port<por
Sybase IQ外部ローダ実行ファイルの名前。
Sybase IQ外部ローダ接続を作成する場合、
Workflow Managerは外部ローダ実行ファイル
の名前をデフォルトでdbisqlに設定します。
別の名前の実行ファイルを使用する場合は、
[外部ローダ実行可能]フィールドを更新す
る必要があります。外部ローダ実行ファイル
のディレクトリがシステムパスに含まれてい
ない場合は、このフィールドにファイルのパ
スとファイル名を入力する必要があります。
Sybase IQへのロード
287
属性
デフォル
ト値
説明
t
number>
Is Staged
有効
データのロード方法。データベースへのロー
ド前に、フラットファイルのステージング領
域にデータをロードするには、[Is Staged]
を選択します。名前付きパイプからデータを
ロードするには、この属性をクリアします。
Integration ServiceがSybase IQデータベー
スに対してローカルな場合、Integration
Serviceは名前付きパイプに書き込むことがで
きます。
Teradataへのロード
Teradataターゲットにロードする場合、次のいずれかの外部ローダーを使用します。
¨ Multiload。大量の増分ロードのための挿入、更新、削除およびupsert操作を行いま
す。 単一のパーティションでセッションを実行する際にこのローダーを使用します。
マルチロードによりテーブルレベルのロックが取得されるので、オフラインローディン
グに適しています。
¨ TPump。比較的少量の変更のための挿入、更新、削除およびupsert操作を行います。 複
数のパーティションでセッションを実行する際にこのローダーを使用します。TPumpに
よってテーブルに関する行ハッシュロックが取得されるので、TPumpがテーブルにロー
ドしているときも他のユーザーはそのテーブルにアクセスできます。
¨ FastLoad。大量の初期ロードのための挿入、または大量の切り詰めおよび再ロード操作
のための挿入を行います。 単一のパーティションでセッションを実行する際にこのロ
ーダーを使用します。セカンダリインデックスが定義されていない空のターゲットテー
ブルでこのローダーを使用します。
Teradata外部ローダーを使用して更新またはupsert操作を行う場合、Mapping Designerの
[ターゲット更新の上書き]オプションを使用して、外部ローダー制御ファイルのUPDATE
文をオーバーライドします。upsertでは、外部ローダー制御ファイルのINSERT文は変更さ
れません。
288
章 18: 外部データのロード
Teradata外部ローダーに関するルールおよびガイドラ
イン
外部ローダーを使用してTeradataにロードする際には、以下のルールおよびガイドライン
を使用します。
¨ Integration Serviceでは、Teradata外部ローダーを使用して固定長フラットファイル
および区切りフラットファイルをTeradataデータベースにロードすることができます。
すべてのTeradataローダは改行(\n)文字を使用して個々のレコードを区切るため、
Teradata ローダの区切り文字として改行文字を使用することはできません。
¨ セッションに1つのパーティションが含まれる場合、ターゲット出力ファイル名は、拡
張子を含めて最大27文字です。セッションに複数のパーティションが含まれる場合、タ
ーゲット出力ファイル名は、拡張子を含めて最大25文字です。
¨ Teradata外部ローダを使用してマルチバイトデータをロードします。
¨ Teradata外部ローダを使用してバイナリデータをロードすることはできません。
¨ 名前付きパイプを使用してTeradataにロードする場合、チェックポイント操作が外部ロ
ーダによって実行されないように、チェックポイントの値を0に設定してください。
¨ 使用しているローダに従って、エラーテーブル名、ログテーブル名、または作業テーブ
ル名を指定できます。エラーデータベース名、ログデータベース名、または作業データ
ベース名も指定できます。
¨ セッションプロパティで制御ファイルを上書きできます。
¨ Teradataを使用する場合、制御ファイルにパスワードが出力されないように、データベ
ースのパスワードとしてPmNullPasswdを入力することができます。代わりに、
Integration Serviceにより制御ファイルにパスワード用に空の文字列が書き込まれま
す。
制御ファイルのオーバーライド
セッションのローダ接続を編集するときに、制御ファイルを上書きできます。ローダ接続
で編集できない一部のローダプロパティを変更したいときなどに、制御ファイルをオーバ
ーライドできます。たとえば、制御ファイル中のトレースオプションを設定できます。
制御ファイルを上書きするときは、Workflow Managerが制御ファイルをリポジトリに保存
します。制御ファイルの属性をクリアするまで、Integration Serviceでは、セッションの
実行時および各後続セッションの実行時に保存された制御ファイルが使用されます。 制御
ファイルを編集した後にターゲットまたはローダ接続設定を変更した場合は、これらの変
更は制御ファイルに含まれません。これらの変更を含める場合は、制御ファイルを再度生
成して編集する必要があります。
制御ファイルを上書きしない場合、セッションを実行するたびに、Integration Serviceに
よってセッションプロパティとローダープロパティに基づいて、新規制御ファイルが生成
されます。 Integration Serviceによって、制御ファイルが出力ファイルディレクトリに
生成されます。 セッションが実行されるたびに制御ファイルを上書きします。
注: Workflow Manager では、制御ファイルの構文は検証しません。セッションの実行時
にTeradataが制御ファイルの構文を検証します。制御ファイルが無効だと、セッションは
失敗に終わります。
編集済みの制御ファイルを表示するには、制御ファイルエディタを開きます。
Teradataへのロード
289
制御ファイルを上書きするには:
1.
Workflow Managerで、セッションプロパティを開きます。
2.
[マッピング]タブをクリックし、[トランスフォーメーション]ビューを開きま
す。
3.
[ターゲット]ノードをクリックします。
4.
[接続]設定の[値]フィールドで、[変更]をクリックします。
5.
[Control File Content Override(制御ファイルの内容の上書き)]フィールドで
[開く]をクリックします。
[Control File Editor(制御ファイルエディタ)]ダイアログボックスが表示されま
す。
6.
[生成]をクリックします。
Workflow Managerはセッションプロパティとローダプロパティに基づいて制御ファイ
ルを生成します。
7.
生成された制御ファイルを編集し、[OK]をクリックして変更を保存します。
制御ファイルでのユーザー変数の作成
MultiLoadまたはTPump外部ローダ属性を設定する場合は、ユーザー変数を作成できます。
ユーザー変数は、制御ファイルで使用するカスタム定義された置き換え変数です。ユーザ
ー変数は、接続オブジェクト属性で利用できない可能性があるセッション固有の情報を取
得します。多くの場合、ユーザー変数はロード前またはロード後の処理に使用されます。
ユーザー変数名および置き換え値は、接続オブジェクト内に定義します。制御ファイル
で、置換変数の接頭語とユーザー変数名を対応するコマンドに追加します。セッションを
実行すると、Integration Serviceは制御ファイル内の置換変数の接頭語とユーザー変数名
を、置き換え値に置き換えます。制御ファイルを編集した後に置き換え値を変更した場
合、制御ファイルは新しい値を使用します。
ユーザー変数を作成する場合には、次の規則およびガイドラインに従ってください。
¨ ユーザー変数を作成する場合は、以下の構文を使用します。
<User_Variable_Name>=<Substitution_Value>
¨ ユーザー変数名や置き換え値にスペースを含めると、セッションは失敗します。
¨ 制御ファイルにユーザー変数を追加する場合は、以下の構文を使用します。
:CF.<User_Variable_Name>
例
Integration Serviceがターゲットにデータをロードした後、システム日付を出力ファイル
に表示できます。接続オブジェクトでは、以下のユーザー変数を設定します。
OutputFileName=output_file.txt
制御ファイルで、以下のように設定します。
DISPLAY ‘&SYSDATE’ TO FILE ‘:CF.OutputFileName’
セッションを実行すると、Integration Serviceは「:CF.OutputFileName」を制御ファイ
ルの「output_file.tx」に置き換えます。
290
章 18: 外部データのロード
Teradata MultiLoad外部ローダーの属性の設定
MultiLoad外部ローダで作業する場合は、以下の規則およびガイドラインに従ってくださ
い。
¨ ターゲット上での挿入、更新、削除および更新挿入操作を行えます。また、データドリ
ブンモードを使用し、アップデートストラテジトランスフォーメーションまたはカスタ
ムトランスフォーメーションに基づいて、挿入、更新、および削除操作を実行すること
ができます。
¨ 複数のパーティションを伴うセッションについては、ラウンドロビンのパーティション
タイプを使用して、データを単一のターゲットファイルにルーティングします。
¨ データベースで許可されている同時実行セッションの最大数を超える数のセッションを
起動すると、セッションがハングすることがあります。[Tenacity]および[Sleep]
に最小値を設定すると、セッションがハングではなく、失敗するようにできます。
Teradata MultiLoad外部ローダの属性を設定するには、[接続]-[ローダ]をクリック
し、[タイプ]を選択し、[編集]をクリックします。
以下の表に、Teradata MultiLoad外部ローダーに対して設定する属性を示します。
属性
デフォ
ルト値
説明
TDPID
なし
TeradataデータベースID。
データベース
名
なし
ベース名(オプション)。データベース名を指定しな
い場合、Integration Serviceによって、マッピング
で定義したターゲットテーブルデータベース名が使用
されます。
日付形式
なし
日付形式。接続オブジェクトの日付形式は、ターゲッ
ト定義で定義する日付形式と一致する必要がありま
す。Integration Serviceは、次の日付形式をサポー
トします。
- DD/MM/YYYY
- MM/DD/YYYY
- YYYY/DD/MM
- YYYY/MM/DD
エラー数の上
限値
0
MultiLoadがMultiLoadエラーテーブルに書き込める
リジェクトレコードの合計数。一意性違反は、リジェ
クトレコードとして数えられません。
エラー制限が0の場合は、リジェクトされるレコード
数に制限がないことを意味します。
チェックポイ
ント
10,000
チェックポイント間の間隔。間隔は、次の値に設定で
きます。
- 60以上。MultiLoadは、このレコード数を処理する
ごとにチェックポイント操作を実行します。
- 1–59。MultiLoadは、指定された間隔(単位:分)
でチェックポイント操作を実行します。
- 0。MultiLoadは、インポート作業中にチェックポイ
ント操作を実行しません。
Teradataへのロード
291
属性
デフォ
ルト値
説明
Tenacity
10,000
MultiLoadが必要なセッションにログインしようと試
みる時間(単位:時間)。ログインが失敗した場合、
MultiLoadは[Sleep]属性に指定された時間(単
位:分)だけ待ってから、ログインを再試行します。
MultiLoadは、ログインが成功するか、または
[Tenacity]属性に指定された時間が経過するまで、
ログインの試行を繰り返します。
ロードモード
Upsert
SQLコマンドを生成するモード。Insert、Delete、
Update、Upsert、Data Drivenのいずれかを選択しま
す。
データドリブンのロードを選択すると、Integration
Serviceは、アップデートストラテジまたはカスタム
トランスフォーメーションの指示に従って、挿入、削
除、または更新の行にフラグをたてるか決定します。
Integration Serviceはアップデートストラテジを示
すカラムをターゲットファイルまたは名前付きパイプ
に出力します。制御ファイルでは、これらの値を使用
しターゲットに対してどのようにデータをロードする
のか決定します。Integration Serviceでは、以下の
値を使用してアップデートストラテジを指定します。
0 - 挿入
1 - 更新
2 - 削除
Drop Error
Tables
有効
次のセッションを開始する前にMultiLoadエラーテー
ブルを削除します。テーブルを削除するにはこのオプ
ションを選択します。
External
Loader
Executable
mload
Teradata外部ローダ実行ファイルのファイル名と必要
に応じてファイルパス。外部ローダ実行ファイルのデ
ィレクトリがシステムパスに含まれていない場合は、
絶対パスを入力する必要があります。
最大セッショ
ン数
1
MultiLoadジョブ1つあたりのMultiLoadセッションの
最大数。[Max Sessions]は1~32,767までの値でな
ければなりません。
複数のMultiLoadセッションを実行すると、クライア
ントとデータベースが使用するリソースの量が増えま
す。そのため、この値を小さな数に設定すると、パフ
ォーマンスが向上します。
スリープ
6
MultiLoadがログインを再試行するまでの待ち時間
(単位:分)。MultiLoadは、ログインが成功する
か、または[Tenacity]属性に指定された時間が経過
するまで、ログインの試行を繰り返します。
[Sleep]には0より大きな値を指定する必要がありま
す。0を指定すると、MultiLoadはエラーメッセージ
を発行し、デフォルトの値(6分)を使用します。
292
章 18: 外部データのロード
属性
デフォ
ルト値
説明
ステージング
済み
無効
データのロード方法。データベースへのロード前に、
フラットファイルのステージング領域にデータをロー
ドするには、[Is Staged]を選択します。それ以外
の場合、データは名前付きパイプを使用してデータベ
ースにロードされます。
Error
Database
なし
Error Database Nameこの属性を使用して、デフォル
トのエラーデータベース名を上書きします。データベ
ース名を指定しない場合、Integration Serviceによ
って、ターゲットテーブルデータベースが使用されま
す。
ワークテーブ
ルデータベー
ス
なし
作業テーブルデータベースの名前。この属性を使用し
て、デフォルトの作業テーブルデータベース名を上書
きします。データベース名を指定しない場合、
Integration Serviceによって、ターゲットテーブル
データベースが使用されます。
ログテーブル
データベース
なし
ログテーブルデータベースの名前。この属性を使用し
て、デフォルトのログテーブルデータベース名を上書
きします。データベース名を指定しない場合、
Integration Serviceによって、ターゲットテーブル
データベースが使用されます。
ユーザー変数
なし
デフォルトの制御ファイルで使用するユーザー定義変
数。
以下の表に、セッションプロパティでTeradata MultiLoad外部ローダー接続オブジェクト
を上書きする際に設定する属性を示します。
属性
デフォ
ルト値
説明
エラーテーブル1
なし
最初のエラーテーブルのテーブル名。この属性を
使用して、デフォルトのエラーテーブル名を上書
きします。エラーテーブル名を指定しない場合、
Integration Serviceにより
ET_<target_table_name>が使用されます。
エラーテーブル2
なし
2番目のエラーテーブルのテーブル名。この属性を
使用して、デフォルトのエラーテーブル名を上書
きします。エラーテーブル名を指定しない場合、
Integration Serviceにより、
UV_<target_table_name>が使用されます。
ワークテーブル
なし
作業テーブル名は、デフォルトの作業テーブル名
を上書きします。作業テーブル名を指定しない場
合、Integration Serviceにより
WT_<target_table_name>が使用されます。
Teradataへのロード
293
属性
デフォ
ルト値
説明
ログテーブル
なし
ログテーブル名は、デフォルトのログテーブル名
を上書きします。ログテーブル名を指定しない場
合、Integration Serviceにより
ML_<target_table_name>が使用されます。
制御ファイルの
上書き
なし
制御ファイルのテキストこの属性を使用して、
Integration ServiceがTeradataへロードすると
きの制御ファイルを上書きします。
Teradata TPump外部ローダーの属性の設定
ターゲット上での挿入、更新、削除および更新挿入操作を行えます。また、データドリブ
ンモードを使用し、アップデートストラテジトランスフォーメーションまたはカスタムト
ランスフォーメーションに基づいて、挿入、更新、および削除操作を実行することができ
ます。
複数のパーティションを含むセッションを実行する場合は、各パーティションについて
Teradata TPump外部ローダを選択してください。
Teradata TPump外部ローダの属性を設定するには、[接続]-[ローダ]をクリックし、
[タイプ]を選択し、[編集]をクリックします。
以下の表に、Teradata TPump外部ローダーに対して設定する属性を示します。
294
属性
デフォ
ルト値
説明
TDPID
なし
TeradataデータベースID。
データベース名
なし
ベース名(オプション)。データベース名を指定
しない場合、Integration Serviceによって、マッ
ピングで定義したターゲットテーブルデータベー
ス名が使用されます。
エラー数の上限
値
0
エラーとして拒否される行数を制限します。エラ
ー制限を超えると、TPumpは、最後のエラーが発生
したトランザクションをロールバックします。エ
ラー制限が0の場合は、TPumpはエラーが1回発生
しただけで処理を中止します。
チェックポイン
ト
15
チェックポイント間の時間間隔(単位:分)。チ
ェックポイントは、0~60の範囲で設定する必要が
あります。
Tenacity
4
TPumpが必要なセッションにログインしようと試み
る時間(単位:時間)。ログインが失敗した場
合、TPumpは[Sleep]属性に指定された時間(単
位:分)だけ待ってから、ログインを再試行しま
す。TPumpは、ログインが成功するか、または
章 18: 外部データのロード
属性
デフォ
ルト値
説明
[Tenacity]属性に指定された時間が経過するま
で、ログインの試行を繰り返します。
[Tenacity]を無効にするには、値を0に設定しま
す。
ロードモード
Upsert
SQLコマンドを生成するモード。Insert、Delete、
Update、Upsert、Data Drivenのいずれかを選択し
ます。
データドリブンのロードを選択すると、
Integration Serviceは、アップデートストラテジ
またはカスタムトランスフォーメーションの指示
に従って、挿入、削除、または更新の行にフラグ
をたてるか決定します。Integration Serviceはア
ップデートストラテジを示すカラムをターゲット
ファイルまたは名前付きパイプに出力します。制
御ファイルでは、これらの値を使用し、データベ
ースに対してどのようにデータをロードするかを
決定します。Integration Serviceでは、以下の値
を使用してアップデートストラテジを指定しま
す。
0 - 挿入
1 - 更新
2 - 削除
Drop Error
Tables
有効
次のセッションを開始する前にTPumpエラーテーブ
ルを削除します。テーブルを削除するにはこのオ
プションを選択します。
External
Loader
Executable
tpump
Teradata外部ローダ実行ファイルのファイル名と
必要に応じてファイルパス。外部ローダ実行ファ
イルのディレクトリがシステムパスに含まれてい
ない場合は、絶対パスを入力する必要がありま
す。
最大セッション
数
1
TPumpジョブ1つあたりのTPumpセッションの最大
数。セッション内の各パーティションは、固有の
TPumpジョブを開始します。複数のTPumpセッショ
ンを実行すると、クライアントとデータベースが
使用するリソースの量が増えます。そのため、こ
の値を小さな数に設定すると、パフォーマンスが
向上します。
スリープ
6
TPumpがログインを再試行するまでの待ち時間(単
位:分)。TPumpは、ログインが成功するか、また
は[Tenacity]属性に指定された時間が経過する
まで、ログインの試行を繰り返します。
Packing Factor
20
各セッションバッファが保持する行数。パッキン
グにより、ターゲットフラットファイルと
Teradataデータベースの間での送受信の回数が減
Teradataへのロード
295
属性
デフォ
ルト値
説明
るため、ネットワークおよびチャネルの効率が向
上します。
Statement Rate
0
TPump実行ファイルがTeradataデータベースに文を
送信する初期最大速度(毎分)。この属性を0に設
定した場合、速度は不定になります。
Serialize
無効
特定のキーの組み合わせ(行)に対する操作が連
続的に行われるかどうかを指定します。
TPumpジョブで1つの行に対して複数の変更がある
場合は、このオプションを有効にしてください。
キー範囲が同じでフィルタ条件が異なる複数のパ
ーティションがあるセッションでは、1つの行に対
して複数の変更が行われる場合があります。この
場合(特に[Pack]属性が1より大きな値に設定さ
れている場合)には、[Serialize]を有効にし
て、Teradataデータベースのロック競合を避けた
方がよいでしょう。
[Serialize]を有効にした場合、Integration
Serviceは、ターゲットテーブルにキーカラムとし
て指定されているプライマリキーを使用します。
ターゲットテーブルにプライマリキーがない場合
には、このオプションをクリアするか、制御ファ
イルのデータレイアウトセクションでキーカラム
を指定します。
296
Robust
無効
[Robust]を選択しない場合、TPumpは単純なリス
タートロジックを使用します。この場合、リスタ
ートロジックによりTPumpは最後のチェックポイン
トから処理を開始します。TPumpは、チェックポイ
ント後にロードされたデータがあれば、そのデー
タを再ロードします。この方法では、堅牢なロジ
ックでの追加のデータベース書き込みによる余分
なオーバーヘッドは生じません。
No Monitor
有効
この属性を選択すると、TPumpは、TPumpモニタア
プリケーションからの文速度の変更、またはTPump
モニタアプリケーションの更新ステータス情報を
チェックしないようになります。
ステージング済
み
無効
データのロード方法。データベースへのロード前
に、フラットファイルのステージング領域にデー
タをロードするには、[Is Staged]を選択しま
す。それ以外の場合、データは名前付きパイプを
使用してデータベースにロードされます。
Error Database
なし
Error Database Nameこの属性を使用して、デフォ
ルトのエラーデータベース名を上書きします。デ
ータベース名を指定しない場合、Integration
Serviceによって、ターゲットテーブルデータベー
スが使用されます。
章 18: 外部データのロード
属性
デフォ
ルト値
説明
ログテーブルデ
ータベース
なし
ログテーブルデータベースの名前。この属性を使
用して、デフォルトのログテーブルデータベース
名を上書きします。データベース名を指定しない
場合、Integration Serviceによって、ターゲット
テーブルデータベースが使用されます。
ユーザー変数
なし
デフォルトの制御ファイルで使用するユーザー定
義変数。
以下の表に、セッションプロパティでTeradata TPump外部ローダー接続オブジェクトをオ
ーバーライドする際に設定する属性を示します。
属性
デフォ
ルト値
説明
エラーテーブル
なし
エラーテーブル名。この属性を使用して、デフォ
ルトのエラーテーブル名を上書きします。エラー
テーブル名を指定しない場合、Integration
Serviceにより
ET_<target_table_name><partition_number>が使
用されます。
ログテーブル
なし
ログテーブル名この属性を使用して、デフォルト
のログテーブル名を上書きします。ログテーブル
名を指定しない場合、Integration Serviceにより
TL_<target_table_name><partition_number>が使
用されます。
制御ファイルの
上書き
なし
制御ファイルのテキストこの属性を使用して、
Integration ServiceがTeradataへロードするとき
の制御ファイルを上書きします。
Teradata FastLoad外部ローダーの属性の設定
FastLoad外部ローダで作業する場合は、以下のガイドラインに従ってください。
¨ 各FastLoadジョブは、データを1つのTeradataデータベーステーブルにロードします。
FastLoadを使用して複数のテーブルにデータをロードさせるには、複数のFastLoadジョ
ブを作成する必要があります。
¨ 複数のパーティションを伴うセッションについては、ラウンドロビンのパーティション
タイプを使用して、データを単一のターゲットファイルにルーティングします。
¨ 二次インデックスの定義されていない空のターゲットテーブルである必要があります。
¨ FastLoadは、ターゲットテーブルにプライマリキーが存在する場合、出力ファイルの重
複行をTeradataデータベースのターゲットテーブルにロードしません。
¨ 日付の値をターゲットテーブルにロードする場合、ターゲットテーブルのカラムに
「YYYY-MM-DD」の形式で日付形式を設定する必要があります。
Teradataへのロード
297
¨ FastLoadを使用してバイナリデータをロードすることはできません。
¨ 区切り文字としてカンマ(,)、タブ(\t)、およびパイプ( | )を使用できます。
Teradata FastLoad外部ローダに属性を設定するには、[接続]-[ローダ]をクリック
し、[タイプ]を選択し、[編集]をクリックします。
以下の表に、Teradata FastLoad外部ローダーに対して設定する属性を示します。
属性
デフォ
ルト値
説明
TDPID
なし
TeradataデータベースID。
データベース
名
なし
データベース名。
エラー数の上
限値
1,000,
000
FastLoadがデータベーステーブルへのロードを中止す
るまでにリジェクトできる行の最大数。
チェックポイ
ント
0
チェックポイントとチェックポイントとの間に
Teradataデータベースへ送信される行数。FastLoad
ジョブの実行中に処理が停止した場合、最近のチェッ
クポイントからジョブをリスタートできます。
「0」を入力した場合、FastLoadはチェックポイント
操作を実行しません。
Tenacity
4
最大数のロードジョブがTeradataデータベースで既に
実行されている場合に、必要なFastLoadセッションに
対してFastLoadがログインの試行を繰り返す時間の長
さです(単位:時間)。FastLoadは、新しいセッショ
ンへのログイン時に、最大数のロードセッションが
Teradataデータベースで既に実行されていることが分
かった場合、ログインされた新しいセッションをすべ
てログオフさせ、[Sleep]属性に指定された時間
(単位:分)だけ待ってから、ログインを再度試みま
す。FastLoadは、必要な数のセッションにログインで
きるまで、または[Tenacity]属性に指定された時間
が経過するまで、ログインの試行を繰り返します。
Drop Error
Tables
有効
次のセッションを開始する前にFastLoadエラーテーブ
ルを削除します。前のジョブからのデータがあるエラ
ーテーブルが存在する場合、FastLoadは実行されませ
ん。
テーブルを削除するにはこのオプションを選択しま
す。
298
External
Loader
Executable
fastlo
ad
Teradata外部ローダ実行ファイルのファイル名と必要
に応じてファイルパス。外部ローダ実行ファイルのデ
ィレクトリがシステムパスに含まれていない場合は、
絶対パスを入力する必要があります。
最大セッショ
ン数
1
FastLoadジョブ1つあたりのFastLoadセッションの最
大数。[最大セッション数]は1以上で、さらにシス
テムのアクセスモジュールプロセス(AMP)の合計数
以下でなければなりません。
章 18: 外部データのロード
属性
デフォ
ルト値
説明
スリープ
6
FastLoadがログインを再試行するまでの待ち時間(単
位:分)。FastLoadは、ログインが成功するか、また
は[Tenacity]属性に指定された時間が経過するま
で、ログインの試行を繰り返します。
ターゲットテ
ーブルの切り
詰め
無効
FastLoadジョブを開始する前に、ターゲットデータベ
ーステーブルを切り詰めます。FastLoadでは、空でな
いテーブルにデータをロードすることはできません。
ステージング
済み
無効
データのロード方法。データベースへのロード前に、
フラットファイルのステージング領域にデータをロー
ドするには、[Is Staged]を選択します。それ以外
の場合、データは名前付きパイプを使用してデータベ
ースにロードされます。
Error
Database
なし
Error Database Nameこの属性を使用して、デフォル
トのエラーデータベース名を上書きします。データベ
ース名を指定しない場合、Integration Serviceによ
って、ターゲットテーブルデータベースが使用されま
す。
以下の表に、セッションプロパティでTeradata FastLoad外部ローダー接続オブジェクトを
オーバーライドする際に設定する属性を示します。
属性
デフォ
ルト値
説明
エラーテーブ
ル1
なし
最初のエラーテーブルのテーブル名は、デフォルトの
エラーテーブル名を上書きします。エラーテーブル名
を指定しない場合、Integration Serviceにより
ET_<target_table_name>が使用されます。
エラーテーブ
ル2
なし
2番目のエラーテーブルのテーブル名は、デフォルト
のエラーテーブル名を上書きします。エラーテーブル
名を指定しない場合、Integration Serviceにより、
UV_<target_table_name>が使用されます。
制御ファイル
の上書き
なし
制御ファイルのテキストこの属性を使用して、
Integration ServiceがTeradataへロードするときの
制御ファイルを上書きします。
セッション内での外部データのロードの設定
セッション内で外部データのロードを設定する前に、Workflow Managerで外部ローダー接
続を作成し、外部ローダーの属性を設定する必要があります。
セッション内での外部データのロードの設定
299
外部ローダーをセッションに使用するには、次の手順を実行します。
1.
リレーショナルデータベースにではなく、フラットファイルに書き込むように、セッ
ションを設定します。
2.
ファイルプロパティを設定します。
3.
セッションプロパティで外部ローダー接続を選択します。
ファイルに書き込むようにセッションを設定
外部ローダを使用するには、ターゲットデータベースタイプに応じてマッピングにターゲ
ット定義を作成します。セッションは、デフォルトでリレーショナルターゲットタイプを
設定します。外部ローダ接続を選択するには、セッションがリレーショナルターゲットで
はなくファイルに書き込むように設定する必要があります。ファイルに書き込むようにセ
ッションを設定するには、writerのタイプをリレーショナルwriterからファイルwriterに
変更します。ライタのタイプは、[マッピング]タブの[Writers]設定を使用して変更し
ます。
ターゲットのwriterのタイプを変更するには、ターゲットインスタンスを選択し、writer
のタイプを[リレーショナルWriter]から[ファイルWriter]に変更します。
ファイルプロパティの設定
ファイルに書き込むようにセッションを設定したあとは、ファイルプロパティを設定でき
ます。出力ファイル名およびディレクトリと、拒否ファイル名およびディレクトリを指定
する必要があります。これらのプロパティは、[マッピング]タブの[プロパティ]設定
で設定します。ファイルプロパティを設定するには、ターゲットインスタンスを選択しま
す。
以下の表に、[プロパティ]設定の属性を示します。
属性
説明
出力ファイルディ
レクトリ
出力ファイルディレクトリの名前およびパス。このフィー
ルドにはディレクトリ名を入力します。デフォルトでは、
ディレクトリ$PMTargetFileDirに出力ファイルが書き込ま
れます。
[Output filename]フィールドに完全なディレクトリお
よびファイル名を入力する場合は、このフィールドをクリ
アします。出力ファイルのパスにダブルスペースを使用し
た場合、外部ローダセッションが失敗する場合がありま
す。
Output Filename
300
出力ファイルの名前。ファイル名、またはファイル名とデ
ィレクトリを入力します。デフォルトで、Workflow
Managerにより、マッピングで使用されるターゲット定義
に基づいてターゲットファイルに名前が付けられます。<
ターゲット名>。 出力ファイルのパスにダブルスペースを
使用した場合、外部ローダセッションが失敗する場合があ
ります。
章 18: 外部データのロード
属性
説明
拒否ファイルディ
レクトリ
拒否ファイルディレクトリの名前およびパス。デフォルト
では、Integration Serviceは拒否ファイルをすべてディ
レクトリ$PMBadFileDirに書き込みます。
[Reject filename]フィールドに完全なディレクトリお
よびファイル名を入力する場合は、このフィールドをクリ
アします。
Reject Filename
拒否ファイルの名前。ファイル名、またはファイル名とデ
ィレクトリを入力します。Integration Serviceはこのフ
ィールドの情報を、[Reject File Directory]フィール
ドに入力された情報に追加します。たとえば、[拒否ファ
イルディレクトリ]フィールドに「C:/reject_file/」と
入力されているときに、[拒否ファイル名]フィールドに
「filename.bad」と入力すると、Integration Serviceは
リジェクトされた行をC:/reject_file/filename.badに書
き込みます。
デフォルトで、Integration Serviceはターゲットインス
タンス名に従って、「ターゲット名.bad」のように拒否フ
ァイルに名前を付けます。
また、拒否ファイルセッションパラメータを入力して拒否
ファイルまたは拒否ファイルとディレクトリを表すことも
できます。すべての拒否ファイルパラメータには、
$BadFile名前のように名前を付けます。
ファイルプロパテ
ィ設定
フラットファイルプロパティの定義。外部ローダを使用す
る場合には、[ファイルプロパティ設定]リンクをクリッ
クしてフラットファイルプロパティを定義する必要があり
ます。
Oracle外部ローダの場合、ターゲットフラットファイル
は、固定長または区切りファイルです。
Sybase IQ外部ローダの場合、ターゲットフラットファイ
ルは、固定長または区切りファイルです。
Teradata外部ローダの場合、ターゲットフラットファイル
は固定長でなければなりません。
IBM DB2外部ローダの場合、ターゲットフラットファイル
は区切りファイルでなければなりません。
注: [Merge Partitioned Files]を選択したり、結合ファイル名を入力したりしないで
ください。外部ローダを使用する場合、パーティション化された出力ファイルを結合する
ことはできません。
外部ローダ接続の選択
ファイルプロパティを設定した後は、外部ローダ接続を選択できます。外部ローダ接続を
選択するには、接続タイプと接続オブジェクトを選択します。接続オプションは、[マッ
ピング]タブの[接続]設定で設定します。
セッションに複数のパーティションが含まれていて、複数の出力ファイルからロードでき
るローダを選択する場合は、パーティションごとに異なる接続を選択できますが、各接続
が同じタイプである必要があります。たとえば、パーティションごとに異なるTeradata
セッション内での外部データのロードの設定
301
TPump外部ローダ接続を選択できますが、1つのパーティションにTeradata TPump接続を選
択して別のパーティションにOracle接続を選択することはできません。
セッションに複数のパーティションが含まれていて、1つの出力ファイルからしかロードで
きないローダを選択する場合は、ラウンドロビンパーティション化を使用して、データを
単一のターゲットファイルへルーティングします。接続ごとにローダーを選択できます
が、Integration Serviceによってこの接続が最初のパーティションに使用されます。
外部ローダ接続を選択するには:
1.
[マッピング]タブで、ナビゲータのターゲットインスタンスを選択します。
2.
[ローダ]接続タイプを選択します。
3.
[値]フィールドで、[開く]ボタンをクリックします。
4.
接続オブジェクトまたは変数を選択します。
¨ オブジェクトの使用。ローダー接続オブジェクトを選択します。 [上書き]ボタ
ンをクリックして、接続属性をオーバーライドします。オーバーライドすることの
できる属性は、ローダータイプに応じて異なります。
¨ 接続変数の使用。$LoaderConnection Nameセッションパラメータを使用して、パラ
メータファイル内にパラメータを定義します。 パラメータファイル内の接続属性
をオーバーライドします。
5.
[OK]をクリックします。
外部データのロードのトラブルシューティン
グ
データを外部ローダにロードするセッションを設定しようとしています
が、セッションプロパティで外部ローダ接続を選択できません。
マッピングにリレーショナルターゲットが含まれていることを確認してください。セッシ
ョンの作成時に、セッションプロパティの[マッピング]タブの[Writers]設定で[File
Writer]を選択してください。次に、[接続]設定を開いて、外部ローダ接続を選択しま
す。
TPumpを使用するセッションを実行しようとしていますが、セッションが
失敗します。セッションログには、Teradata出力ファイル名が長すぎる
というエラーが表示されます。
Integration Serviceにより、Teradata出力ファイル名を使用して、TPumpのエラーファイ
ルとログファイルの名前、およびログテーブル名が生成されます。 これらの名前を生成す
るために、Integration Serviceによって出力ファイル名に数文字のプレフィックスが追加
されます。 1つのパーティションを含むセッションについては3文字を追加し、複数のパー
ティションを含むセッションについては5文字を追加します。
Teradataでは、ログテーブル名に最大30文字を使用できます。Integration Serviceによ
ってプレフィックスが追加されるため、単一のパーティションを含むセッションを実行す
302
章 18: 外部データのロード
る場合には、ターゲット出力ファイル名を最大27文字(拡張子を含む)で指定します。 複
数のパーティションを含むセッションを実行する場合には、ターゲット出力ファイル名を
最大25文字(拡張子を含む)で指定する必要があります。
TPumpを使ってTeradataにデータをロードしようとしましたが、セッショ
ンが失敗しました。エラーを修正しても、やはりセッションが失敗しま
す。
Teradataは、セッションを再実行したときにログテーブルを削除しないことがあります。
Teradataデータベースをチェックして、ログテーブルが存在する場合は手動で削除してく
ださい。その後で、セッションを再実行してください。
外部データのロードのトラブルシューティング
303
第 19 章
FTP
この章では、以下の項目について説明します。
¨ FTPの概要, 304 ページ
¨ Integration Serviceの動作, 305 ページ
¨ セッションのFTPの設定, 307 ページ
FTPの概要
フラットファイルまたはXMLソースからの読み込みや、フラットファイルまたはXMLターゲ
ットへの書き込みに、ファイル転送プロトコル(FTP)を使用するようにセッションを設定
できます。Integration Serviceは、メインフレームを含め、接続できるどのマシンにも、
FTPを使用してアクセスできます。 ソースファイルとターゲットファイルの両方に関し
て、ファイルを直接転送するとき、またはファイルをローカルディレクトリにステージン
グするときにFTPを使用します。ソースファイルに直接アクセスするか、またはファイルリ
ストを使用して、セッション内の間接ソースファイルにアクセスできます。
セッションでFTPファイルソースおよびターゲットを使用するには、次のタスクを実行しま
す。
1.
Workflow ManagerでFTP接続オブジェクトを作成し、接続属性を設定します。
2.
セッションでFTP接続オブジェクトを使用するように、セッションプロパティを設定し
ます。
SFTPサーバーに接続している場合は、SSHファイル転送プロトコル(SFTP)を使用するよう
にFTP接続を設定してください。SFTPを使用すると、セキュリティで保護されたデータスト
リームでのファイル転送を行うことができます。Integration Serviceは安全な接続を実現
し、SFTPサーバー上のファイルへのアクセスを可能にするSSH2トランスポートレイヤを作
成します。
304
FTPの使用に関するルールおよびガイドライン
フラットファイルまたはXMLのソースまたはターゲットでFTPを使用する場合、以下のガイ
ドラインに従ってください。
¨ セッションプロパティで、ソースまたはターゲットの出力ディレクトリを指定できま
す。ディレクトリを指定しない場合、Integration Serviceは、UNIXではIntegration
Serviceが実行されるディレクトリ、Windowsではシステムディレクトリにファイルをス
テージングします。
¨ メインフレーム上に配置されている同じFTPソースファイルまたはターゲットファイル
を使用する複数のセッションを並列に実行することはできません。
¨ メインフレームからFTPソースまたはターゲットをステージングするセッションを含む
ワークフローを強制終了すると、接続がタイムアウトするまで、そのワークフローを再
実行できないことがあります。
¨ パブリックキー認証を必要とするSFTPサーバーでFTP接続を使用するセッションを実行
するには、セッションを実行するノードでパブリックキーおよびプライベートキーファ
イルにアクセスできるようにする必要があります。
Integration Serviceの動作
FTPを使用したIntegration Serviceの動作は、FTP接続とセッションの設定方法により異
なります。 Integration Serviceは、FTPを使用して、以下の方法でソースファイルおよ
びターゲットファイルにアクセスできます。
¨ ソースファイル。 Integration Serviceをホストするマシン上にソースファイルをステ
ージングします。または、FTPホストから直接ソースファイルにアクセスします。 単一
のソースファイル、または単一のソースインスタンスに対応する複数の間接ソースファ
イルで構成されるファイルリストを使用します。
¨ ターゲットファイル。Integration Serviceをホストするマシン上にターゲットファイ
ルをステージングします。または、FTPホスト上のターゲットファイルに書き込みま
す。
FTPファイルをステージングすることで、ネットワーク障害による部分的な転送のリスクを
減らすことができます。Integration Serviceをホストするマシン上でステージングされた
ファイルを作成します。FTPプロセスがステージングされたファイルを作成した後、読み取
り操作が開始されます。ターゲットでFTPを使用すると、FTPプロセスはIntegration
Serviceがステージングされたファイルに書き込みを行った後に開始されます。ステージン
グされたファイルが完了する前にネットワーク障害が発生した場合は、ステージングされ
たファイルを削除してセッションを実行し直すことができます。
ステージングはFTP接続オブジェクト内で、またはセッションの前後のシェルコマンドを通
じて設定できます。
ソースファイルを対象としたFTPの使用
フラットファイルまたはXMLファイルソースを読み取るセッションでFTPを使用します。
Integration Serviceをホストするマシン上にセッションのソースファイルをステージング
Integration Serviceの動作
305
できます。 単一のソースファイル、または各ソースインスタンスのファイルリストを使用
します。
ソースデータをステージングする場合、Integration ServiceはFTPを使用してローカルフ
ァイルを作成します。ローカルファイルはセッションのソースとして使用されます。ステ
ージングされたファイルが完了するまで、Integration Serviceはデータをパイプラインに
移動しません。
ソースデータをステージングしない場合、Integration ServiceはFTP を使用してソース
ファイルに直接アクセスします。ネットワーク障害が発生した場合は、セッションを再度
実行します。
以下の表に、ソースファイルでFTPを使用するIntegration Serviceの動作を示します。
ソースタイ
プ
ステージ
ング済み
Integration Serviceの動作
Direct
はい
Integration Serviceは、セッションの開始後に、
FTPホストからIntegration Serviceのホストマシン
にファイルをコピーします。
Direct
いいえ
Integration Serviceは、FTPを使用して、ソースフ
ァイルに直接アクセスします。
Indirect
はい
Integration Serviceは、セッションの開始後にフ
ァイルリストを読み取り、そのファイルリストとソ
ースファイルをIntegration Serviceのホストマシ
ンにコピーします。
Indirect
いいえ
Integration Serviceは、セッションの開始後に、
Integration Serviceのホストマシンにファイルリ
ストをコピーします。Integration Serviceは、FTP
を使用して、ソースファイルに直接アクセスしま
す。
ターゲットファイルでのFTPの使用
フラットファイルまたはXMLファイルターゲットに書き込むセッションでFTPを使用しま
す。ターゲットファイルをFTPホストにコピーする前に、Integration Serviceをホストす
るマシンでターゲットファイルをステージングできます。
ターゲットデータをステージングする際、Integration Serviceは、ローカルでターゲット
ファイルを作成し、セッションの完了後にそのファイルをFTPホストに転送します。 ター
ゲットファイルをステージングしない場合、Integration Serviceは、FTPホスト上のター
ゲットファイルに直接書き込みます。 ネットワーク障害が発生した場合は、セッションを
再度実行します。
パーティション化オプションを使用している場合は、複数のターゲットパーティションイ
ンスタンスにFTPを使用します。Integration ServiceまたはFTPホスト上で、複数のター
ゲットファイルまたは統合ファイルに書き込むことができます。
306
章 19: FTP
セッションのFTPの設定
FTPを使用するようにセッションを設定する前に、Workflow ManagerでFTP接続オブジェク
トを作成する必要があります。Integration Serviceは、FTP接続属性を使用して、FTPサ
ーバーに接続します。
Workflow ManagerでFTP接続オブジェクトを作成したら、その後、FTPを使用するセッショ
ンを設定できます。安全な接続を使用するには、SFTPに設定されたFTP接続オブジェクトを
選択します。フラットファイル、XMLソース、またはXMLターゲットで任意のセッションを
使用します。
セッションを設定するには、FTP接続を必要とするソースおよびターゲットごとに次のタス
クを実行します。
¨ FTP接続を選択します。
¨ ソースファイルプロパティを設定します。
¨ ターゲットファイルプロパティを設定します。
Integration Serviceマシンでソースファイルまたはターゲットファイルをステージングす
るには、セッションプロパティでFTP接続を編集して、一時ファイルのディレクトリとファ
イル名を設定します。
セッションのSFTPの設定
パブリックキー認証を必要とするSFTPサーバーでFTP接続を使用するセッションを実行する
には、セッションを実行するノードでパブリックキーおよびプライベートキーファイルに
アクセスできるようにする必要があります。
Integration Serviceがプライマリとバックアップのノードで実行するよう設定されている
場合、Integration Serviceプロセスを実行するように設定された各ノード上で、これらの
キーファイルにアクセスできるようにしてください。
Integration Serviceがグリッド上で実行するように設定されている場合、グリッド上で実
行するように設定されている各ノードでこれらのキーファイルにアクセスできるようにし
てください。グリッド内で各ノードにこれらのファイルを置くことができない場合、ドメ
インにリソースを作成して、ファイルを置く各ノードに割り当てます。セッションを作成
するときに、リソースを使用するようにセッションを設定します。
たとえば、「SFTP」という名前のカスタムリソースを作成するとします。セッションを作
成するときに、SFTPリソースを使用するためにセッションが必要になる場合があります。
ロードバランサは、これらのキーファイルにアクセス可能なノードにセッションをディス
パッチするだけです。
FTP接続の選択
FTPを使用するようにセッションを設定するには、接続タイプと接続オブジェクトを選択し
ます。 FTP接続を使用するソースおよびターゲットごとにFTP接続オブジェクトを選択しま
す。SFTPを使用するには、SFTPに設定されたFTP接続オブジェクトを選択します。接続オプ
ションは、[マッピング]タブの[接続]設定で設定します。
セッションのFTPの設定
307
ソースインスタンスまたはターゲットインスタンスにFTP接続を選択するには:
1.
[マッピング]タブの[トランスフォーメーション]ビューでソースインスタンスと
ターゲットインスタンスを選択します。
2.
FTP接続タイプを選択します。
3.
[値]フィールドで、[開く]ボタンをクリックします。
4.
接続オブジェクトまたは変数を選択します。
¨ オブジェクトの使用。FTP接続オブジェクトを選択します。 [上書き]ボタンをク
リックして、接続属性をオーバーライドします。
¨ 接続変数の使用。$FTPConnection Nameセッションパラメータを使用して、パラメ
ータファイル内にパラメータを定義します。 パラメータファイル内の接続属性を
オーバーライドします。
以下の属性をオーバーライドできます。
属性
説明
リモートフ
ァイル名
ソースまたはターゲットのリモートファイル名。間接ソー
スファイルを使用する場合には、間接ソースファイル名を
入力します。
このファイル名には7ビットASCII文字を使用する必要があ
ります。Unicode文字のリモートファイル名を使用すると、
セッションは失敗します。
ソースファイル名に完全修飾名を入力すると、Integration
Serviceにより、[デフォルトリモートディレクトリ]フィ
ールドに入力されたパスが無視されます。 完全修飾ファイ
ル名を一重引用符または二重引用符で囲むと、セッション
は失敗します。
リモートファイル名には、パラメータまたは変数を使用で
きます。パラメータファイルで定義可能なパラメータまた
は変数タイプを使用します。たとえば、ソースまたはター
ゲットリモートファイル名としてセッションパラメータ
$ParamMyRemoteFileを使用し、パラメータファイルでその
ファイル名に$ParamMyRemoteFileを設定できます。
5.
308
ステージン
グ済み
Integration Service上のソースファイルまたはターゲット
ファイルをステージングします。デフォルトでは、ステー
ジングされません。
Is Transfer
Mode ASCII
転送モードを変更します。有効時には、ASCII転送モードが
Integration Serviceで使用されます。Windowsマシン上で
のファイル転送時には、ASCIIモードを使用すると、テキス
トファイル内の行末文字を確実に正しく変換することがで
きます。無効時には、バイナリ転送モードがIntegration
Serviceで使用されます。UNIXマシン上では、ファイル
転送時にバイナリ転送モードを使用してください。デフォ
ルトでは無効になっています。
[OK]をクリックします。
章 19: FTP
ソースファイルプロパティの設定
FTPでソースファイルにアクセスする場合、ソースインスタンスにFTP接続を選択した後、
ソースファイルプロパティを設定します。ソースファイルプロパティで、ソースファイル
タイプと一時領域を特定します。[マッピング]タブの[プロパティ]設定でソースファ
イルプロパティを設定できます。
ソースファイルをステージングする場合は、ソースファイル名、ディレクトリ、およびフ
ァイルタイプを選択します。
ソースファイルをステージングしない場合は、ソースファイルタイプを指定します。
Integration Serviceでは、FTP接続オブジェクトのリモートファイル名とディレクトリが
使用され、ソースファイル名とディレクトリが無視されます。
以下の表に、[マッピング]タブのソースファイルプロパティを示します。
属性
説明
ソースファイル
タイプ
ソースファイルにソースデータと、同じファイルプロパティ
を持つファイルのリストとのどちらが格納されているかを表
示します。ソースファイルにソースデータが含まれる場合に
は、[Direct]を選択します。ソースファイルにファイルの
リストが含まれる場合には、[Indirect]を選択します。
ソースファイル
のディレクトリ
ソースデータのステージングに使用するローカルソースファ
イルディレクトリの名前とパス。デフォルトでは、
Integration Serviceは、サービスのプロセス変数ディレクト
リ「$PMSourceFileDir」をファイルソースとして使用しま
す。Integration Serviceは、セッションの実行時に、このフ
ィールドと[ソースファイル名]フィールドを連結します。
ソースファイルをステージングしない場合、Integration
Serviceは、FTP接続オブジェクトのファイル名とディレクト
リを使用します。
[ソースファイル名]フィールドに完全修飾ファイル名を入
力すると、Integration Serviceは、このフィールドを無視し
ます。
ソースファイル
名
ソースデータのステージングに使用するローカルソースファ
イルの名前。ファイル名、またはファイル名とパスを入力で
きます。完全修飾ファイル名を入力すると、Integration
Serviceは、[ソースファイルのディレクトリ]フィールドを
無視します。
ソースファイルを転送しない場合、Integration Serviceは、
FTP接続オブジェクトのリモートファイル名とデフォルトディ
レクトリを使用します。
ターゲットファイルプロパティの設定
FTPでターゲットファイルに書き込む場合、ターゲットインスタンスにFTP接続を指定した
後、ターゲットファイルのプロパティを指定します。ターゲットファイルのプロパティに
より、拒否ファイルとディレクトリ、および一時領域が特定されます。[マッピング]タ
ブの[プロパティ]設定でターゲットファイルプロパティを指定します。
セッションのFTPの設定
309
ターゲットファイルをステージングする場合は、ターゲットファイル名とディレクトリ、
および拒否ファイル名とディレクトリを設定します。ターゲットファイルをステージング
しない場合は、拒否ファイルとディレクトリを設定します。Integration Serviceでは、
FTP接続オブジェクトのリモートファイル名とディレクトリが使用されます。
パーティション化オプションを使用する場合は、統合ファイルプロパティも選択できま
す。
以下の表に、[マッピング]タブのターゲットファイル属性を示します。
属性
説明
出力ファイル
ディレクトリ
ターゲットデータのステージングに使用するローカルターゲッ
トファイルディレクトリの名前とパス。デフォルトでは、
Integration Serviceは、サービスのプロセス変数ディレクト
リ「$PMTargetFileDir」を使用します。Integration Service
は、セッションの実行時に、このフィールドと[出力ファイル
名]フィールドを連結します。
ターゲットファイルをステージングしない場合、Integration
Serviceは、FTP接続オブジェクトのファイル名とディレクト
リを使用します。
[出力ファイル名]フィールドで完全修飾ファイル名を入力す
ると、Integration Serviceは、このフィールドを無視しま
す。
出力ファイル
名
ターゲットデータのステージングに使用するローカルターゲッ
トファイルの名前。ファイル名、またはファイル名とパスを入
力できます。完全修飾ファイル名を入力すると、Integration
Serviceは、[出力ファイルディレクトリ]フィールドを無視
します。
ソースファイルを転送しない場合、Integration Serviceは、
FTP接続オブジェクトのリモートファイル名とデフォルトディ
レクトリを使用します。
FTPファイルターゲットのパーティション化
セッションのパーティション化したターゲットに対してFTP接続タイプを選択する場合、タ
ーゲットパーティションのFTP設定を行います。
パーティションごとにターゲットファイルまたは個々のターゲットファイルを統合できま
す。
ターゲットパーティションに対してFTP設定を行う場合には、以下の規則とガイドラインに
従ってください。
¨ ターゲットパーティションごとにFTP接続を使用する必要があります。
¨ ターゲットパーティションに接続オブジェクトを選択すると、ファイルのステージング
を選択できます。シーケンシャル統合を使用するにはファイルをステージングする必要
があります。
¨ ターゲットパーティションのFTP接続に、リモートファイル名以外の設定が指定されて
いる場合、Integration Serviceは、統合ファイルを作成しません。
310
章 19: FTP
次の表に、パーティション化されたFTPファイルターゲットに対するIntegration Service
のアクションを示します。
Merge Type
Integration Serviceの動作
No Merge
Integration Serviceは、パーティションごとにターゲットファ
イルを1つ生成します。ファイルをステージングする場合、セッ
ションの終わりにターゲットファイルがリモートロケーション
に転送されます。ファイルをステージングしない場合、リモー
トロケーションでターゲットファイルが1つ生成されます。
シーケンシャ
ル統合
Integration Serviceは、接続オブジェクトの[ステージングの
有無]オプションを有効にします。パーティションごとに出力
ファイルを1つ作成します。セッションの終わりに次のアクショ
ンを実行します。
1.個々の出力ファイルを統合ファイルに統合します。
2.個々の出力ファイルを削除します。
3.統合ファイルをリモートロケーションに転送します。
ファイルリス
ト
ファイルをステージングする場合、Integration Serviceは、以
下のファイルを作成します。
- パーティションごとの出力ファイル
- ローカルファイルの名前とパスが含まれているファイルリス
ト
- リモートファイルの名前とパスが含まれているファイルリス
ト
セッションの終わりに、Integration Serviceは、これらのファ
イルをリモートロケーションに転送します。個々のターゲット
ファイルがMerge File Directory内に配置されている場合、フ
ァイルリストには、相対パスが指定されています。上記以外の
場合には、ファイルリストには絶対パスが指定されています。
ファイルをステージングしない場合、Integration Serviceは、
リモートロケーションでパーティションごとにデータを書き込
み、個々のターゲットファイルのリストを含むリモートファイ
ルリストを作成します。
ファイルリストは別のマッピングでソースファイルとして使用
します。
Concurrent
Merge
ファイルをステージングする場合、Integration Serviceは、す
べてのターゲットパーティションのデータを、ローカルマージ
ファイルに同時に書き込みます。セッションの終わりに、
Integration Serviceは、このマージファイルをリモートロケー
ションに転送します。Integration Serviceは、中間出力ファイ
ルに書き込むことはしません。
ファイルをステージングしない場合、Integration Serviceは、
すべてのパーティションのターゲットデータを、リモートロケ
ーションのマージファイルに同時に書き込みます。
セッションのFTPの設定
311
第 20 章
セッションのキャッシュ
この章では、以下の項目について説明します。
¨ セッションのキャッシュの概要, 312 ページ
¨ キャッシュメモリ, 313 ページ
¨ キャッシュファイル, 314 ページ
¨ キャッシュサイズの設定, 318 ページ
¨ キャッシュのパーティション化, 322 ページ
¨ アグリゲータキャッシュ, 323 ページ
¨ ジョイナキャッシュ, 325 ページ
¨ ルックアップキャッシュ, 329 ページ
¨ ランクキャッシュ, 331 ページ
¨ ソータキャッシュ, 333 ページ
¨ XMLターゲットキャッシュ, 334 ページ
¨ キャッシュサイズの最適化, 335 ページ
セッションのキャッシュの概要
Integration Serviceでは、XML ターゲット、アグリゲータ、ジョイナ、ルックアップ、
ランク、およびソータの各トランスフォーメーションに対して、キャッシュメモリが割り
当てられます。Integration Serviceでは、XML ターゲット、アグリゲータ、ジョイナ、
ルックアップ、およびランクの各トランスフォーメーションに対して、インデックスキャ
ッシュおよびキャッシュメモリが作成されます。Integration Serviceではインデックスキ
ャッシュにキー値が格納され、データキャッシュに出力値が格納されます。Integration
Serviceでは、ソータトランスフォーメーションに対して、ソートキーおよびソートするデ
ータを保存する1つのキャッシュが作成されます。
セッションプロパティで、キャッシュのメモリパラメータを設定します。キャッシュサイ
ズを最初に設定する場合、トランスフォーメーションの処理に必要なメモリ容量を計算す
るか、または実行時にメモリ要件が自動的に設定されるようにIntegration Serviceを設定
できます。
312
セッションの実行後に、そのセッション内のトランスフォーメーションのキャッシュサイ
ズを調整できます。トランスフォーメーション統計を分析すると、最適なセッションパフ
ォーマンスに必要なキャッシュサイズを決定し、設定したキャッスサイズを更新できま
す。
設定よりも多いメモリをIntegration Serviceが必要とする場合は、オーバーフローした値
がキャッシュファイルに格納されます。セッションの終了時に、Integration Serviceによ
ってキャッシュメモリが解放されます。ほとんどの場合、これらのキャッシュファイルは
削除されます。
セッションに複数のパーティションが含まれる場合は、Integration Serviceによって、パ
ーティションごとに1つのメモリキャッシュが作成されます。特別な状況では、
Integration Serviceはキャッシュのパーティション化を使用し、パーティションごとに個
別のキャッシュが作成されます。
以下の表に、Integration Serviceで各キャッシュに保存される情報のタイプを示します。
マッピングオ
ブジェクト
キャッシュタイプと説明
アグリゲータ
- インデックス。GroupByポートの設定に従ってグループ値を
格納します。
- データ。GroupByポートに基づいて計算結果を格納します。
ジョイナ
- インデックス。結合条件に、一意キーを持つすべてのマス
ター行を格納します。
- データ。マスターソースの行を格納します。
ルックアップ
- インデックス。ルックアップ条件の情報を格納します。
- データ。インデックスキャッシュに格納されないルックア
ップデータを格納します。
ランク
- インデックス。GroupByポートの設定に従ってグループ値を
格納します。
- データ。GroupByポートに基づいてランク情報を格納しま
す。
ソータ
- ソータ。ソートキーおよびデータを格納します。
XMLターゲット
- インデックス。別々のキャッシュに、プライマリキーおよ
び外部キーの情報を格納します。
- データ。XMLターゲットの生成中に、XML行データを格納し
ます。
キャッシュメモリ
Integration Serviceでは、設定したキャッシュサイズに基づいて、各メモリキャッシュが
作成されます。 セッションの作成時に、セッションプロパティで各トランスフォーメーシ
ョンインスタンスにキャッシュサイズを設定できます。
キャッシュメモリ
313
Integration Serviceでは、以下のいずれかの理由により、設定したキャッシュサイズを増
やすことがあります。
¨ 設定されたキャッシュサイズが、操作を処理するために必要な最小キャッシュサイズよ
りも小さい場合。Integration Serviceでは、各セッションを初期化するために最小限
のメモリが必要です。 設定したキャッシュサイズが必要な最小キャッシュサイズより
も小さい場合は、最小要件を満たすように、Integration Serviceによって設定済みの
キャッシュサイズが増加されます。Integration Serviceが必要な最小メモリを割り当
てることができない場合、セッションは失敗します。
¨ 設定されたキャッシュサイズが、キャッシュページサイズの倍数ではない場合。
Integration Serviceは、キャッシュデータをキャッシュページに格納します。 キャッ
シュされたページは、キャッシュに均等に収まる必要があります。したがって、たとえ
ばキャッシュサイズを10MB(1,048,576バイト)に設定し、キャッシュページサイズが
10,000バイトである場合、Integration Serviceでは、設定したキャッシュサイズが10,
000バイトのページサイズの倍数になるように1,050,000バイトまで増やされます。
Integration Serviceによって、設定したキャッシュサイズが増やされると、セッションの
実行が継続され、以下のようなメッセージがセッションログに書き込まれます。
MAPPING> TE_7212 Increasing [Index Cache] size for transformation <transformation name> from
<configured index cache size> to <new index cache size>.
セッションログで、最小要件を満たすのに十分なメモリが割り当てられているかどうかを
確認してください。
最適なパフォーマンスを達成するには、キャッシュサイズをトランスフォーメーションの
処理に必要な総メモリ量に設定します。トランスフォーメーションを処理するのに十分な
キャッシュメモリがない場合、Integration Serviceでは、メモリ内でトランスフォーメー
ションの一部が処理され、残りを処理するために情報がディスクにページングされます。
以下の情報を使用して、32ビットのマシンと64ビットのマシンとでメモリキャッシュの処
理方法が異なることを理解してください。
¨ 32ビットのマシン上で実行されるIntegration Serviceプロセスは、設定されたすべて
のセッションのキャッシュの合計が2GBを超える場合、セッションを実行できません。
グリッドでセッションを実行する場合、単一ノードで実行するすべてのセッションスレ
ッドの合計キャッシュサイズが、2GBを超えないようにする必要があります。
¨ グリッドに32ビットと64ビットのIntegration Serviceプロセスがあり、セッションが
2GBのメモリを超えている場合、64ビットマシンでIntegration Serviceを実行するよう
にセッションを設定する必要があります。
キャッシュファイル
セッションを実行すると、Integration Serviceによって各トランスフォーメーションに対
して最低でも1つのキャッシュファイルが作成されます。Integration Serviceのメモリで
トランスフォーメーションを処理できない場合、オーバーフローした値がキャッシュファ
イルに書き込まれます。
314
章 20: セッションのキャッシュ
以下の表に、Integration Serviceでさまざまなマッピングオブジェクトに対して作成され
るキャッシュファイルのタイプを示します。
マッピングオブジェク
ト
キャッシュファイル
アゲリゲータ、ジョイ
ナ、ルックアップ、お
よびランクトランスフ
ォーメーション
Integration Serviceでは、以下のタイプのキャッシ
ュファイルが作成されます。
- インデックスキャッシュおよびデータキャッシュご
とに1つのヘッダファイル
- インデックスキャッシュおよびデータキャッシュご
とに1つのデータファイル
ソータトランスフォー
メーション
Integration Serviceでは、1つのソータキャッシュフ
ァイルが作成されます。
XMLターゲット
Integration Serviceでは、以下のタイプのキャッシ
ュファイルが作成されます。
- XMLターゲットグループごとに1つのデータキャッシ
ュファイル
- XMLターゲットグループごとに1つのプライマリキー
インデックスキャッシュファイル
- XMLターゲットグループごとに1つの外部キーインデ
ックスキャッシュファイル
Integration Serviceは、Integration Serviceコードページに基づいてキャッシュファイ
ルを作成します。
セッションを実行すると、Integration Serviceは、セッションログにキャッシュファイル
名とトランスフォーメーション名を示すメッセージを書き込みます。 セッションが完了す
ると、Integration Serviceはキャッシュメモリを解放し、通常はキャッシュファイルを削
除します。 以下の状況では、インデックスキャッシュファイルおよびデータキャッシュフ
ァイルは、キャッシュディレクトリに保持されます。
¨ セッションが差分集計を実行している場合。
¨ 永続キャッシュを使用してルックアップトランスフォーメーションを設定した場合。
¨ セッションが正常終了しなかった場合。次回セッションを実行すると、Integration
Serviceによって既存のキャッシュファイルが削除され、新しいキャッシュファイルが
作成されます。
注: キャッシュファイルへの書き込みによってセッションのパフォーマンスが低下する可
能性があるため、メモリでトランスフォーメーションが処理されるようにキャッシュサイ
ズを設定します。
キャッシュファイルの命名規則
では、インデックス、データ、およびソータキャッシュファイルに対して、さまざまな命
名規則が使用されます。
キャッシュファイル
315
以下の表に、各キャッシュファイルタイプの命名規則を示します。
キャッシュ
ファイル
命名規則
データおよ
びソータ
[<名前の接頭語> | <接頭語> <セッションID>_<トランスフォー
メーションID>]_[パーティションインデックス]_[OS][BIT].<接
尾語> [オーバーフローインデックス]
インデック
ス
<接頭語> <セッションID>_<トランスフォーメーションID>_<グ
ループID>_<キータイプ>.<接尾語> <オーバーフロー>
以下の表に、キャッシュファイル名のコンポーネントを示します。
316
ファイル名
の要素
説明
Nameプレフ
ィクス
Lookupトランスフォーメーションで設定されたキャッシュファ
イル名の接頭語。Lookupトランスフォーメーションキャッシュ
ファイル用です。
Prefix
トランスフォーメーションのタイプを表します。
- Aggregatorトランスフォーメーション - PMAGG
- Joinerトランスフォーメーション - PMJNR
- Lookupトランスフォーメーション - PMLKUP
- Rankトランスフォーメーション - PMAGG
- Sorterトランスフォーメーション - PMSORT
- XMLターゲット - PMXML.
Session ID
セッションインスタンスのID番号。
Transformat
ion ID
トランスフォーメーションインスタンスのID番号。
Group ID
階層型のXMLターゲットでのグループごとのID。Integration
Serviceでは、グループごとに1つのインデックスキャッシュが
作成されます。XMLターゲットキャッシュファイル用です。
Key Type
キーのタイプ。外部キーまたはプライマリキーを使用できま
す。XMLターゲットキャッシュファイル用です。
Partition
Index
セッションに複数のパーティションが含まれる場合、このIDに
よってパーティション番号が識別されます。パーティションイ
ンデックスはゼロベースになります。したがって、先頭パーテ
ィションにはパーティションインデックスはありません。パー
ティションインデックス2は、3つ目のパーティションに作成さ
れたキャッシュファイルという意味になります。
章 20: セッションのキャッシュ
ファイル名
の要素
説明
OS
Integration Serviceプロセスを実行するマシンのオペレーティ
ングシステムを識別します。
- W - Windows
- H - HP-UX
- S - Solaris
- A - AIX
- L - Linux
- M - Mainframe
Lookupトランスフォーメーションキャッシュファイル用です。
BIT
Integration Serviceプロセスを実行するマシンのビットプラッ
トフォームを識別します(32ビットまたは64ビット)。Lookup
トランスフォーメーションキャッシュファイル用です。
Suffix
キャッシュファイルのタイプを識別します。
- インデックスキャッシュファイルは、ヘッダファイルの場合
は.idx0、データファイルの場合は.idxnです。
- データキャッシュファイルは、ヘッダファイルの場合
は.dat0、データファイルの場合は.datnです。
- Sorterキャッシュファイルは、.PMSORT()です。
Overflow
Index
キャッシュファイルが2GBを超えるデータを扱う場合、
Integration Serviceでは、より多くのキャッシュファイルが作
成されます。これらのファイルを作成するときにIntegration
Serviceはファイル名にオーバーフローインデックスを付加し、
PMAGG*.idx2やPMAGG*.idx3のようにします。キャッシュファイ
ルの数は、キャッシュディレクトリのディスクの空きによって
制限されます。
注: ソータトランスフォーメーションのキャッシュファイルが
2GBを超えるデータを処理する場合、PowerCenter Integration
Serviceがさらにキャッシュファイルを作成することはありませ
ん。
たとえば、インデックスキャッシュのデータファイル名はPMLKUP748_2_5S32.idx1としま
す。PMLKUPは、トランスフォーメーションタイプがLookupであることがわかり、748はセッ
ションID、2はトランスフォーメーションID、5はパーティションインデックス、S
(Solaris)はオペレーティングシステム、32はビットプラットフォームです。
キャッシュファイルディレクトリ
Integration Serviceでは、キャッシュファイルはデフォルトで$PMCacheDirディレクトリ
に作成されます。 Integration Serviceプロセスがディレクトリを見つけられない場合
は、セッションは失敗し、キャッシュファイルを作成するまたは開くことができなかった
ことを示すメッセージがセッションログに書き込まれます。
Integration Serviceで、複数のキャッシュファイルが作成される場合もあります。キャッ
シュファイルの数は、キャッシュディレクトリのディスクの空きによって制限されます。
グリッドでIntegration Serviceを実行する際に、一部のIntegration Serviceノードのみ
が共有キャッシュファイルディレクトリに高速アクセスしている場合は、ディレクトリへ
キャッシュファイル
317
のアクセスを高速なノードで実行するために、大きいキャッシュを持つ各セッションを設
定します。ディレクトリへのアクセスが高速なノードで実行するようにセッションを設定
するには、以下の手順を実行します。
1.
PowerCenterリソースを作成します。
2.
ディレクトリへのアクセスが高速なノードで、そのリソースを使用できるようにしま
す。
3.
そのリソースをセッションに割り当てます。
グリッドのすべてのIntegration Serviceプロセスがキャッシュファイルに低速でアクセス
している場合は、Integration Serviceプロセスごとに別々のローカルキャッシュファイル
ディレクトリを設定します。キャッシュディレクトリを含むマシンと同一のマシンで
Integration Serviceプロセスを実行する場合は、キャッシュファイルへのアクセスが高速
になることもあります。
キャッシュサイズの設定
セッションプロパティでキャッシュのメモリ容量を設定します。セッションプロパティで
指定したキャッシュサイズによって、トランスフォーメーションプロパティで設定した値
はオーバーライドされます。
設定するメモリ容量は、使用するメモリキャッシュおよびディスクキャッシュのサイズに
よって異なります。設定したキャッシュサイズが、メモリでトランスフォーメーションを
処理するのに十分な大きさではない場合は、Integration Serviceではトランスフォーメー
ションの一部はメモリで実行され、残りのトランスフォーメーションを処理するためにキ
ャッシュファイルに情報がページングされます。セッションのパフォーマンスを最適にす
るには、Integration Serviceのメモリですべてのデータを処理できるように、キャッシュ
サイズを設定します。
セッションが再利用可能な場合、セッションのすべてのインスタンスで、再利用可能なセ
ッションプロパティで設定したキャッシュサイズが使用されます。 セッションインスタン
スのキャッシュサイズはオーバーライドできません。
キャッシュサイズを設定するには、以下のいずれかの方法を使用します。
¨ キャッシュの計算。この計算を使用して、トランスフォーメーションの処理に必要な総
メモリ容量を計算します。
¨ 自動キャッシュメモリ。自動メモリを使用して、トランスフォーメーションの処理に割
り当てるキャッシュサイズに上限を指定します。 Integration Serviceプロセスを実行
しているマシンのキャッシュメモリが制限されている場合に、この方法を使用します。
¨ 数値。キャッシュサイズに特定の値を設定します。 キャッシュサイズをチューニング
するときに、特定の値を設定します。
Integration Serviceによってキャッシュのパーティション化が使用されている場合、メモ
リ要件は別の方法で設定します。Integration Serviceによってキャッシュのパーティショ
ン化が使用されている場合、各パーティションには設定されたキャッシュサイズが割り当
てられます。キャッシュのパーティション化を使用するトランスフォーメーションのメモ
リ要件を設定するには、トランスフォーメーションに必要な合計サイズを計算し、それを
パーティション数で割ります。
318
章 20: セッションのキャッシュ
トランスフォーメーションへの入力が変更されると、トランスフォーメーションのキャッ
シュファイル要件も変更される場合があります。定期的にセッションログでキャッシュサ
イズを監視すると、キャッシュサイズの調整に役立ちます。
キャッシュサイズの計算
キャッシュの計算を使用して、トランスフォーメーションの処理に必要な総メモリ容量を
見積もります。キャッシュサイズを計算するには、入力を行う必要があります。この入力
は、トランスフォーメーションのタイプによって異なります。たとえば、アグリゲータト
ランスフォーメーションのキャッシュサイズを計算するには、グループの数を入力しま
す。
キャッシュの計算では、以下のいずれかのモードを選択できます。
¨ 自動。[設定オブジェクト]タブで設定した最大メモリに基づいて、Integration
Serviceの実行中にキャッシュサイズを決定する場合に、自動モードを選択します。
¨ 計算。入力値に基づいてトランスフォーメーションに必要なサイズの合計を計算する場
合に選択します。 キャッシュの計算には、トランスフォーメーションごとに別々の入
力が必要となります。計算したキャッシュサイズを適用するには、適切なキャッシュタ
イプを選択する必要があります。たとえば、計算したキャッシュサイズをインデックス
サイズにではなくデータキャッシュに適用するには、[データキャッシュサイズ]オプ
ションのみを選択します。
キャッシュの計算では、入力値に基づいて最適なセッションパフォーマンスに必要なキャ
ッシュサイズを見積もります。キャッシュサイズを設定し、セッションを実行した後に、
セッションログでトランスフォーメーションの統計を確認して、設定したキャッシュサイ
ズを調整できます。
注: キャッシュの計算を使用して、XMLターゲットのキャッシュサイズを概算することは
できません。
自動キャッシュサイズ
デフォルトでは、トランスフォーメーションのメモリキャッシュは自動モードに設定され
ます。Integration Serviceでは、キャッシュが自動モードに設定されているすべてのトラ
ンスフォーメーションに自動的にキャッシュメモリが割り当てられます。Integration
Serviceでトランスフォーメーションに割り当てることができる最大キャッシュメモリ量を
設定することができます。
自動キャッシュモードのトランスフォーメーションの最大キャッシュメモリを設定するに
は、次のセッションプロパティを設定します。
自動メモリ属性で使用できる最大メモリ
セッションキャッシュに割り当てる最大メモリ量です。キャッシュメモリが自動に設
定されたすべてのトランスフォーメーションに、セッションキャッシュからメモリが
割り当てられます。デフォルトの単位はバイトです。他の単位を指定するには、値に
KB、MB、またはGBを追加します。例えば、「1048576」、「1024KB」、「1MB」のよう
に指定します。
キャッシュサイズの設定
319
自動メモリ属性で使用できる合計メモリの最大割合(%)
セッションキャッシュに割り当てるマシンのメモリの割合です。キャッシュメモリが
自動に設定されたすべてのトランスフォーメーションに、セッションキャッシュから
メモリが割り当てられます。
セッションの最大キャッシュサイズを設定すると、メモリの最大割合が計算され、指定し
た最大メモリ量と比較されます。その後、自動キャッシュモードのトランスフォーメーシ
ョンに、どちらか少ない方のメモリが割り当てられます。自動キャッシュモードのトラン
スフォーメーションが複数ある場合は、自動キャッシュモードのすべてのトランスフォー
メーションにメモリが割り当てられます。
例えば、Integration Serviceをホストするマシンのメモリが1GBであるとします。[自動
メモリ属性で使用できる最大メモリ]プロパティを800MBに設定し、さらに[自動メモリ属
性で使用できる合計メモリの最大割合(%)]プロパティを10%に設定します。この場合、
セッションキャッシュに102.4MBのメモリが割り当てられ、自動キャッシュモードのすべて
のトランスフォーメーションにそのキャッシュメモリが分割されます。
最大セッションキャッシュサイズの設定は、キャッシュモードが自動に設定されたトラン
スフォーメーションだけに適用されます。特定のキャッシュサイズを設定したトランスフ
ォーメーションには、個別にメモリが割り当てられます。
キャッシュが必要なトランスフォーメーションがセッションに複数ある場合、トランスフ
ォーメーションごとに、キャッシュモードを自動に設定したり、キャッシュサイズを指定
したりできます。このようにすると、キャッシュサイズの数値が設定されたトランスフォ
ーメーションのメモリに加え、自動キャッシュモードのトランスフォーメーションに指定
されたメモリも割り当てられます。
例えば、キャッシュが必要なトランスフォーメーションがセッションに3つあるとします。
そのうちの2つのトランスフォーメーションを自動キャッシュモードに設定し、セッション
の最大メモリキャッシュサイズを800MBと指定します。さらに、3つ目のトランスフォーメ
ーションのキャッシュサイズを500MBと指定します。Integration Serviceでは、合計
1,300MBのメモリが割り当てられます。
キャッシュのパーティション化が使用される場合、Integration Serviceではセッション内
のすべてのトランスフォーメーションに、自動キャッシュメモリに指定した最大キャッシ
ュサイズが割り当てられ、そのパーティションのすべてに、各トランスフォーメーション
のキャッシュメモリが分割されます。
数値のキャッシュサイズの設定
キャッシュサイズに特定の値を設定できます。キャッシュサイズを調整するときに、特定
の値を設定します。キャッシュサイズを最初に設定するときに、キャッシュの計算または
自動キャッシュメモリを使用できます。キャッシュサイズを設定し、セッションを実行し
た後、セッションログでトランスフォーメーションの統計を分析して、キャッシュサイズ
を調整できます。セッションログには、ディスクにページングすることなくメモリでトラ
ンスフォーメーションを処理するのに必要となるキャッシュサイズが表示されます。セッ
ションのパフォーマンスを最適にするには、セッションログに指定されたキャッシュサイ
ズを使用します。
320
章 20: セッションのキャッシュ
キャッシュサイズを設定する手順
セッションプロパティで、トランスフォーメーションのキャッシュサイズを設定できま
す。Integration Serviceでキャッシュのパーティション化が使用されない場合に限り、キ
ャッシュサイズを設定するときに、トランスフォーメーションが必要とする合計サイズを
指定します。
Integration Servicesでキャッシュのパーティション化が使用される場合は、別のキャッ
シュサイズを設定します。Integration Servicesでキャッシュのパーティション化が使用
される場合にキャッシュサイズを計算するには、トランスフォーメーションに必要な合計
サイズを計算して、パーティションの数で割ります。
セッションのキャッシュサイズを設定するには、以下の手順を実行します。
1.
Workflow Managerでセッションを開きます。
2.
[マッピング]タブをクリックします。
3.
左ペインでマッピングオブジェクトを選択します。
[マッピング]タブの右ペインに、キャッシュサイズを設定できるオブジェクトプロ
パティが表示されます。
4.
キャッシュサイズを設定するには、以下のいずれかの方法を使用します。
キャッシュサイズの値を入力し、[OK]をクリックして、手順Steps to Configure
the Cache Sizeに進みます。デフォルトでは、値はすべてバイト単位で入力します。
ただし、値を入力するときに、KB、MB、GBのいずれかの単位を指定できます。単位を
入力する場合は、値と単位の間にスペースを入力しないでください。たとえば、
350000KB、200MB、1GBと入力します。
-またはキャッシュサイズに「自動」と入力し、[OK]をクリックして、手順Steps to
Configure the Cache Sizeに進みます。
-または[開く]ボタンをクリックして、キャッシュの計算を開きます。
5.
モードを選択します。
トランスフォーメーションに割り当てられるキャッシュの合計を制限するには、[自
動]モードを選択します。手順Steps to Configure the Cache Sizeに進みます。
-またはトランスフォーメーションに必要なメモリの合計を計算するには、[計算]モードを
選択します。
6.
トランスフォーメーションタイプに基づいて入力値を指定し、[計算]をクリックし
ます。
注: 入力値が大きすぎてキャッシュの計算に値を入力できない場合は、自動メモリキ
ャッシュを使用します。
キャッシュの計算によって、キロバイト単位でキャッシュサイズが計算されます。
7.
トランスフォーメーションにデータキャッシュおよびインデックスキャッシュがある
場合は、[データキャッシュサイズ]か[インデックスキャッシュサイズ]、または
その両方を選択します。
8.
[OK]をクリックして、手順Steps to Configure the Cache Sizeで選択したキャッ
シュサイズに、計算した値を適用します。
キャッシュサイズの設定
321
キャッシュのパーティション化
複数のパーティションを持つセッションを作成した場合、Integration Serviceではアグリ
ゲータ、ジョイナ、ルックアップ、ランク、ソータの各トランスフォーメーションについ
て、キャッシュのパーティション化が使用される場合があります。 キャッシュをパーティ
ション化する場合、Integration Serviceではパーティションごとに個別のキャッシュが作
成され、各パーティションに設定済みのキャッシュサイズが割り当てられます。
Integration Serviceでは各キャッシュに異なるデータが格納されます。この場合、各キャ
ッシュには、そのパーティションが必要とする行のみが格納されます。したがって、
Integration Serviceには各パーティションのキャッシュメモリ全体の一部が必要です。
Integration Serviceでキャッシュのパーティション化が使用されている場合、各パーティ
ションのキャッシュへのアクセスは並列的に行われます。キャッシュのパーティション化
が使用されていない場合、各パーティションのキャッシュへのアクセスは直列的に行われ
ます。
以下の表に、適用可能なそれぞれのトランスフォーメーションに対してIntegration
Serviceが使用するキャッシュのパーティション化を示します。
トランスフォーメ
ーション
説明
アグリゲータトラ
ンスフォーメーシ
ョン
アグリゲータトランスフォーメーションを含むセッション
に複数のパーティションを作成します。アグリゲータトラ
ンスフォーメーションにパーティションポイントを設定す
る必要はありません。
ジョイナトランス
フォーメーション
ジョイナトランスフォーメーションにパーティションポイ
ントを作成します。
ルックアップトラ
ンスフォーメーシ
ョン
ルックアップトランスフォーメーションに自動ハッシュキ
ーパーティションポイントを作成します。
ランクトランスフ
ォーメーション
ランクトランスフォーメーションを含むセッションに複数
のパーティションを作成できます。ランクトランスフォー
メーションにパーティションポイントを設定する必要はあ
りません。
ソータトランスフ
ォーメーション
ソータトランスフォーメーションを含むセッションに複数
のパーティションを作成できます。ソータトランスフォー
メーションにパーティションポイントを設定する必要はあ
りません。
キャッシュのパーティション化用のキャッシュサイズ
の設定
Integration Serviceによってキャッシュのパーティション化が使用されている場合、メモ
リ要件は別の方法で設定します。Integration Serviceによってキャッシュのパーティショ
ン化が使用されている場合、各パーティションには設定されたキャッシュサイズが割り当
てられます。キャッシュのパーティション化を使用するトランスフォーメーションのメモ
322
章 20: セッションのキャッシュ
リ要件を設定するには、トランスフォーメーションに必要な合計サイズを計算し、それを
パーティション数で割ります。
例えば、アグリゲータトランスフォーメーションで1つのセッションにパーティションを4
つ作成します。アグリゲータトランスフォーメーションに400MBのデータキャッシュが必要
になるとします。アグリゲータトランスフォーメーションのデータキャッシュサイズに、
100MBを設定します。セッションを実行する際に、Integration Serviceは、アグリゲータ
トランスフォーメーションに合計400MBを使用して、各パーティションに100MBを割り当て
ます。
キャッシュの計算を使用して、トランスフォーメーションに必要な合計サイズを計算しま
す。動的パーティション化を使用する場合、動的パーティション化の方法に基づいて、パ
ーティションの数を決定できます。グリッドのノードに基づいた動的パーティション化を
使用する場合は、Integration Serviceによってノードごとに1つのパーティションが作成
されます。ソースのパーティション化に基づいた動的パーティション化を使用する場合
は、ソースデータベースのパーティション数を使用します。
アグリゲータキャッシュ
Integration Serviceではキャッシュメモリを使用して、入力が未ソートのアグリゲータト
ランスフォーメーションを処理します。 セッションを実行すると、Integration Service
では集計の計算が完了するまで、メモリにデータが格納されます。
Integration Serviceでは、アグリゲータトランスフォーメーションに対して以下のキャッ
シュが作成されます。
¨ インデックスキャッシュ。GroupByポートの設定に従ってグループ値を格納します。
¨ データキャッシュ。GroupByポートに基づいて計算結果を格納します。
デフォルトでは、Integration Serviceによって、トランスフォーメーションのデータとイ
ンデックスの両方に対して、メモリキャッシュとディスクキャッシュが1つずつ作成されま
す。
アグリゲータトランスフォーメーションで1つのセッションに複数のパーティションを作成
すると、Integration Serviceではキャッシュのパーティション化が使用されます。 すべ
てのパーティションにディスクキャッシュが1つ、各パーティションに別々のメモリキャッ
シュが作成されます。
差分集計
差分集計セッションを初めて実行するときに、Integration Serviceではソース全体が処理
されます。セッションの最後で、Integration Serviceによって、集計したデータが2つの
キャッシュファイル(インデックスキャッシュファイルとデータキャッシュファイル)に
格納されます。Integration Serviceではキャッシュファイルがキャッシュファイルディレ
クトリに格納されます。 次回セッションを実行するときに、Integration Serviceではキ
ャッシュファイルにキャッシュされた集計値を使用して、新しい行が集計されます。
差分アグリゲータトランスフォーメーションを持つセッションを実行した場合、
Integration Serviceによりセッションの開始時に$PMCacheDirにアグリゲータキャッシュ
ファイルのバックアップが作成されます。Integration Serviceでは、セッションリカバリ
アグリゲータキャッシュ
323
の実行開始時に、バックアップキャッシュが初期キャッシュへプロモートされます。セッ
ションが強制終了した場合、Integration Serviceはバックアップキャッシュファイルをリ
ストアできません。
差分集計を使用したセッションで複数のパーティションを作成すると、Integration
Serviceでは各パーティションに1つのキャッシュファイルが作成されます。
アグリゲータトランスフォーメーションのキャッシュ
サイズの設定
未ソートのポートを使用したアグリゲータ トランスフォーメーションのキャッシュサイズ
を設定します。
ソート済みポートを使用するアグリゲータトランスフォーメーションでは、キャッシュメ
モリを設定する必要はありません。Integration Serviceではシステムメモリを使用して、
ソート済みのポートを使用したアグリゲータ トランスフォーメーションが処理されます。
以下の表に、アグリゲータのキャッシュサイズを計算する場合に入力する値の説明を示し
ます。
オプション
名
説明
グループ数
グループの数です。アグリゲータトランスフォーメーションで
は、グループ別にデータが集計されます。ポート別のグループを
使用して、グループ数を計算します。たとえば、Store IDとItem
ID別にグループ化したときに、Storeが5個、Itemが25個あり、各
Storeに25個のItemがすべて含まれる場合は、以下のようにグル
ープ数を計算します。
5 * 25 = 125 groups
データ移動
モード
Integration Serviceのデータ移動モードです。キャッシュ要件
はデータ移動モードによって異なります。各ASCII文字には、1バ
イトが使用されます。各Unicode文字には、2バイトが使用されま
す。
入力値を入力して[計算]をクリックすると、データおよびソータキャッシュサイズが計
算されます。[データキャッシュサイズ]フィールドおよび[インデックスキャッシュサ
イズ]フィールドに、計算値が表示されます。
アグリゲータキャッシュのトラブルシューティング
このセッションの情報を使用すると、アグリゲータトランスフォーメーションのキャッシ
ュのトラブルシューティングに役立ちます。
キャッシュの計算によって、アグリゲータトランスフォーメーションの
キャッシュサイズを計算するときに、以下の警告が表示されます。
CMN_2019
Warning: The estimated data cache size assumes the number of aggregate functions equals
the number of connected output-only ports. If there are more aggregate functions, increase the cache
size to cache all data in memory.
アグリゲータトランスフォーメーションでは、1つ以上の集計関数を使用できます。出力が
1つの集計関数に基づいている場合、キャッシュの計算によってキャッシュサイズの見積も
324
章 20: セッションのキャッシュ
りが行われます。複数の集約関数を使用して、1つの出力ポートの値を決定する場合は、キ
ャッシュサイズを増加する必要があります。
セッションログでトランスフォーメーションの統計を確認して、セッション内のアグリゲ
ータトランスフォーメーションのキャッシュサイズを調整します。
以下に示すメモリ割り当てエラーは、4GBを超えるアグリゲータキャッシ
ュサイズを設定したセッションを実行し、Integration Serviceプロセス
をPA RISCプロセッサ搭載のHewlett Packard 64ビットのマシン上で実行
したときにセッションログに書き出されたものです。
FATAL 8/17/2006 5:12:21 PM node01_havoc *********** FATAL ERROR : Failed to allocate memory (out of
virtual memory). ***********
FATAL 8/17/2006 5:12:21 PM node01_havoc *********** FATAL ERROR : Aborting the DTM process due to
memory allocation failure. ***********
PA RISCプロセッサ搭載の64ビットHP-UXマシンでは、デフォルトで1プロセスあたり最大
4GBのメモリが割り当てられます。セッションに必要なメモリが4GBを上回る場合には、
maxdsiz_64bitオペレーティングシステム変数を使用してマシンの最大メモリ量を増やしま
す。maxdsiz_64bitの詳細については、以下のURLを参照してください。
http://docs.hp.com/en/B3921-90010/maxdsiz.5.html
ジョイナキャッシュ
Integration Serviceではキャッシュメモリを使用して、ジョイナトランスフォーメーショ
ンが処理されます。セッションを実行するときに、Integration Serviceによってマスター
ソースと明細ソースから同時に行が読み込まれ、マスター行に基づいてインデックスキャ
ッシュおよびデータキャッシュが構築されます。Integration Serviceでは、明細ソースデ
ータおよびキャッシュされたマスターデータに基づいて結合が実行されます。
Integration Serviceでは、ジョイナトランスフォーメーションのタイプに基づいて、さま
ざまな数の行が格納されます。
以下の表に、Integration Serviceでさまざまなタイプのジョイナトランスフォーメーショ
ンに対してキャッシュに格納される情報を示します。
ジョイナト
ランスフォ
ーメーショ
ンのタイプ
インデックスキャッシュ
データキャッシュ
未ソートの
入力
ジョイン条件に、一意のイン
デックスキーを持つすべての
マスター行を格納します。
すべてのマスター行を格納し
ます。
別のソース
を使用した
ソート済み
入力
ジョイン条件に、一意のイン
デックスキーを持つのマスタ
ー行を100行格納します。
インデックスキャッシュに格
納された行に対応するマスタ
ー行を格納します。マスター
データに同じキーを持つ複数
の行が含まれる場合、
ジョイナキャッシュ
325
ジョイナト
ランスフォ
ーメーショ
ンのタイプ
インデックスキャッシュ
データキャッシュ
Integration Serviceによって
100件以上の行がデータキャッ
シュに格納されます。
同じソース
を使用した
ソート済み
入力
ジョイン条件に、一意のイン
デックスキーを持つすべての
マスター行または明細行を格
納します。Integration
Serviceで、マスターパイプラ
インよりも高速な明細パイプ
ラインを処理する場合、明細
行を格納します。それ以外の
場合は、マスター行を格納し
ます。格納される行数は、マ
スターパイプラインと明細パ
イプラインの処理の速さによ
って異なります。1つのパイプ
ラインによる行の処理が他の
パイプラインよりも速い場
合、Integration Serviceで
は、既に処理されたすべての
行がキャッシュに格納され、
他のパイプラインによる行の
処理が終了するまでキャッシ
ュに格納されたままになりま
す。
インデックスキャッシュに格
納された行に、データを格納
します。インデックスキャッ
シュにマスターパイプライン
のキーが格納されると、デー
タキャッシュにはマスターパ
イプラインのデータが格納さ
れます。インデックスキャッ
シュに明細パイプラインのキ
ーが格納されると、データキ
ャッシュには明細パイプライ
ンのデータが格納されます。
データが格納されると、Integration Serviceによって、すべてのパーティションに1つの
ディスクキャッシュ、各パーティションに別々のメモリキャッシュが作成されます。行の
データが結合された後に、キャッシュから各行が開放されます。
データが格納されず、ジョイナトランスフォーメーションにパーティションがない場合
は、Integration Serviceによって各パーティションに1つのディスクキャッシュおよび別
々のメモリキャッシュが作成されます。データが格納されず、ジョイナトランスフォーメ
ーションにパーティションがある場合は、Integration Serviceによって各パーティション
に別々のディスクキャッシュおよびメモリキャッシュが作成されます。データが格納され
ない場合、Integration Serviceでは、すべてのデータが結合されるまでキャッシュにすべ
てのマスターデータが保持されます。
セッションに複数のパーティションを作成する場合、1: nのパーティション化またはn:nの
パーティション化を使用できます。 Integration Serviceでは、1: nのパーティション化
を使用するときと、n:nパーティション化を使用するときではそれぞれ異なる方法でジョイ
ナトランスフォーメーションが処理されます。
1:nのパーティション化
ソート済み入力を使用したジョイナトランスフォーメーションでは、1: nのパーティション
化を使用できます。 1: nのパーティション化を使用するときは、マスターパイプラインに1
つのパーティション、明細パイプラインに複数のパーティションを作成します。
326
章 20: セッションのキャッシュ
Integration Serviceで結合処理を行うときに、明細パーティションの行とマスターソース
の行が比較されます。アウタージョインでマスタデータおよび明細データを処理するとき
には、すべての明細パーティションが処理された後に、Integration Serviceによって一致
しないマスタ行が出力されます。
n:nのパーティション化
ソート済みまたは未ソートの入力を使用したジョイナトランスフォーメーションでは、 n:n
のパーティション化を使用できます。ジョイナトランスフォーメーションで n:nのパーティ
ション化を使用するときは、マスターパイプラインおよび明細パイプラインに n個のパーテ
ィションを作成します。Integration Serviceで結合処理を行うときに、明細パーティショ
ンの行と対応するマスターパーティションの行とが比較され、その他のマスターパーティ
ションの行は無視されます。アウタージョインでマスタデータおよび明細データを処理す
るときには、各明細キャッシュのパーティションが処理された後に、Integration Service
によって一致しないマスタ行が出力されます。
ヒント: マスタソースに数多くの行がある場合は、セッションのパフォーマンスをより良
くするために、n:nのパーティション化を使用します。
n:nのパーティション化を使用するには、セッションに複数のパーティションを作成し、ジ
ョイナトランスフォーメーションにパーティションポイントを作成する必要があります。
ジョイナトランスフォーメーションにパーティションポイントを作成して、ジョイナトラ
ンスフォーメーションのマスタソースと明細ソースの両方に、複数のパーティションを作
成します。
ジョイナトランスフォーメーションにパーティションポイントを作成する場合、
Integration Serviceではキャッシュのパーティション化が使用されます。 各パーティシ
ョンにメモリキャッシュが1つ作成されます。 各パーティションのメモリキャッシュに
は、そのパーティションに必要な行のみが含まれます。したがって、Integration Service
には各パーティションのキャッシュメモリ全体の一部が必要です。
ジョイナトランスフォーメーションのキャッシュサイ
ズの設定
ジョイナトランスフォーメーションのセッションプロパティに、インデックスキャッシュ
およびデータキャッシュのサイズを設定できます。
1:nのパーティション化を使用すると、Integration Serviceによって各パーティションに
メモリキャッシュが複製されます。各パーティションには、トランスフォーメーションに
必要な合計と同じ容量のメモリが必要です。 1: nのパーティション化を使用してジョイナ
トランスフォーメーションのキャッシュサイズを設定するときは、トランスフォーメーシ
ョンに必要な合計にキャッシュサイズを設定します。
n:nのパーティション化を使用するときは、各パーティションにはトランスフォーメーショ
ンの処理に必要な合計メモリの一部が必要です。 n:nのパーティション化を使用してジョイ
ナトランスフォーメーションのキャッシュサイズを設定するときは、トランスフォーメー
ションに必要な合計を計算して、それをパーティション数で割ります。
キャッシュの計算を使用して、トランスフォーメーションの処理に必要なキャッシュサイ
ズを決定できます。たとえば、キャッシュの計算を使用して、ジョイナトランスフォーメ
ーションではインデックスキャッシュ用に2,000,000バイトのメモリ、データキャッシュ用
に4,000,000バイトのメモリが必要であることを決定します。また、パイプラインに対して
ジョイナキャッシュ
327
4つのパーティションを作成したとします。 1: nのパーティション化を使用する場合は、イ
ンデックスキャッシュに 2,000,000バイト、データキャッシュに 4,000,000バイトを設定
します。n:nのパーティション化を使用する場合は、インデックスキャッシュに 500,000バ
イト、データキャッシュに 1,000,000バイトを設定します。
以下のテーブルで、ジョイナのキャッシュサイズを計算するために入力する値について説
明します。
入力
説明
マスタ行の
数
マスターソース内の行数。未ソートの入力を使用したジョイナト
ランスフォーメーションに適用します。マスター行数は、ソート
済みのジョイナトランスフォーメーションのキャッシュサイズに
は影響しません。
注: マスタソースの行が一意のキーを共有する場合は、キャッ
シュの計算によってインデックスキャッシュのサイズが過大に概
算されます。
データ移動
モード
Integration Serviceのデータ移動モードです。キャッシュ要件
はデータ移動モードによって異なります。ASCII文字は1バイトを
使用します。Unicode文字は2バイトを使用します。
入力値を入力して[計算]をクリックすると、データおよびソータキャッシュサイズが計
算されます。[データキャッシュサイズ]フィールドおよび[インデックスキャッシュサ
イズ]フィールドに、計算値が表示されます。
ジョイナキャッシュのトラブルシューティング
このセッションの情報を使用すると、ジョイナトランスフォーメーションのキャッシュの
トラブルシューティングに役立ちます。
ソート済み入力を使用するジョイナトランスフォーメーションのキャッ
シュサイズを計算するときに、キャッシュの計算によって以下の警告が
表示されます。
CMN_2020
Warning: If the master and detail pipelines of a sorted Joiner transformation are from
the same source, the Integration Service cannot determine how fast it will process the rows in each
pipeline. As a result, the cache size estimate may be inaccurate.
マスターパイプラインと明細パイプラインとで、同時に行が処理されます。同じソースの
データを結合する場合、パイプラインでは異なる速さで行が処理されることがあります。1
つのパイプラインによる行の処理が他のパイプラインよりも速い場合、Integration
Serviceでは、既に処理されたすべての行がキャッシュに格納され、他のパイプラインによ
る行の処理が終了するまでキャッシュに格納されたままになります。キャッシュされた行
の合計は、2つのパイプライン間での処理の速さの違いによって異なります。
最適なセッションパフォーマンスを実現するために、キャッシュされた行をすべて格納す
るのに十分なキャッシュサイズが必要です。キャッシュサイズが十分に大きくない場合
は、サイズを増加します。
注: 異なるソースのデータを結合するときにこのメッセージが表示される場合でも、同じ
ソースのデータを結合すると表示されます。
328
章 20: セッションのキャッシュ
ソート済み入力を使用するジョイナトランスフォーメーションのキャッ
シュサイズを計算するときに、キャッシュの計算によって以下の警告が
表示されます。
CMN_2021
Warning: Increase the data cache size if the sorted Joiner transformation processes
master rows that share the same key. To determine the new cache size, divide the existing cache size
by 2.5 and multiply the result by the average number of master rows per key.
ソート済み入力を使用したジョイナトランスフォーメーションのキャッシュサイズを計算
する場合、キャッシュの計算では、一意キーごとに平均2.5のマスター行という要件に基づ
いてキャッシュが見積もられます。一意キーごとのマスター行の平均数が2.5よりも大きい
場合、それに応じてキャッシュサイズを増加します。たとえば、一意キーごとのマスター
行の平均数が5(2.5の2倍のサイズ)の場合、キャッシュの計算によって計算されたキャッ
シュサイズを2倍にします。
ルックアップキャッシュ
ルックアップトランスフォーメーションでキャッシュを有効にした場合、Integration
Serviceではルックアップデータを格納するためのキャッシュがメモリに構築されます。
Integration Serviceによってメモリにルックアップキャッシュが構築されると、トランス
フォーメーションの最初のデータ行が処理され、トランスフォーメーションを入力する各
行に対してキャッシュのクエリが実行されます。 キャッシュが有効でない場合は、
Integration Serviceでは各入力行に対してルックアップソースのクエリーが実行されま
す。
ルックアップソースをキャッシュに格納するかどうかに関わらず、ルックアップクエリー
の結果および処理は同じです。ただし、ルックアップキャッシュを使用するとセッション
のパフォーマンスを向上させることができます。ソースが大きい場合は、ルックアップソ
ースをキャッシュすることによってパフォーマンスを最適化できます。
セッションとセッションの間にルックアップが変更されない場合は、永続ルックアップキ
ャッシュを使用するようにトランスフォーメーションを設定できます。セッションの実行
時、キャッシュファイルが存在しない場合やキャッシュファイルが無効である場合、
Integration Serviceは永続キャシュを構築します。
Integration Serviceでは、ルックアップトランスフォーメーションに対して以下のキャッ
シュが作成されます。
¨ データキャッシュ。ルックアップトランスフォーメーションが接続されている場合、接
続された出力ポートで、ルックアップ条件で使用されるポート以外のデータを格納しま
す。 ルックアップトランスフォーメーションが接続されていない場合、戻りポートの
データを格納します。
¨ インデックスキャッシュ。ルックアップ条件で使用されるカラムのデータを格納しま
す。
Integration Serviceでは、ルックアップキャッシュおよびパーティション化の情報に基づ
いて、ディスクおよびメモリキャッシュが作成されます。
ルックアップキャッシュ
329
以下のテーブルでは、キャッシュおよびパーティション化の情報に基づいてIntegration
Serviceで作成されるキャッシュについて説明します。
ルックアップ条件
ディスクキャッシュ
メモリキャッシュ
- 静的キャッシュ
- 自動ハッシュキーパー
ティションなし
すべてのパーティション
に対して1つのディスク
キャッシュ。
パーティションごとに1
つのメモリキャッシュ。
- 動的キャッシュ
- 自動ハッシュキーパー
ティションなし
すべてのパーティション
に対して1つのディスク
キャッシュ。
すべてのパーティション
に対して1つのメモリキ
ャッシュ。
- 静的キャッシュまたは
動的キャッシュ
- 自動ハッシュキーのパ
ーティションポイント
パーティションごとに1
つのディスクキャッシ
ュ。
パーティションごとに1
つのメモリキャッシュ。
ルックアップトランスフォーメーションを使用してセッションに複数のパーティションを
作成し、ルックアップトランスフォーメーションに自動ハッシュキーのパーティションポ
イントを作成すると、Integration Serviceではキャッシュのパーティション化が使用され
ます。
Integration Serviceでキャッシュのパーティション化が使用されると、任意のパーティシ
ョンの最初の行がルックアップトランスフォーメーションに到達したときに、ルックアッ
プトランスフォーメーションのキャッシュが作成されます。コンカレントキャッシュ用に
ルックアップトランスフォーメーションを設定した場合、Integration Serviceによってパ
ーティションのすべてのキャッシュが同時に構築されます。
キャッシュの共有
Integration Serviceでは、キャッシュが静的か動的かどうかによって、共有されたルック
アップキャッシュの処理が異なります。
¨ 静的キャッシュ。 2つのルックアップトランスフォーメーションで1つの静的キャッシ
ュを共有する場合、Integration Serviceでは、同じパイプラインステージで共有され
たトランスフォーメーションに対して追加メモリの割り当てを 行いません。 異なるパ
イプラインステージで共有されるトランスフォーメーションについては、Integration
Serviceによって追加メモリが 割り当てられます。
同じデータまたはデータのサブセットを使ってディスクキャッシュを作成する静的なル
ックアップトランスフォーメーションであれば、複数のルックアップトランスフォーメ
ーションがディスクキャッシュを共有できます。ただし、ルックアップキーは異なる場
合があるため、各トランスフォーメーションは別々のメモリキャッシュを持つ必要があ
ります。
¨ 動的キャッシュ。 ルックアップトランスフォーメーションが1つの動的キャッシュを共
有する場合、Integration Serviceはメモリキャッシュとディスクキャッシュを更新し
ます。 キャッシュの同期を保つために、Integration Serviceはディスクキャッシュと
それに対応するメモリキャッシュをトランスフォーメーション間で共有する必要があり
ます。
330
章 20: セッションのキャッシュ
ルックアップトランスフォーメーションのキャッシュ
サイズの設定
セッションプロパティで、ルックアップトランスフォーメーションのキャッシュサイズを
設定できます。
以下のテーブルで、ルックアップのキャッシュサイズを計算するために入力する値につい
て説明します。
入力
説明
一意のルックア
ップキーを持つ
行数
一意のルックアップキーを持つルックアップソースの行数で
す。
データ移動モー
ド
Integration Serviceのデータ移動モードです。キャッシュ
要件はデータ移動モードによって異なります。ASCII文字は1
バイトを使用します。Unicode文字は2バイトを使用します。
入力値を入力して[計算]をクリックすると、データおよびソータキャッシュサイズが計
算されます。[データキャッシュサイズ]フィールドおよび[インデックスキャッシュサ
イズ]フィールドに、計算値が表示されます。
ランクキャッシュ
Integration Serviceではキャッシュメモリを使用して、ランクトランスフォーメーション
が処理されます。 ランク付けが完了するまで、ランクメモリにデータが格納されます。
Integration Serviceは、ランクトランスフォーメーションでセッションを実行するとき、
入力行とデータキャッシュの行を比較します。 格納されている行よりも入力行の方がラン
クが高くなった場合に、Integration Serviceは格納されている行を入力行に置き換えま
す。
たとえば、売り上げ高の上位3位までを検索するランクトランスフォーメーションを設定し
ます。Integration Serviceは、以下の入力データを読み込みます。
SALES
10,000
12,210
5,000
2,455
6,324
Integration Serviceは最初の3つの行(10,000、12,210、および5,000)をキャッシュに
格納します。 次にIntegration Serviceはその次の行(2,455)を読み込んでキャッシュ
内の値と比較します。 この行はキャッシュに格納されている行よりもランクが低いため、
サーバーは2,455の値を持つこの行を削除します。しかしその次の行(6,324)はキャッシ
ュ内の行の1つよりも高いランクを持ちます。したがって、Integration Serviceはキャッ
シュされた行をより上位のランクを持つ入力行に置き換えます。
ランクキャッシュ
331
複数のグループにまたがってランク付けを行うようにランクトランスフォーメーションが
設定されている場合、Integration Serviceは検索したそれぞれのグループに対して同じや
り方でランク付けを行い、ランクの数字は増加していきます。
Integration Serviceでは、ランクトランスフォーメーションに対して以下のキャッシュが
作成されます。
¨ データキャッシュ。GroupByポートに基づいてランキング情報を格納します。
¨ インデックスキャッシュ。GroupByポートの設定に従ってグループ値を格納します。
デフォルトでは、Integration Serviceはすべてのパーティションに対して1つのメモリキ
ャッシュとディスクキャッシュを作成します。
セッションに複数のパーティションを作成した場合、Integration Serviceではキャッシュ
のパーティション化が使用されます。 ランクトランスフォーメーションに1つのディスク
キャッシュ、各パーティションに1つのメモリキャッシュが作成され、トランスフォーメー
ションのグループキー値に基づいてパーティションから別のパーティションにデータがル
ーティングされます。
ランクトランスフォーメーションのキャッシュサイズ
の設定
セッションプロパティで、ランクトランスフォーメーションのキャッシュサイズを設定で
きます。
以下の表に、ランクのキャッシュサイズを計算するために入力する値を示します。
入力
説明
グループ数
グループの数です。ランクトランスフォーメーションでは、グル
ープ別にデータをランク付けします。ポート別のグループを使用
して、グループの数を決定します。たとえば、Store IDとItem
ID別にグループ化したときに、Storeが5個、Itemが25個あり、各
Storeに25個のItemすべてが含まれる場合、以下のようにグルー
プの数を計算します。
5 * 25 = 125 groups
ランク数
ランク付けの項目数です。たとえば、上位10位の売り上げをラン
ク付けする場合は、10個のランクがあります。キャッシュの計算
では、ランクトランスフォーメーションで設定した値に基づい
て、この値が入力されます。
データ移動
モード
Integration Serviceのデータ移動モードです。キャッシュ要件
はデータ移動モードによって異なります。ASCII文字は1バイトを
使用します。Unicode文字は2バイトを使用します。
入力値を入力して[計算]をクリックすると、データおよびソータキャッシュサイズが計
算されます。[データキャッシュサイズ]フィールドおよび[インデックスキャッシュサ
イズ]フィールドに、計算値が表示されます。
332
章 20: セッションのキャッシュ
ランクキャッシュのトラブルシューティング
このセッションの情報を使用すると、ランクトランスフォーメーションのキャッシュのト
ラブルシューティングに役立ちます。
以下に示すメモリ割り当てエラーは、4GBを超えるランクキャッシュサイ
ズを設定したセッションを実行し、Integration ServiceプロセスをPA
RISCプロセッサ搭載のHewlett Packard 64ビットのマシン上で実行した
ときにセッションログに書き出されたものです。
FATAL 8/17/2006 5:12:21 PM node01_havoc *********** FATAL ERROR : Failed to allocate memory (out of
virtual memory). ***********
FATAL 8/17/2006 5:12:21 PM node01_havoc *********** FATAL ERROR : Aborting the DTM process due to
memory allocation failure. ***********
PA RISCプロセッサ搭載の64ビットHP-UXマシンでは、デフォルトで1プロセスあたり最大
4GBのメモリが割り当てられます。セッションに必要なメモリが4GBを上回る場合には、
maxdsiz_64bitオペレーティングシステム変数を使用してマシンの最大メモリ量を増やしま
す。maxdsiz_64bitの詳細については、以下のURLを参照してください。
http://docs.hp.com/en/B3921-90010/maxdsiz.5.html
ソータキャッシュ
Integration Serviceではキャッシュメモリを使用して、ソータトランスフォーメーション
が処理されます。 Integration Serviceは、ソート操作を実行する前に、すべての受信デ
ータをソータトランスフォーメーションに渡します。
Integration Serviceではデータのソート中に、ソートキーおよびデータを格納するための
ソータキャッシュが作成されます。デフォルトでは、Integration Serviceはすべてのパー
ティションに対して1つのメモリキャッシュとディスクキャッシュを作成します。
セッションに複数のパーティションを作成した場合、Integration Serviceではキャッシュ
のパーティション化が使用されます。 ソータトランスフォーメーションに1つのディスク
キャッシュ、各パーティションに1つのメモリキャッシュが作成されます。Integration
Serviceによって、各パーティションに別々のキャッシュが作成され、各パーティションが
別々にソートされます。
メモリ内のすべてのデータをソートするようにキャッシュサイズを設定していない場合、
Integration Serviceによってソースデータに複数のパスが作成されたことを示す警告が、
セッションログに表示されます。ソートを完了するためにディスクに情報をページングす
る必要がある場合、Integration Serviceによってデータに複数のパスが作成されます。
Integration Serviceでデータが1回読み込まれ、ディスクにページングしないでメモリで
ソートが実行される場合に、このメッセージには単一パスに必要なバイト数が表示されま
す。セッションのパフォーマンスを向上させるには、Integration Serviceによってデータ
に1つのパスが作成されるように、キャッシュサイズを設定します。
ソータキャッシュ
333
ソータトランスフォーメーションのキャッシュサイズ
の設定
セッションプロパティで、ソータトランスフォーメーションのソータキャッシュを設定で
きます。
以下の表に、ソータのキャッシュサイズを計算するために入力する値を示します。
入力
説明
行数
行数。
データ移動
モード
Integration Serviceのデータ移動モードです。キャッシュ要件
はデータ移動モードによって異なります。ASCII文字は1バイトを
使用します。Unicode文字は2バイトを使用します。
ソータキャッシュサイズを計算するには、入力値を入力して、[計算]をクリックしま
す。計算された値が、[ソータキャッシュサイズ]フィールドに表示されます。
XMLターゲットキャッシュ
Integration Serviceではキャッシュメモリを使用して、XMLターゲットが作成されます。
Integration Serviceでは、XMLターゲットの生成中に、データおよびXML階層がキャッシ
ュメモリに格納されます。
Integration Serviceによって、XMLターゲットに対して以下のタイプのキャッシュが作成
されます。
¨ データキャッシュ。XMLターゲットドキュメントの生成中に、XML行データを格納しま
す。 すべてのグループに対して1つのデータキャッシュを格納します。
¨ インデックスキャッシュ。プライマリキーまたは外部キーを格納します。 各グループ
にプライマリキーインデックスキャッシュおよび外部キーインデックスキャッシュを作
成します。
XMLターゲットのキャッシュサイズの設定
ターゲットプロパティまたはセッションプロパティで、XMLターゲットのキャッシュサイズ
を設定します。デフォルトでは、キャッシュサイズが「自動」に設定されます。必要なキ
ャッシュメモリ容量は、Integration Serviceのランタイムに決定されます。
また、キャッシュサイズを設定して、キャッシュメモリ容量をバイト単位で指定すること
もできます。キャッシュサイズを計算するには、次の手順を完了します。
1.
各グループ内の行数を見積もります。
2.
次の計算式を使用して、各グループのキャッシュサイズを計算します。
Group cache size = Data cache size + Primary key index cache size + Foreign key index cache size
334
章 20: セッションのキャッシュ
3.
次の計算式を使用して合計キャッシュサイズを計算します:
合計キャッシュサイズ=Sum(すべてのグループのキャッシュサイズ)
グループのデータキャッシュのサイズを計算する式を次に示します。
(グループ内の行数)X(グループの行サイズ)
グループのプライマリキーツリーのサイズを計算する式を次に示します。
(グループ内の行数)X(プライマリキーインデックスのキャッシュサイズ)
グループの外部キーツリーのサイズを計算する式を次に示します。
Sum((親グループ内の行数)X(外部キーインデックスのキャッシュサイズ))
注: キャッシュの計算を使用して、XMLターゲットのキャッシュサイズを設定することは
できません。
キャッシュサイズの最適化
セッションパフォーマンスを最適にするには、ディスクにページングしないでメモリでト
ランスフォーメーションが処理されるように、Integration Serviceのキャッシュサイズを
設定します。Integration Serviceでディスクにページングされると、セッションパフォー
マンスが減少します。
キャッシュの計算を使用してキャッシュサイズを計算すると、キャッシュの計算では、入
力値に基づいて最適なセッションパフォーマンスに必要なキャッシュサイズが見積もられ
ます。セッションログに指定されたキャッシュサイズを使用して、その見積もりを調整で
きます。セッションの実行後に、セッションログのトランスフォーメーション統計を確認
して、キャッシュサイズを所得します。
たとえば、AGGTRANSというアグリゲータトランスフォーメーションを実行します。セッシ
ョンログには、以下のテキストが含まれます。
MAPPING> TT_11031 Transformation [AGGTRANS]:
MAPPING> TT_11114 [AGGTRANS]: Input Group Index = [0], Input Row Count [110264]
MAPPING> TT_11034 [SQ_V_PETL]: Input - 110264
MAPPING> TT_11115 [AGGTRANS]: Output Group Index = [0]
MAPPING> TT_11037 [FILTRANS]: Output - 1098,Dropped - 0
MAPPING> CMN_1791 The index cache size that would hold [1098] aggregate groups of input rows for
[AGGTRANS], in memory, is [286720] bytes
MAPPING> CMN_1790 The data cache size that would hold [1098] aggregate groups of input rows for
[AGGTRANS], in memory, is [1774368] bytes
このログは、ディスクにページングしないでメモリでトランスフォーメーションを処理す
るには、インデックスキャッシュには286,720バイト、データキャッシュには1,774,368バ
イトが必要なことを示しています。
キャッシュサイズは、セッションまたはソースデータへの変更に応じて異なる場合があり
ます。後続セッションの実行後にセッションログを確認して、キャッシュサイズへの変更
を監視します。
Integration Serviceでトランスフォーメーション統計のセッションログへの書き込みを有
効にするには、セッションプロパティのトレースレベルを[Verbose Initialization]に
設定する必要があります。
キャッシュサイズの最適化
335
注: セッションログには、ソータ、ソート済み入力を使用したジョイナトランスフォーメ
ーション、ソート済み入力を使用したアグリゲータトランスフォーメーション、またはXML
ターゲットのトランスフォーメーション統計は含まれません。
336
章 20: セッションのキャッシュ
第 21 章
差分集計
この章では、以下の項目について説明します。
¨ 差分集計の概要, 337 ページ
¨ 差分集計のためのIntegration Serviceの処理, 338 ページ
¨ 集計ファイルの再初期化, 339 ページ
¨ 集計ファイルの移動と削除, 339 ページ
¨ 差分集計を使用したパーティション化のガイドライン, 340 ページ
¨ 差分集計のための準備, 341 ページ
差分集計の概要
差分集計では、ソース内から取得した変更をセッションで集計計算に適用します。ソース
の変更が差分であり、その変更を取得できる場合は、その変更を処理するようにセッショ
ンを設定できます。この結果、Integration Serviceは、セッションを実行するたびにソー
ス全体を処理して同じデータを再計算する代わりに、ターゲットの差分だけを更新するこ
とができます。
たとえば、新しいデータを毎日受け取るソースを使用するセッションがあるとします。既
存のデータをデータフローから取り除くフィルタ条件をマッピングに追加してあり、それ
によって差分変更を取得することができます。そして、差分集計を有効にします。
このセッションを、差分集計を有効にして3月1日に初めて実行するときには、ソース全体
を使用します。この結果、Integration Serviceは、必要な集計データを読み込んで格納で
きます。 3月2日にセッションを再び実行すると、3月2日のタイムスタンプが付いたレコー
ド以外はすべてフィルタによって除外されます。Integration Serviceは、新しいデータを
処理し、それに応じてターゲットを更新します。
次の状況での差分集計の使用を検討します。
¨ 新しいソースデータがキャプチャ可能な場合。セッションを実行するたびに新しいソー
スデータをキャプチャできる場合、差分集計を使用します。 ストアドプロシージャト
ランスフォーメーションまたはフィルタトランスフォーメーションを使用して、新しい
データを処理します。
337
¨ 差分変更がターゲットを大幅に変更しない場合。変更がターゲットを大幅に変更しない
場合、差分集計を使用します。 差分変更のソースによって既存のターゲットの半分以
上が変更される場合、セッションで差分集計を使用することで得られる利点がなくなり
ます。この場合には、テーブルを削除してから、完全なソースデータを使ってターゲッ
トを再作成してください。
注: マッピングにPercentile関数またはMedian関数が含まれている場合、差分集計は使用
しないでください。Integration Serviceは、これらの関数を処理するときに、セッション
プロパティで設定したキャッシュメモリだけでなく、システムメモリも使用します。 この
結果、Integration Serviceはディスクキャッシュに、Percentile関数およびMedian関数
の差分集計の値を格納しません。
差分集計のためのIntegration Serviceの処
理
差分集計セッションを初めて実行するときに、Integration Serviceではソース全体が処理
されます。 セッションの最後に、Integration Serviceはセッションの実行によって得た
集計データを2つのファイル(インデックスファイルとデータファイル)に格納します。
Integration Serviceは、アグリゲータトランスフォーメーションのプロパティで指定した
キャッシュディレクトリでこれらのファイルを作成します。
差分集計を含むセッションを以降に実行するたびに、ソースの差分変更をセッションで使
用します。入力レコードごとに、Integration Serviceはインデックスファイル内の履歴情
報をチェックして対応するグループがあるかどうかを調べます。 対応するグループが見つ
かった場合、Integration Serviceはそのグループの集計データを使って差分集計処理を行
い、差分変更を保存します。 対応するグループが見つからない場合、Integration
Serviceは新しいグループを作成してレコードデータを保存します。
ターゲットに書き込むときには、Integration Serviceは既存のターゲットに変更を適用し
ます。 変更された集計データをインデックスファイルとデータファイルに保存し、次にセ
ッションを実行するときに履歴データとして使用できるようにします。
ソースに大幅な変更があり、かつIntegration Serviceに将来の差分変更に備えて集計デー
タの保存を継続させたい場合は、既存の集計データを新しい集計データで上書きするよう
にIntegration Serviceを設定します。
差分集計を含むセッションを以降に実行するたびに、Integration Serviceでは、差分集計
ファイルのバックアップが作成されます。 アグリゲータトランスフォーメーションのキャ
ッシュディレクトリには、これらの2つのファイルのセットを格納するのに十分なディスク
容量が必要です。
差分集計を使用するセッションをパーティション化する場合、Integration Serviceでは、
パーティションごとにキャッシュファイルが1セット作成されます。
次のいずれかのタスクを実行した場合、Integration Serviceでは履歴データが使用される
のではなく、新しい集計データが作成されます。
¨ マッピングの新しいバージョンを保存する。
¨ 集計キャッシュを再初期化するようにセッションを設定する。
338
章 21: 差分集計
¨ セッションプロパティでファイルに設定されているパスまたはディレクトリを修正せず
に、集計ファイルを移動する。
¨ 集計ファイルを新しい場所に移動せずに、集計ファイルに対して設定されているパスま
たはディレクトリを変更する。
¨ キャッシュファイルを削除する。
¨ パーティション数を減らす。
Integration Serviceによって差分集計ファイルが再構築された場合、前回のファイルに含
まれていたデータは失われます。
注: ファイルの破損やディスク障害から差分集計ファイルを保護するために、これらのフ
ァイルを定期的にバックアップします。
集計ファイルの再初期化
ソーステーブルに大幅な変更があった場合、履歴データを使用するのではなく、
Integration Serviceで集計データを新たに作成できます。 Integration Serviceで集計
データを新たに作成するには、集計キャッシュを再初期化するようにセッションを設定し
ます。
たとえば、セッションで使うソースが毎日差分で変更され、月に1回は完全に変更されると
いう場合、集計キャッシュの再初期化を行うことができます。その月の新しいソースデー
タを受け取ったときに、集計キャッシュを再初期化し、既存のターゲットを切り詰め、セ
ッション中に新しいソーステーブルを使用するようにセッションを設定するとします。
集計キャッシュを再初期化するセッションを実行した後は、セッションプロパティを編集
して、[集計キャッシュの再初期化]オプションを無効にしてください。[集計キャッシ
ュの再初期化]の選択を取り消さない場合、Integration Serviceではセッションを実行す
るたびに集計キャッシュが上書きされます。
注: WindowsからUNIXへ移行する場合は、キャッシュを再初期化する必要があります。し
たがって、コードページの互換性の有無にかかわらず、Latin1からMSLatin1へのコードペ
ージの変更はできません。
集計ファイルの移動と削除
差分集計セッションを実行した後は、集計情報の履歴が格納されているインデックスファ
イルやデータファイルの移動や変更を避けます。
これらのファイルを別のディレクトリに移動し、Integration Serviceで集計ファイルを使
用する場合は、セッションプロパティでこれらのファイルのパスも変更する必要がありま
す。 また、ファイルのパスを変更してもファイルが移動していない場合、次回セッション
を実行するときに、Integration Serviceによってファイルが再構築されます。
特定のセッションまたはIntegration Serviceのプロパティを変更した場合、Integration
Serviceで差分集計ファイルが使用できず、セッションは失敗します。 次のいずれかの作
集計ファイルの再初期化
339
業を行う際には、セッションの失敗を回避するために、既存の差分集計ファイルを削除し
ます。
¨ Integration Serviceのデータ移動モードをASCIIからUnicode、またはUnicodeから
ASCIIに変更する。
¨ Integration Serviceのコードページを互換性のないコードページに変更する。
¨ Integration ServiceがUnicodeモードで動作しているときにセッションのソート順を
変更する。
¨ [高精度10進演算を有効にする]セッションオプションを変更する。
インデックスファイルとデータファイルの検索
デフォルトでは、Integration Serviceによってインデックスファイルとデータファイル
は、Workflow Managerでプロセス変数$PMCacheDirに入力されたディレクトリに格納されま
す。 Integration Serviceは、インデックスファイルに「PMAGG* .idx*」という名前を付
けます。 そして、Integration Serviceはデータファイルに「PMAGG*.dat*」という名前
を付けます。
セッションの実行時、Integration Serviceは、ファイル名をセッションログに書き込みま
す。 ファイルの場所を特定するには、以前のセッションログを調べて、キャッシュファイ
ルの名前とディレクトリを示すSM_7034およびSM_7035の各メッセージを探します。たとえ
ば、セッションログのエントリには、次のようなメッセージが出力されます。
MAPPING> SM_7034 Aggregate Information: Index file is [C:\Informatica\PowerCenter8.0\server
\infa_shared\Cache\PMAGG8_4_2.idx2]
MAPPING> SM_7035 Aggregate Information: Data file is [C:\Informatica\PowerCenter8.0\server
\infa_shared\Cache\PMAGG8_4_2.dat2]
差分集計を使用したパーティション化のガイ
ドライン
複数のパーティションを含むセッションで差分集計を使用する場合、Integration Service
は、パーティションごとにキャッシュファイルを1セット作成します。
パーティション数またはキャッシュディレクトリを変更する場合は、次のガイドラインを
使用します。
¨ パーティション用のキャッシュディレクトリの変更。パーティション用のディレクトリ
を変更し、Integration Serviceでキャッシュファイルを再利用する場合は、変更した
ディレクトリに関連付けられたパーティション用のキャッシュファイルを移動する必要
があります。
- 最初のパーティション用のディレクトリを変更し、キャッシュファイルを移動しない
場合、Integration Serviceではすべてのパーティション用にキャッシュファイルが
再構築されます。
- パーティション2-n用のディレクトリを変更し、キャッシュファイルを移動しない場
合、Integration Serviceでは見つからなかったキャッシュファイルが再構築されま
す。
340
章 21: 差分集計
¨ パーティション数を減らす。パーティションを削除し、Integration Serviceでキャッ
シュファイルを再利用する場合は、削除されたパーティション用のキャッシュファイル
を、最初のパーティション用に設定されたディレクトリに移動する必要があります。
最初のパーティションのディレクトリにファイルを移動しなかった場合、Integration
Serviceでは見つからなかったキャッシュファイルが再構築されます。
注: パーティションの数を増やした場合、次回セッションを実行するときに、
Integration Serviceによって、インデックスとデータのキャッシュファイルが再調整
されます。 これらのファイルを再構築する必要はありません。
¨ キャッシュファイルの移動。パーティション用のキャッシュファイルを移動し、
Integration Serviceでファイルを再利用する場合は、パーティションのディレクトリ
も変更する必要があります。 ディレクトリを変更しなかった場合、次回セッションを
実行するときにIntegration Serviceによりファイルが再構築されます。
¨ キャッシュファイルを削除する。キャッシュファイルを削除した場合、次回セッション
を実行するときにIntegration Serviceによりファイルが再構築されます。
パーティション数とキャッシュディレクトリを変更した場合、その両方について、キャッ
シュファイルを移動する必要があります。たとえば、パーティション1のキャッシュディレ
クトリを変更し、パーティションの数を減らした場合、削除したパーティションのキャッ
シュファイル、および変更したディレクトリに関連付けられたパーティションのキャッシ
ュファイルを移動する必要があります。
差分集計のための準備
差分集計を使用する場合、マッピングのプロパティとセッションのプロパティを両方とも
設定する必要があります。
¨ 既存のデータを除外するマッピングロジックまたはフィルタを実装します。
¨ 差分集計用にセッションを設定し、ファイルディレクトリに集計ファイルを格納できる
だけの十分なディスク容量があることを確認します。
マッピングの設定
差分集計を有効にする前に、ソースデータ内の変更を取得しなければなりません。マッピ
ングでフィルタまたはストアードプロシージャトランスフォーメーションを使用すれば、
セッション中に既存のソースデータを削除できます。
差分集計のための準備
341
セッションの設定
差分集計用にセッションを設定する場合は、以下のガイドラインを使用します。
¨ 集計ファイルを格納する場所の確認。インデックスファイルとデータファイルは、ソー
スデータに比例して大きくなります。 セッションの履歴データを格納するのに十分な
ディスクスペースがあることを確認してください。
複数の差分集計セッションを実行する場合は、ファイルの格納先を決めてください。そ
の後、Workflow Managerで、プロセス変数$PMCacheDirに適切なディレクトリを入力し
てください。インデックスファイルとデータファイル用に、セッションごとに固有のデ
ィレクトリを入力できます。ただし、差分集計を使うすべてのセッションにプロセス変
数を使用すれば、$PMCacheDirを変更するだけで、必要なときにキャッシュディレクト
リを簡単に変更できます。
ファイルを移動しないで、キャッシュディレクトリを変更した場合、Integration
Serviceにより集計キャッシュが再初期化され、新しい集計データが収集されます。
グリッドでは、Integration Serviceによって、見つからなかった差分集計ファイルが
再構築されます。 Integration Serviceによって差分集計ファイルが再構築された場
合、集計の履歴は失われます。
¨ セッションプロパティでの差分集計設定の確認。[プロパティ]タブの[パフォーマン
ス]設定で、差分集計のセッションを設定できます。
集計キャッシュを再初期化するように、セッションを設定することもできます。キャッ
シュの再初期化を選択した場合、Workflow Managerは、Integration Serviceが既存の
キャッシュを上書きすることを示す警告を表示し、セッションの実行後にこのオプショ
ンの選択を取り消すように注意を促します。
注: [Transaction]をトランスフォーメーション範囲とするアグリゲータトランスフォ
ーメーションがマッピングに含まれる場合、差分集計を使用することはできません。その
ようなセッションは、Workflow Managerによって無効のマークが付けられます。
342
章 21: 差分集計
第 22 章
セッションログインタフェー
ス
この章では、以下の項目について説明します。
¨ セッションログインタフェースの概要, 343 ページ
¨ セッションログインタフェースの実装, 343 ページ
¨ セッションログインタフェースの関数, 345 ページ
¨ セッションログインタフェースの例, 349 ページ
セッションログインタフェースの概要
デフォルトでは、Integration Serviceにより、セッションイベントはサービスプロセスが
実行されるノード上のバイナリログファイルに書き込みます。 さらに、Integration
Serviceにより、セッションイベント情報が外部ライブラリに渡されます。 外部共有ライ
ブラリ内に、Integration Serviceがログイベントを書き込む方法の手順を提供することが
できます。
PowerCenterでは、セッションログインタフェースを通してセッションイベント情報へのア
クセスが提供されます。 共有ライブラリを作成する場合、セッションログインタフェース
で提供された関数を実装します。
セッションイベントを書き込む際、Integration Serviceにより、セッションログインタフ
ェースで指定された関数が呼び出されます。 作成した共有ライブラリ内の関数は、セッシ
ョンログインタフェースで定義された関数宣言に一致しなければなりません。
セッションログインタフェースの実装
セッションイベント情報の処理にカスタム手順を使用するようにIntegration Serviceを設
定するには、以下の手順を実行します。
1.
セッションログインタフェースを実装する共有ライブラリを作成します。
343
2.
AdministratorツールでIntegration Serviceプロパティを設定する際、作成する共有
ライブラリの名前にExportSessionLogLibNameプロパティを設定します。
Integration Serviceとセッションログインタフェース
Integration ServiceのExportSessionLogLibNameプロパティを共有ライブラリの名前に設
定した場合、Integration Serviceでは、イベントログファイルの作成に加えて、共有ライ
ブラリに定義された手順が実行されます。
Integration Serviceでは、以下の方法で共有ライブラリが使用されます。
1.
Integration Serviceは、共有ライブラリをロードし、INFA_InitSessionLog()関数を
呼び出してから、セッション内の最初のイベントをログに記録します。
2.
セッションログファイルにイベントを記録するたびに、Integration Serviceは
INFA_OutputSessionLog()関数を呼び出し、メッセージ、コード、およびセッション
情報を共有ライブラリに渡します。
3.
セッションが完了し、最後のイベントが記録されると、Integration Serviceは
INFA_EndSessionLog()を呼び出し、共有ライブラリをアンロードします。
共有ライブラリがIntegration Serviceによって正しく呼び出されるようにするには、次の
ガイドラインに従って共有ライブラリを記述します。
セッションログインタフェースの実装に関するルール
およびガイドライン
セッションログインタフェースを実装するためにコードを書き込む場合は、以下のルール
およびガイドラインを使用します。
¨ セッションログインタフェース内のすべての関数を実装する必要があります。
¨ 異常終了を除き、Integration Serviceからセッションログインタフェース内の関数へ
のすべての呼び出しはシリアライズされます。 Integration Serviceにより、イベント
をセッションログに記録する場合に、これらの関数への呼び出しが実行されます。 そ
のため、セッションログインタフェース内の関数を実装する際に、ミューテックスオブ
ジェクトを使用して、一度に1つのスレッドしかコードセクションを実行できないよう
にする必要はありません。
¨ セッションログインタフェースをUNIXで実装する場合、関数内でシグナル処理を実行し
ないようにします。 これは、関数によりPowerCenterが信号を処理する方法を妨害され
ることがないようにするためです。 シグナルハンドラを登録しないか、登録を解除し
ます。
¨ Integration Serviceはマルチスレッドプロセスであるため、共有ライブラリをマルチ
スレッドライブラリとしてコンパイルし、共有ライブラリが正しくロードされるように
する必要があります。
344
章 22: セッションログインタフェース
セッションログインタフェースの関数
セッションログインタフェースの関数からは値は返されません。 そのため、セッションロ
グインタフェースの関数に対するIntegration Service呼び出しが原因でセッションが失敗
することはありません。
以下の表に、セッションログインタフェースの関数を示します。
関数
説明
INFA_InitSessionLog
Integration Serviceがイベントログを書き込むセ
ッションに関する情報を提供します。
INFA_OutputSessionLogM
sg
イベントが記録されるたびに呼び出されます。イベ
ントに関する情報を渡します。
INFA_OutputSessionLogF
atalMsg
異常終了する前に最後のイベントが記録されたと
き、呼び出されます。
INFA_EndSessionLog
最後のメッセージがセッションログに送られ、セッ
ションが正常に終了した後に呼び出されます。
INFA_AbnormalSessionTe
rmination
最後のメッセージがセッションログに送られ、セッ
ションが異常終了した後に呼び出されます。
この節に記述された関数は、標準Cヘッダファイルの time.hで宣言された時間構造体を使用
します。また、この関数は、以下の宣言を前提としています。
typedef int
INFA_INT32;
typedef unsigned int
INFA_UINT32;
typedef unsigned short INFA_UNICHAR;
typedef char
INFA_MBCSCHAR;
typedef int
INFA_MBCS_CODEPAGE_ID;
INFA_InitSessionLog
void INFA_InitSessionLog(void ** dllContext,
const INFA_UNICHAR * sServerName,
const INFA_UNICHAR * sFolderName,
const INFA_UNICHAR * sWorkflowName,
const INFA_UNICHAR * sessionHierName[]);
Integration Serviceは、セッションログイベントを書き込む前にINFA_InitSessionLog関
数を呼び出します。 この関数に渡されるパラメータは、Integration Serviceがイベント
ログを書き込むセッションに関する情報を提供します。
セッションログインタフェースの関数
345
INFA_InitSessionLogには、以下のパラメータがあります。
パラメータ
データタイプ
説明
dllContext
未指定
共有ライブラリに固有のユーザー定義情報。
このパラメータは、後続する関数呼び出しの
すべての関数に渡されます。このパラメータ
は、ネットワーク接続に関連する情報を格納
したり、セッションログ出力の処理中に必要
となるメモリを割り当てる際に使用できま
す。共有ライブラリは、このパラメータに関
連付けられたメモリの割り当ておよび割り当
て解除を行う必要があります。
sServerName
符号なしの
short型
セッションを実行しているIntegration
Serviceの名前。
sFolderName
符号なしの
short型
セッションを含むフォルダ名。
sWorkflowNam
e
符号なしの
short型
セッションに関連付けられたワークフローの
名前。
sessionHierN
ame[]
符号なしの
short型の配
列
セッション階層を含む配列。配列には、セッ
ションが属しているリポジトリ、ワークフロ
ー、およびワークレット(指定している場
合)が含まれます。ポインタのサイズで除算
された配列のサイズは、配列要素の数と等し
くなります。
INFA_OutputSessionLogMsg
void INFA_OutputSessionLogMsg(
void * dllContext,
time_t curTime,
INFA_UINT32 severity,
const INFA_UNICHAR * msgCategoryName,
INFA_UINT32 msgCode,
const INFA_UNICHAR * msg,
const INFA_UNICHAR * threadDescription);
Integration Serviceは、イベントを記録するたびに、この関数を呼び出します。 この関
数に渡されるパラメータには、ログイベントメッセージのさまざまな要素が含まれます。
このパラメータは、ログ出力の形式をカスタマイズしたり、メッセージをフィルタリング
する際に使用できます。
346
章 22: セッションログインタフェース
INFA_OutputSessionLogMsgには、以下のパラメータがあります。
パラメータ
データタイ
プ
説明
dllContext
未指定
共有ライブラリに固有のユーザー定義情報。こ
のパラメータは、ネットワーク接続に関連する
情報を格納したり、セッションログ出力の処理
中に必要となるメモリを割り当てる際に使用で
きます。共有ライブラリは、このパラメータに
関連付けられたメモリの割り当ておよび割り当
て解除を行う必要があります。
curTime
time_t
Integration Serviceによりイベントが記録され
る時刻。
severity
符号なしの
int型
ログイベントメッセージのタイプを示すコー
ド。イベントログでは、以下の重要度コードが
使用されます。
32:デバッグメッセージ
8: 情報メッセージ
2: エラーメッセージ
msgCategoryN
ame
定数
符号なしの
short型
ログイベントメッセージのカテゴリを示すコー
ドのプレフィックス。
次のメッセージ例で、文字列BLKRは
msgCategoryNameパラメータに渡される値です。
READER_1_1_1> BLKR_16003 Initialization completed
successfully.
msgCode
符号なしの
int型
ログイベントメッセージを識別する番号。
次の例で、文字列16003はmsgCodeパラメータに
渡される値です。
READER_1_1_1> BLKR_16003 Initialization completed
successfully.
msg
定数
ログイベントメッセージのテキスト。
符号なしの
short型
次のメッセージ例で、文字列Initialization
completed successfullyはmsgパラメータに渡さ
れる値です。
READER_1_1_1> BLKR_16003 Initialization completed
successfully.
threadDescri
ption
定数
符号なしの
short型
イベントログを生成しているスレッドを示すコ
ード。
次の例で、文字列READER_1_1_1は
threadDesciptionパラメータに渡される値で
す。
READER_1_1_1> BLKR_16003 Initialization completed
successfully.
INFA_OutputSessionLogFatalMsg
void INFA_OutputSessionLogFatalMsg(void * dllContext, const char * msg);
セッションログインタフェースの関数
347
Integration Serviceは、異常終了の前に、この関数を呼び出して最後のイベントを記録し
ます。 パラメータmsgは、Integration Serviceコードページ内のMBSC文字です。
UNIXでこの関数を実装する場合には、この関数から非同期シグナルセーフ関数のみを呼び
出すようにしてください。
INFA_OutputSessionLogFatalMsgには、以下のパラメータがあります。
パラメータ
データタイ
プ
説明
dllContext
未指定
共有ライブラリに固有のユーザー定義情報。こ
のパラメータは、ネットワーク接続に関連する
情報を格納したり、セッションログ出力の処理
中に必要となるメモリを割り当てる際に使用で
きます。共有ライブラリは、このパラメータに
関連付けられたメモリの割り当ておよび割り当
て解除を行う必要があります。
msg
キャラクタ
定数
エラーメッセージのテキスト。一般に、これら
のメッセージはアサーションエラーメッセージ
か、オペレーティングシステムエラーメッセー
ジです。
INFA_EndSessionLog
void INFA_EndSessionLog(void * dllContext);
Integration Serviceは、最後のメッセージがセッションログに送られ、セッションが正常
に終了した後に、この関数を呼び出します。 この関数は、クリーンアップ操作の実行、お
よびメモリとリソースの解放を行う際に使用できます。
INFA_EndSessionLogには、以下のパラメータがあります。
パラメータ
データタイプ
説明
dllContext
未指定
共有ライブラリに固有のユーザー定義情報。
このパラメータは、ネットワーク接続に関連
する情報を格納したり、セッションログ出力
の処理中に必要となるメモリを割り当てる際
に使用できます。共有ライブラリは、このパ
ラメータに関連付けられたメモリの割り当て
および割り当て解除を行う必要があります。
INFA_AbnormalSessionTermination
void INFA_AbnormalSessionTermination(void * dllContext);
Integration Serviceは、最後のメッセージがセッションログに送られ、セッションが異常
終了した後に、この関数を呼び出します。 Integration Serviceは、
INFA_OutputSessionLogFatalMsg関数を呼び出した後に、この関数を呼び出します。
Integration Serviceは、この関数を呼び出した後、INFA_EndSessionLogを呼び出しませ
ん。
348
章 22: セッションログインタフェース
例えば、DTMが強制終了またはタイムアウトになった場合に、Integration Serviceはこの
関数を呼び出します。 UNIXでは、シグナル例外が発生した場合に、Integration Service
はこの関数を呼び出します。
この関数を実装する場合、最小限の機能のみが含められます。UNIXでは、この関数から非
同期シグナルセーフ関数のみを呼び出すようにしてください
INFA_AbnormalSessionTerminationには、以下のパラメータがあります。
パラメータ
データタイプ
説明
dllContext
未指定
共有ライブラリに固有のユーザー定義情報。
このパラメータは、ネットワーク接続に関連
する情報を格納したり、セッションログ出力
の処理中に必要となるメモリを割り当てる際
に使用できます。共有ライブラリは、このパ
ラメータに関連付けられたメモリの割り当て
および割り当て解除を行う必要があります。
セッションログインタフェースの例
Informaticaでは、セッションログインタフェースを使用するサンプルプログラムが用意さ
れています。 このサンプルプログラムでは、 sesslog.logという名前のテキストファイル
にセッションログイベントが送信されます。このサンプルプログラムを表示し、セッショ
ンログインタフェースを使用した、各自の要件に基づくセッションログイベントの処理方
法について理解を深めることができます。 また、サンプルプログラムをコンパイルして、
テキストファイルにセッションログイベントを送信する外部ライブラリを構築することも
できます。
セッションログサンプルプログラムは、Informatica Development Platformインストーラ
からPowerCenter SDKファイルをインストールすると利用できるようになります。 デフォ
ルトでは、セッションログサンプルプログラムは、以下のディレクトリにインストールさ
れます。
<SDKInstallationDir>/SessionLog_API/samples
外部セッションログライブラリの構築
外部ライブラリを構築するには、サンプルプログラムdemo_sesslog.cppに付属のmakeファ
イルを使用します。ライブラリをコンパイルするためのコマンドは、使用するプラットフ
ォームによって異なります。
セッションログインタフェースの例
349
UNIXでのライブラリの構築
以下の表に、各種プラットフォームでライブラリを構築するためのコマンドを示します。
プラットフォーム
コンパイラ
コマンド
Solaris
CC
make -f makefile_sol
HP/UX
aCC
make -f makefile_hpux
HP-UX 64ビット
aCC
make -f makefile_hpux64
AIX
xCl_r
make -f makefile_aix
AIX 64ビット
xCl_r
make -f makefile_aix64
Linux
g++
make -f makefile_linux
Windowsでのライブラリの構築
Windowsでは、Microsoft Visual C++ 6.0を使用してセッションログライブラリのサンプ
ルを構築します。Visual C++ 6.0でサンプルプログラムdemo_sesslog.dswを開き、プロジ
ェクトを構築します。
外部セッションログライブラリの使用
構築したライブラリを使用して、セッションログの出力をファイルに書き込むことができ
ます。
サンプルの外部セッションログライブラリを使用するには、以下の手順を実行します。
350
1.
Administratorツールにログインし、セッションログファイルを設定するIntegration
Serviceを選択します。
2.
Integration Serviceの[プロパティ]タブで、設定プロパティを編集します。
3.
ExportSessionLogLibNameプロパティを、セッションログサンプルプログラムから作
成したセッションログライブラリのパスおよびファイル名に設定します。
章 22: セッションログインタフェース
第 23 章
バッファメモリについて
この章では、以下の項目について説明します。
¨ バッファメモリの概要について, 351 ページ
¨ 自動バッファメモリ設定, 352 ページ
¨ バッファメモリの設定, 353 ページ
¨ セッションキャッシュメモリの設定, 353 ページ
バッファメモリの概要について
セッションを実行すると、Integration Serviceプロセスは、Data Transformation
Manager(DTM)を開始します。DTMは、セッションプロパティの[DTMバッファサイズ]設
定に基づいて、実行時にバッファメモリをセッションに割り当てます。
DTMは、セッションのプロパティの[デフォルトのバッファブロックサイズ]設定に従っ
て、メモリを複数のバッファブロックに分割します。readerスレッド、トランスフォーメ
ーションスレッド、およびwriterスレッドは、バッファブロックを使用してソースからタ
ーゲットにデータを移動します。バッファブロックサイズは、ソースまたはターゲット内
のデータの最大行の精度より大きくなっている必要があります。
Integration Serviceでは、パーティションのソースおよびターゲットごとに少なくとも2
つのバッファブロックを割り当てます。XMLのソースおよびターゲットについては、ソース
およびターゲットに含まれるグループ数の2倍以上のバッファブロックが必要です。非正規
化カラムを含むXMLリーダーや循環参照を含むXMLスキーマでは、追加のバッファブロック
が必要になる場合があります。
以下のセッションプロパティを調整して、バッファメモリ設定を行います。
DTMバッファサイズ
DTMバッファサイズには、DTMでセッションを処理するときにIntegration Serviceが
使用するバッファメモリの量を指定します。セッションのプロパティの[プロパテ
ィ]タブでDTMバッファサイズを設定します。
デフォルトのバッファブロックサイズ
バッファブロックサイズには、ソースからターゲットにデータのブロックを移動する
のに使用するバッファメモリの量を指定します。セッションのプロパティの[設定オ
ブジェクト]タブでバッファブロックサイズを設定します。
351
Integration Serviceにより、バッファメモリとバッファブロックの最小メモリ割り当てが
計算されます。デフォルトでは、ブロックあたり64,000バイトか、マッピングのソースま
たはターゲットの最大行のサイズのうち、どちらか大きい方が割り当てられます。
DTMが設定された量のバッファメモリをセッションに割り当てられなかった場合、そのセッ
ションは初期化できません。通常、バッファメモリに1 GBを超えるメモリ量は必要ありま
せん。
バッファサイズの値は手動で設定できます。また、必要なバッファメモリサイズを
Integration Serviceで特定するようにセッションを設定することもできます。
自動バッファメモリ設定
DTMの初期化時に、セッションの実行時に使用するバッファメモリが割り当てられます。バ
ッファメモリサイズをIntegration Serviceで自動的に割り当てるように設定することも、
メモリバッファとブロックのサイズを手動で設定することもできます。
デフォルトでは、PowerCenter Integration Serviceによって、トランスフォーメーショ
ンの要件とマッピングのソースおよびターゲットに基づいて、セッションに必要なバッフ
ァメモリが自動的に計算されます。この計算では、ホストマシンのメモリの量や、そのう
ちの使用可能なメモリの量は考慮されません。そのため、場合によっては、使用可能なメ
モリのごく一部しかセッションに割り当てられないこともあります。
PowerCenter Integration Serviceによって自動的に計算されたバッファメモリではセッ
ションに必要なメモリフットプリントを確保できない可能性がある場合は、PowerCenter
Integration Serviceでセッションに割り当てるバッファメモリのサイズとブロックのサイ
ズを手動で指定することができます。
関連項目:
¨ 「セッションのキャッシュの概要」
(312ページの)
セッション設定オブジェクトを使用したメモリの設定
セッション設定オブジェクトを使用して、複数のセッションのメモリ設定を設定すること
ができます。セッション設定オブジェクトごとに異なるメモリ設定を設定できます。
リポジトリ内の各フォルダには、コミット/ロード設定、ログオブション、エラー処理設定
などのセッションプロパティを含むデフォルトのセッション設定オブジェクトがありま
す。セッションを作成すると、Workflow Managerによってデフォルトの設定オブジェクト
の設定がセッションに適用されます。セッションで使用する設定オブジェクトを選択する
こともできます。
複数のセッションに異なる設定を適用する場合、複数の設定オブジェクトを作成できま
す。例えば、テスト環境からプロダクション環境に移行する場合や、異なる自動メモリ要
件を持つ複数のセッションがある場合に、セッション設定オブジェクトでメモリ設定を設
定できます。
352
章 23: バッファメモリについて
バッファメモリの設定
Integration Serviceでセッションに必要なメモリを自動的に計算することも、DTMのバッ
ファサイズとデフォルトのブロックサイズを手動で設定することもできます。
バッファメモリ設定は、セッションプロパティで設定できます。
1.
セッションを開き、[設定オブジェクト]タブをクリックします。
2.
デフォルトバッファブロックサイズに値を入力します。
自動または数値を指定できます。
デフォルトの単位はバイトです。他の単位を指定するには、値にKB、MB、またはGBを
追加します。例えば、「1048576」、「1024KB」、「1MB」のように指定します。
3.
[プロパティ]タブをクリックします。
4.
DTMバッファサイズの値を入力します。
自動または数値を指定できます。セッションでDTMバッファサイズに設定した値より多
くのメモリが必要な場合、セッションパフォーマンスが下がり、セッションが失敗す
ることがあります。
デフォルトの単位はバイトです。他の単位を指定するには、値にKB、MB、またはGBを
追加します。例えば、「1048576」、「1024KB」、「1MB」のように指定します。
セッションキャッシュメモリの設定
Integration Serviceは、次のセッションのキャッシュに必要なメモリを判定することがで
きます。
¨ ルックアップトランスフォーメーションのインデックスとデータキャッシュ
¨ アグリゲータトランスフォーメーションのインデックスとデータキャッシュ
¨ ランクトランスフォーメーションのインデックスとデータキャッシュ
¨ ジョイナトランスフォーメーションのインデックスとデータキャッシュ
¨ ソータトランスフォーメーションのキャッシュ
¨ XMLターゲットキャッシュ
トランスフォーメーションのプロパティまたはセッションプロパティの[マッピング]タ
ブでインデックスとデータのキャッシュサイズを自動に設定することができます。
セッションキャッシュの制限
Integration Serviceは、メモリキャッシュが自動モードに設定されているトランスフォー
メーションに、セッションキャッシュを使用してメモリを割り当てます。セッションキャ
ッシュのメモリの量は制限することができます。セッションキャッシュを制限する場合、
他のプロセス用に一部のメモリが残るよう、Integration Serviceがセッションに使用でき
るメモリの量を制限します。
バッファメモリの設定
353
キャッシュメモリの制限を指定するときは、数値と合計メモリに対する割合の両方を指定
する必要があります。割合は、Integration Serviceが実行されているマシンの物理メモリ
の合計に基づきます。
Integration Serviceでは、数値と割合の値を比較してどちらが少ないかを特定し、少ない
方の値をセッションキャッシュの合計メモリとして割り当てます。
セッションに割り当てられるメモリキャッシュに制限を設定するには、セッション設定オ
ブジェクトの次の属性を使用します。
自動メモリ属性で使用できる最大メモリ
セッションキャッシュに割り当てるメモリ量です。自動キャッシュメモリの合計がこ
のプロパティの値を超えないように制限されます。これは、使用されるマシンメモリ
の割合が[自動メモリ属性で使用できる合計メモリの最大割合(%)]プロパティの値
より低くなる場合でも同様です。物理メモリが多いマシンでセッションを実行する場
合に、この状況になることがあります。
自動メモリ属性で使用できる合計メモリの最大割合(%)
セッションキャッシュに割り当てるマシンのメモリの割合です。自動キャッシュメモ
リの合計は、このプロパティの値を超えないように制限されます。これは、[自動メ
モリ属性で使用できる最大メモリ]プロパティの値の方が高い場合でも同様です。物
理メモリが非常に少ないマシンでセッションを実行する場合に、この状況になること
があります。
キャッシュメモリが自動に設定されたすべてのトランスフォーメーションに、セッション
キャッシュからメモリが割り当てられます。そのメモリがすべてのトランスフォーメーシ
ョンのキャッシュで分割されます。
例えば、セッションの3つのルックアップトランスフォーメーションに自動キャッシュを設
定するとします。セッションのメモリキャッシュの制限は500MBに設定します。セッション
を実行すると、500MBの割り当てメモリが、3つすべてのルックアップトランスフォーメー
ションのインデックスキャッシュとデータキャッシュで分割されます。セッションのメモ
リキャッシュの制限は、自動キャッシュの対象として設定していないトランスフォーメー
ションには適用されません。
セッションキャッシュを自動割り当ての対象として設定している場合、自動キャッシュ割
り当ての対象に設定された各トランスフォーメーションに対して、インデックスキャッシ
ュ用に1MB以上、データキャッシュ用に2MB以上のメモリが割り当てられます。セッション
キャッシュの制限でインデックスキャッシュとデータキャッシュに割り当てるメモリを確
保できない場合、キャッシュの制限は無効になり、インデックスキャッシュとデータキャ
ッシュにそれぞれ最小メモリが割り当てられます。
例えば、セッションキャッシュのメモリを4MBに制限し、自動キャッシュ割り当ての対象と
して2つのトランスフォーメーションを設定しているとします。この場合、セッションキャ
ッシュの制限は無効になり、自動キャッシュ割り当ての対象に設定された各トランスフォ
ーメーションに対して、インデックスキャッシュ用に1MB、データキャッシュ用に2MBの最
小メモリが割り当てられます。そのため、トランスフォーメーションのキャッシュに割り
当てられるメモリは合計で6MBになります。
グリッドでセッションを実行する場合、[自動メモリ属性で使用できる最大メモリ]を設
定すると、割り当てたメモリキャッシュがグリッドのすべてのノード間で分割されます。
[自動メモリ属性で使用できる合計メモリの最大割合(%)]を設定すると、指定した割合
のメモリキャッシュがグリッドの各ノードに割り当てられます。
354
章 23: バッファメモリについて
セッションキャッシュの自動メモリ設定
セッションキャッシュの自動メモリ設定をするには:
1.
Transformation Developer、またはセッションのプロパティの[マッピング]タブで
トランスフォーメーションを開きます。
2.
トランスフォーメーションのプロパティで、以下の各キャッシュサイズ設定でAutoを
選択するか入力します
¨ インデックスおよびデータキャッシュ
¨ ソータキャッシュ
¨ XMLキャッシュ
3.
Task Developerまたは Workflow Designerでセッションを開いて、[設定オブジェク
ト]タブをクリックします。
4.
[自動メモリ属性で使用できる最大メモリ]に値を入力します。
この値は、セッションキャッシュに使用する最大メモリ量を指定します。
デフォルトの単位はバイトです。他の単位を指定するには、値にKB、MB、またはGBを
追加します。例えば、「1048576」、「1024KB」、「1MB」のように指定します。
5.
[自動メモリ属性で使用できる合計メモリの最大割合(%)]に値を入力します。
この値は、セッションキャッシュが使用できる合計メモリの最大パーセンテージを指
定します。
セッションキャッシュメモリの設定
355
第 24 章
高精度データ
この章では、以下の項目について説明します。
¨ 高精度データの概要, 356 ページ
¨ Bigint, 356 ページ
¨ Decimal, 357 ページ
高精度データの概要
高精度データは、桁数の多い数値をより正確に表す方法を決定します。数字の桁数には、
小数点桁数が含まれます。例えば、値11.47は、4桁の精度と2桁の小数点桁数を持ちます。
桁数の多い数値は、オーバーフローが発生する計算で使用される場合、丸め処理が行われ
ることにより精度が損なわれる場合があります。 高精度データを切り捨てる際にエラーが
発生すると、正しい演算結果が得られなくなる可能性があります。
高精度データの値は、より精度が高い値です。 精度の高い値が必要な場合は、高精度を有
効にします。
高精度はセッションの[プロパティ]タブで有効にします。Integration Serviceは、
Bigint値および10進値に対して別々に高精度データ処理を行います。
Bigint
結果が10進値となる計算では、Integration ServiceはBigint値をDoubleタイプまたは
Decimalタイプとして処理します。セッションに結果が10進値となる計算が含まれ、かつ実
行に高精度を必要としない場合、Integration Serviceは計算を実行する前にBigint値を
Doubleタイプに変換します。 トランスフォーメーションのDoubleデータタイプは最大15桁
の精度をサポートし、Bigintデータタイプは最大19桁の精度をサポートします。 このた
め、精度が15桁より大きいBigint値となる計算では、精度の損失が発生することがありま
す。
例えば、式トランスフォーメーションには以下の計算が含まれています。
POWER( BIGINTVAL, EXPVAL )
356
Integration Serviceでは、計算を開始する前に、POWER関数への入力をDouble値に変換し
ます。BIGINTVALポートにBigint値9223372036854775807が含まれている場合、
Integration Serviceはこの値を9.22337203685478e+18に変換し、最後4桁の精度が失われ
ます。EXPVALポートに値1.0が含まれており、結果ポートがBigintの場合、計算結果の
9223372036854780000が最大bigint値を超えているため、行エラーが作成されます。
結果が10進値となる計算でBigint値を使用し、高精度でセッションを実行する場合、
Integration ServiceはBigint値を10進値に変換します。トランスフォーメーションの
Decimalデータタイプは最大28桁までの精度をサポートします。 このため、計算結果が、
精度が28桁より大きい値にならない限り、精度の損失は発生しません。 この場合、
Integration Serviceは結果をDouble値として保存します。
Decimal
高精度を有効にせずにセッションを実行すると、Integration Serviceは10進値をDouble
値に変換します。 トランスフォーメーションのDecimalデータタイプは28桁までの精度を
サポートしますが、Doubleデータタイプは15桁までの精度をサポートします。 したがっ
て、15桁を超える精度を持つ10進値の場合、精度の損失が発生します。
例えば、Decimal(20,0)を使用して数値40012030304957666903を渡すマッピングがある
とします。高精度でセッションを実行しない場合、Integration Serviceは10進値をDouble
値に変換し、4.00120303049577 x 10 19を渡します。
最大28桁の精度を確保するためには、Decimalデータタイプを使用して、セッションプロパ
ティで高精度を有効にします。 高精度でセッションを実行すると、Integration Service
は10進値をDecimalとして処理します。 計算結果が、精度が28桁より大きい値にならない
限り、精度の損失は発生しません。 この場合、Integration Serviceは結果をDouble値と
して保存します。
Decimal
357
索引
記号
B
{Teradataでのプッシュダウンの最適化
派生テーブル 84
$$PushdownConfig
説明 87
$AppConnection
using 227
$BadFile
using 227
命名規則 227
$DynamicPartitionCount
説明 227
$InputFile
using 227
命名規則 227
$LoaderConnection
using 227
$LookupFile
using 227
命名規則 227
$OutputFile
using 227
命名規則 227
$PMSessionLogFile
using 227
$PMStorageDirPMStorageDir
ワークフローのセッションの状態 164
$PMStorageDir
ワークフローの操作の状態 163
$PMWorkflowRunId
コンカレントワークフロー 195
$PMWorkflowRunInstanceName
コンカレントワークフロー 195
$QueueConnection
using 227
bigint
高精度処理 356
数字
85以前のタイムスタンプの互換性オプション、Netezzaで
のプッシュダウンの最適化 70
A
ABORT関数
セッションの失敗 187
358
C
ConnectionParam.prmファイル
使用 252
CPUの数
動的パーティションでの設定 6
CPUの数を基準
設定 6
CUME関数
パーティション化の制限 45
D
$DBConnection
使用 227
命名規則 227
decimal
高精度処理 356
DTM(データ変換マネージャ)
バッファサイズ 353
DTMバッファサイズ要件
構成 353
F
FTP
SFTP 304
セッションの作成 307
ソースファイルのアクセス 307
ターゲットのパーティション化 310
ターゲットファイルのアクセス 307
ファイルターゲットへの接続 30
リモートディレクトリ、パラメータおよび変数のタイプ
240
リモートファイル名、パラメータおよび変数のタイプ
240
概要 304
$FTPConnection
使用 227
FTP接続
パラメータタイプ[ぱらめたたいぷ] 240
セッションパラメータ 227
パスワード、パラメータのタイプ 240
ユーザー名、パラメータのタイプ 240
M
HTTPトランスフォーメーション
スレッド 34
パイプラインのパーティション化 33
Microsoft Access
パイプラインのパーティション化 29
MOVINGAVG関数
パーティション化の制限 45
MOVINGSUM関数
パーティション化の制限 45
I
N
IBM DB2
データベースパーティション化。 51
データベースパーティション化 46, 54
IBM DB2 EE
外部データのロード 275
空白スペースのロード 279
属性 278
IBM DB2 EEE
外部データのロード 275
属性 280
INFA_AbnormalSessionTermination
セッションログインタフェース 348
INFA_EndSessionLog
セッションログインタフェース 348
INFA_InitSessionLog
セッションログインタフェース 345
INFA_OutputSessionLogFatalMsg
セッションログインタフェース 347
INFA_OutputSessionLogMsg
セッションログインタフェース 346
Informix
行レベルのロック 29
Integration Service
外部ローダーのサポート 272
グリッド上でのセッションの実行 203
グリッド上での動作 205
グリッドの概要 202
グリッドへの割り当て 206
コミット間隔の概要 132
セッションログインタフェースでの関数の呼び出し 344
Integration Serviceコードページ
差分集計への影響 339
Netezza接続
プッシュダウンの最適化、ルールおよびガイドライン
70
H
J
Javaトランスフォーメーション
スレッド 34
パイプラインのパーティション化 33
JMS接続先
パラメータおよび変数のタイプ 240
L
Logtable名
FastExport属性 266
O
Oracle
データベースパーティション化。 51
データベースパーティション化 46
Oracle外部ローダー
外部ローダーのサポート 272, 282
拒否ファイル 282
区切りフラットファイルターゲット 283
固定幅フラットファイルターゲット 283
属性 284
データ精度 283
パーティション化されたターゲットファイル 284
マルチバイトデータ 283
P
PM_TGT_RUN_ID
形式 164
手動での作成 166
説明 164
PMError_MSGテーブル
スキーマ 153
PMError_ROWDATAテーブル
スキーマ 151
PMError_Sessionテーブル
スキーマ 155
PM_RECOVERYテーブル
形式 164
手動での作成 166
説明 164
デッドロックリトライ 164
PM_REC_STATEテーブル
手動での作成 166
説明 164
リアルタイムセッション 122
PowerExchange Client for PowerCenter
リアルタイムデータ 113
R
reader
Teradata FastExportに対しての選択 269
索引
359
Reader時間制限
構成 116
S
SDKソース
リカバリ 177
SetID
PeopleSoft、パラメータおよび変数のタイプ 240
SFTP
キーファイルの場所 307
グリッド上でのセッションの実行 307
セッションの作成 307
説明 304
$Source接続値
パラメータおよび変数のタイプ 240
SQL
パーティション化されたパイプラインでのクエリ 20
プッシュダウンの最適化に対する生成 64, 65
SQLオーバーライド
プッシュダウンの最適化 84
SQLクエリ
パラメータおよび変数のタイプ 240
Sybase IQ
パーティション化の制限 29
Sybase IQ外部ローダー
概要 285
区切りフラットファイルターゲット 286
固定幅フラットファイルターゲット 286
サポート 272
属性 286
データ精度 286
マルチバイトデータ 285
サポート 272
制御ファイルコンテンツのオーバーライド、パラメータ
および変数のタイプ 240
制御ファイルのオーバーライド 289
日付形式 288
TIB/リポジトリ
TIB/Adapter SDKリポジトリURL、変数のタイプ 240
U
UNIXシステム
外部ローダーの動作 274
W
Web Services Hub
コンカレントワークフローの実行 193
Webサービスメッセージ
リアルタイムデータ 113
Windowsシステム
外部ローダーの動作 274
Workflow Advancedの開始
コンカレントワークフローの開始 196
Workflow Manager
グリッド上でのセッションの実行 202
グリッド上でのワークフローの実行 202
Workflow Monitor
コンカレントワークフローの表示 198
WriterWaitTimeOut
ターゲットベースのコミット 133
X
T
$Target接続値
パラメータおよび変数のタイプ 240
TDPID
説明 266
Tenacity
FastExport属性 266
Teradata FastExport
fexpコマンド 266
readerの選択 269
TDPID属性 266
一時ファイル、変数のタイプ 240
使用するための手順 265
ステージングデータ 269
制御ファイルのオーバーライド 269
セッション属性の説明 269
接続属性 266
接続の作成 266
説明 265
ソース接続の変更 269
マルチバイト文字の読み取り 266
ルールおよびガイドライン 271
Teradata外部ローダー
FastLoadの属性 297
MultiLoadの属性 291
TPumpの属性 294
コードページ 288
360
索引
XMLジェネレータトランスフォーメーション
パーティション化の制限 44
XMLターゲット
キャッシュ 334
キャッシュの設定 334
ターゲットベースのコミット 133
パーティション化の制限 45
XMLターゲットキャッシュ
説明 334
変数のタイプ 240
あ
アイドル時間
構成 116
アイドル状態のデータベース
説明 66
アクティブソース
コミットの生成 134
ソースベースのコミット 133, 134
アグリゲータトランスフォーメーション
キャッシュ 323
キャッシュの計算の入力 324
キャッシュの設定 324
キャッシュのパーティション化 322, 323
コンカレントワークフローへの追加 200
ソート済みポート 324
パーティションポイントの使用 17
プッシュダウンの最適化 98
アグリゲータキャッシュ
概要 323
説明 323
アップデートストラテジトランスフォーメーション
プッシュダウンの最適化 110
アプリケーション接続
パラメータタイプ[ぱらめたたいぷ] 240
セッションパラメータ 227
パスワード、パラメータのタイプ 240
ユーザー名、パラメータのタイプ 240
い
一時ファイル
Teradata FastExport属性 269
イベント待ちタスク
トリガファイル名、変数のタイプ 240
インスタンス
ワークフローインスタンスの説明 191
インデックス
検索 340
ディレクトリの作成 342
インデックスキャッシュ
差分集計 340
インデックスキャッシュ。
命名規則 315
え
永続変数
定義 220
ワークレット 223
エクスターナルプロシージャトランスフォーメーション
初期化プロパティ、変数のタイプ 240
パーティション化のガイドライン 45
エラー
しきい値 186
重大 187
エラーしきい値
エラー時の停止 186
パイプラインのパーティション化 186
変数のタイプ 240
エラー処理
PMError_MSGテーブルスキーマ 153
PMError_ROWDATAテーブルスキーマ 151
PMError_Sessionテーブルスキーマ 155
エラーログファイル 157
オプション 160
概要 187
トランザクション制御 139
プッシュダウンの最適化 81
エラーメッセージ
外部ローダー 273
エラーログ
オプション 160
概要 149
セッションエラー 187
エラーログテーブル
概要 150
作成 150
エラーログファイル
概要 157
ディレクトリ、パラメータおよび変数のタイプ 240
テーブル名プレフィックス長の制限 261
名前、パラメータおよび変数のタイプ 240
演算子
データベース内で使用可能 74
プッシュダウンの最適化 74
エンドポイントURL
Webサービス、パラメータおよび変数のタイプ 240
パラメータおよび変数のタイプ 240
お
オーバーライド
Teradataローダー制御ファイル 289
オープントランザクション
定義 142
か
外部ローダー
DB2 275
Integration Serviceのサポート 272
Oracle 282
Sybase IQ 285
Teradata 288
Windowsシステム上 274
Workflow Managerの設定 299
エラーメッセージ 273
概要 272
コードページ 272
サブ秒の処理 273
動作 273
パーティション化されたパイプラインでの使用 30
マルチバイトデータのロード 283, 285, 286
リソースとしての設定 272
外部ローダー接続
パラメータタイプ[ぱらめたたいぷ] 240
セッションパラメータ 227
パスワード、パラメータのタイプ 240
ユーザー名、パラメータのタイプ 240
カスタムトランスフォーメーション
スレッド 34
パイプラインのパーティション化 33
パーティション化のガイドライン 45
環境SQL
パラメータおよび変数のタイプ 240
関数
セッションログインタフェース 345
データベース内で使用可能 75
プッシュダウンの最適化 75
完全なプッシュダウンの最適化
説明 65
き
キー範囲パーティション化
キー範囲の追加 58
説明 4, 46
追加 57
索引
361
パーティションキーの追加 58
パーティションビュー 11
パフォーマンス 58
プッシュダウンの最適化 92
キャッシュ
XMLターゲット 334
XMLターゲットの設定 334
アグリゲータトランスフォーメーション 323
アグリゲータトランスフォーメーションの設定 324
アグリゲータトランスフォーメーションのソート済み入
力用 324
永続ルックアップ 329
オーバーライド 318
概要 312
キャッシュの計算 319, 321
グリッド上のインデックスキャッシュ 205
グリッド上のデータキャッシュ 205
構成 321
最大メモリ量の設定 354
最適化 335
再利用可能なセッション 318
再利用不可能なセッション 318
自動メモリ 319
ジョイナトランスフォーメーション 325
ジョイナトランスフォーメーションの設定 327, 334
数値 320
セッションキャッシュファイル 312
設定方法 318
ソータトランスフォーメーション 333
トランスフォーメーション 312
パーティション化 8
メモリ 313
ランクトランスフォーメーション 331
ランクトランスフォーメーションの設定 332
リアルタイムセッションによるリセット 143
ルックアップトランスフォーメーション 329
ルックアップトランスフォーメーションの設定 331
キャッシュサイズ
構成 318
最適化 335
セッションメモリ要件、設定 353
キャッシュディレクトリ
共有 317
最適、選択 317
変数のタイプ 240
キャッシュの計算
アグリゲータトランスフォーメーションの入力 324
ジョイナトランスフォーメーションの入力 327
使用 321
説明 319
ソータトランスフォーメーションの入力 334
ランクトランスフォーメーションの入力 332
ルックアップトランスフォーメーションの入力 331
キャッシュのパーティション化
アグリゲータトランスフォーメーション 322, 323
キャッシュサイズの設定 322
差分集計 323
ジョイナトランスフォーメーション 322, 327
説明 8
ソータトランスフォーメーション 322, 333
トランスフォーメーション 322
パフォーマンス 8
ランクトランスフォーメーション 322, 331
ルックアップトランスフォーメーション 41, 322, 329
362
索引
キャッシュファイル
場所 340
命名規則 315
キュー接続
パラメータタイプ[ぱらめたたいぷ] 240
セッションパラメータ 227
強制終了
Integration Serviceの処理 185
セッション 189
タスク 189
ワークフロー 188
共有体トランスフォーメーション
プッシュダウンの最適化 110
共有ライブラリ
セッションログインタフェースの実装 344
拒否ファイル
Oracle外部ローダー 282
セッションパラメータ 227
トランザクション制御 139
パラメータおよび変数のタイプ 240
拒否ファイルディレクトリ
ターゲットファイルプロパティ 31
パラメータおよび変数のタイプ 240
拒否ファイル名
説明 31
く
グリッド
Integration Serviceの動作 205
Integration Serviceのプロパティ設定 206
概要 202
キャッシュ要件 205
最大メモリ量の指定 354
セッションの実行 203
セッションの分散 203, 205
セッションのリカバリ 205
セッションプロパティの設定 206
パイプラインのパーティション化 204
要件 207
リソースの設定 206
ワークフローの分散 203, 205
ワークフローのリカバリ 205
ワークフロープロパティの設定 206
グリッド上のセッション
シーケンスジェネレータトランスフォーメーションのパ
ーティション化 43
説明 203
グリッドのノード数
動的パーティション化での設定 6
け
継続サブスクリプション名
JMS用の変数のタイプ 240
検証
セッションリカバリ 176
更新
差分 341
高精度
Bigintデータタイプ 356
Decimalデータタイプ 356
処理 356
コードページ
外部ローダーファイル 272
コマンド
パーティション化されたソース 22
パーティション化されたターゲット 32
コマンドタスク
変数のタイプ 240
リソースの割り当て 210
コマンドのタイプ
ファイルソースのパーティション化 24
コマンドプロパティ
パーティション化されたターゲットの設定 31
ファイルソースのパーティション化 24
コミット間隔
構成 147
説明 132
ソースベースおよびターゲットベース 132
コミットソース
ソースベースのコミット 134
コミットタイプ
構成 118
リアルタイムセッション 118
コールドスタート
リアルタイムセッション 125
コンカレントワークフロー
pmcmdを使用したワークフローインスタンスの作成 197
Webサービスワークフローの実行 193
[Workflow Advancedの開始]オプション 196
Workflow Monitorでの表示 198
一意のインスタンスの設定 192
インスタンス名の追加 195
開始および停止 196
異なるセッションパラメータファイルの使用 258
コマンドラインからの開始 197
コマンドラインからの停止 198
スケジューリング 200
設定手順 195
説明 191
同一名による実行の設定 193
トランスフォーメーション制限 200
パラメータの使用 194
ルールおよびガイドライン 200
ログの表示 199
[ワークフローの開始]オプション 197
コンカレントワークレット
説明 200
ワークフローのリカバリ 176
最後のチェックポイントから再開
リカバリ戦略 172, 174
再初期化
集計キャッシュ 339
最大セッション数
FastExport属性 266
最大メモリ量
キャッシュでの設定 354
グリッド上のセッション 354
再利用可能なセッション
キャッシュ 318
再利用不可能なセッション
キャッシュ 318
作成
FTPセッション 307
インデックスディレクトリ 342
エラーログテーブル 150
データファイルディレクトリ 342
パーティション化されたソースのファイルリスト 23
ワークフロー変数 221
サスペンド時のメール
変数のタイプ 240
サスペンド状態
ステータス 168
サスペンド中
ステータス 168
電子メール 169
動作 168
ワークフロー 168
サービスプロセス変数
パラメータファイル 239
サービス変数
パラメータファイル 239
サービスレベル
タスクへの割り当て 210
サブ秒
外部データのロード 273
差分集計
Integration Serviceのデータ移動モード 339
概要 337
キャッシュの再初期化 339
キャッシュのパーティション化 323
処理 338
セッションの設定 342
セッションのソート順の変更 339
データのパーティション化 340
ファイルの移動 339
ファイルの削除 339
有効化の準備 341
差分変更
キャプチャ 341
差分リカバリ
説明 174
さ
し
再開リカバリ戦略
再現可能なデータの使用 176
リカバリターゲットテーブルの使用 164
再現可能なデータ
ソース 176
トランスフォーメーション 177
シェルコマンド
パラメータおよび変数のタイプ 240
式
パラメータおよび変数のタイプ 240
プッシュダウンの最適化 74
こ
索引
363
式トランスフォーメーション
プッシュダウンの最適化 99
シーケンシャル統合
ファイルターゲット 32
シーケンスジェネレータトランスフォーメーション
コンカレントワークフローへの追加 200
パーティション化 43
パーティション化のガイドライン 18, 45
プッシュダウンの最適化 104
実行可能名
FastExport属性 266
実行後のシェルコマンド
パラメータおよび変数のタイプ 240
実行時位置
変数のタイプ 240
実行時のパーティション化
セッションプロパティでの設定 6
自動タスクリカバリ
構成 174
自動メモリ設定
構成 352
集計キャッシュ
再初期化 339
集計ファイル
移動 339
再初期化 339
削除 339
終了条件
構成 116
出力が確定的(プロパティ)
概要 177
出力が再現可能(プロパティ)
概要 177
出力タイププロパティ
ファイルターゲットのパーティション化 31
出力ファイルディレクトリプロパティ
FTPターゲット 309
ターゲットファイルのパーティション化 31
パラメータおよび変数のタイプ 240
出力ファイル名プロパティ
FTPターゲット 309
ターゲットファイルのパーティション化 31
パラメータおよび変数のタイプ 240
ジョイナキャッシュ
説明 325
ジョイナトランスフォーメーション
キャッシュ 325
キャッシュの計算の入力 327
キャッシュの設定 327, 334
キャッシュのパーティション化 322, 327
ソート済みフラットファイルの結合 37
ソート済みリレーショナルデータの結合 39
パーティション化 325
パーティション化のガイドライン 45
プッシュダウンの最適化 100
小数秒の精度
Teradata FastExport属性 269
す
スクリプトファイル
パラメータおよび変数のタイプ 240
364
索引
ステージング済み
FastExportセッション属性 269
ステージングファイル
SAPファイル名およびディレクトリ、変数のタイプ 240
ステータス
サスペンド状態 168
サスペンド中 168
ストアドプロシージャトランスフォーメーション
接続情報、パラメータおよび変数のタイプ 240
呼び出しテキスト、パラメータおよび変数のタイプ 240
スリープ
FastExport属性 266
スループットの最適化
セッションのプロパティ 27
スレッド
HTTPトランスフォーメーション 34
Javaトランスフォーメーション 34
カスタムトランスフォーメーション 34
パーティション 3
せ
制御タスク
ワークフローの停止または強制終了 188
制御値設定
PeopleSoft、パラメータおよび変数のタイプ 240
制御ファイルのオーバーライド
Teradata FastExport文の設定 269
Teradata FastExportをオーバーライドするための手順
269
Teradataのロード 289
説明 269
生成
ソースベースのコミットによるコミット 134
セッション
FTPの使用 307
SFTPの使用 307
外部データのロード 272, 299
完全なプッシュダウンの最適化 65
強制終了 185, 189
グリッド上での実行 203
グリッド上での分散 203, 205
グリッド上でのリカバリ 205
結合処理のパフォーマンスを最適化するための設定 36
失敗 11, 186
情報の受け渡し 235
情報の受け渡し、例 236
セッション実行前および実行後の変数の割り当て 235
操作の状態 164
ソース側でのプッシュダウンの最適化 64
ターゲット側でのプッシュダウンの最適化 65
停止 185, 189
パラメータ 227
プッシュダウンの最適化 64
プッシュダウンの最適化のための設定 89
リソースの割り当て 210
セッションエラー
処理 187
セッション実行後の電子メール
パラメータおよび変数のタイプ 240
セッション実行後の変数割り当て
失敗時に実行 235
成功時に実行 235
セッション実行前および実行後のSQL
コマンド、パラメータおよび変数のタイプ 240
セッション実行前の変数割り当て
実行 235
セッションのプロパティ
FastExportソース 269
ソート順 339
ターゲットベースのコミット 147
セッションパラメータ
FTP接続パラメータ 227
アプリケーション接続パラメータ 227
外部ローダー接続パラメータ 227
概要 227
キュー接続パラメータ 227
拒否ファイルパラメータ 227
組み込み 227
セッション間での値の受け渡し 235
セッションログパラメータ 227
ソースファイルパラメータ 227
ターゲットファイルパラメータ 227
データベース接続パラメータ 227
パーティションの数 227
パラメータファイル 239
ファイル名、変数のタイプ 240, 258
命名規則 227
ユーザー定義 227
リソースとしての設定 234
セッションパラメータファイル名
変数のタイプ 240, 258
セッションリカバリデータのフラッシュ
メッセージリカバリ 121
セッションリカバリデータのフラッシュ(プロパティ)
Integration Service 121
セッションログ
外部ライブラリへの受け渡し 343
外部ローダーのエラーメッセージ 273
セッションパラメータ 227
ディレクトリ、変数のタイプ 240
ファイル名、パラメータのタイプ 240
ワークフローリカバリ 183
セッションログインタフェース
INFA_AbnormalSessionTermination 348
INFA_EndSessionLog 348
INFA_InitSessionLog 345
INFA_OutputSessionLogFatalMsg 347
INFA_OutputSessionLogMsg 346
Integration Serviceの呼び出し 344
ガイドライン 344
関数 345
実装 343
説明 343
セッションログカウント数
変数のタイプ 240
接続
Teradata FastExport接続の変更 269
Teradata FastExport文の作成 266
パラメータファイルのテンプレート 252
接続環境SQL
パラメータおよび変数のタイプ 240
接続されていないトランスフォーメーション
パーティション化の制限 18
絶対入力行の順序の維持
セッションのプロパティ 27
そ
操作の状態
セッションリカバリ 164
チェックポイント 164, 174
ワークフローリカバリ 163
相対入力行の順序の維持
セッションのプロパティ 27
ソース修飾子トランスフォーメーション
パーティションポイントの使用 17
プッシュダウンの最適化 107
プッシュダウンの最適化、SQLオーバーライド 84
ソータキャッシュ
説明 333
命名規則 315
属性
パーティションレベル 8
ソース
コマンド 22
セッションのプロパティ 24
同時読み込み 24
入力行のソート順の維持 27
パーティション化 22
ソース側でのプッシュダウンの最適化
説明 64
ソースデータ
集計のための変更のキャプチャ 337
ソースデータベース
データベース接続セッションパラメータ 227
ソーステーブル
パラメータおよび変数のタイプ 240
ソースの場所
セッションのプロパティ 24
ソースパイプライン
説明 1, 16, 46
ソースファイル
FTP経由でのアクセス 304, 307
セッションのプロパティ 24
セッションパラメータ 227
パラメータの使用 227
ソースファイルタイプ
説明 24, 309
ソースファイルのディレクトリ
説明 309
ソースファイル名
説明 24, 309
ソースベースのコミット
アクティブソース 134
構成 118
説明 133
リアルタイムセッション 118
ソータトランスフォーメーション
キャッシュ 333
キャッシュの計算の入力 334
キャッシュのパーティション化 322, 333
最適化された結合処理のパフォーマンスのパーティショ
ン化 39
作業用ディレクトリ、変数のタイプ 240
パーティション化 43
プッシュダウンの最適化 106
ソート順
差分集計への影響 339
入力行について維持 27
索引
365
ソート済みフラットファイル
最適化された結合処理のパフォーマンスのパーティショ
ン化 37
ソート済みポート
キャッシュ要件 324
ソート済みリレーショナルデータ
最適化された結合処理のパフォーマンスのパーティショ
ン化 39
存在する場合追加
フラットファイルターゲットのプロパティ 31
停止 189
リカバリ戦略 172
リソースの割り当て 210
ロードバランサの設定 209
タスクリカバリ戦略の失敗
説明 172, 174
タスクリカバリ戦略のリスタート
説明 172, 174
ち
た
ターゲット
FTP経由でのアクセス 304, 307
出力ファイルの統合 30, 31
パーティションポイントの削除 17
パーティション化 28, 29
プッシュダウンの最適化 109
プッシュダウンの最適化の使用 92
タイマタスク
変数 240
タイマータスク
変数 213
ターゲット側でのプッシュダウンの最適化
説明 65
ターゲットコマンド
ターゲット 32
パーティションでの使用 32
ターゲット接続グループ
データのコミット 133
トランザクションコントロールトランスフォーメーショ
ン 146
ターゲットデータベース
データベース接続セッションパラメータ 227
ターゲットテーブル
パラメータおよび変数のタイプ 240
ターゲットの更新
パラメータおよび変数のタイプ 240
ターゲットファイル
追加[ついか] 31
セッションパラメータ 227
ターゲットファイルの統合
FTP 30
FTPファイルターゲット 310
コマンド 32
シーケンシャル統合 32
セッションのプロパティ 31
同時統合 32
ファイルリスト 32
ローカル接続 30, 31
ターゲットベースのコミット
WriterWaitTimeOut 133
構成 118
リアルタイムセッション 118
ターゲットベースのコミット間隔
説明 133
ターゲットリカバリテーブル
手動による作成 166
説明 164
タスク
強制終了 189
自動リカバリ 174
366
索引
チェックポイント
セッションリカバリ 174
操作のセッション状態 164, 174
致命的なエラー
セッションの失敗 187
抽出日
PeopleSoft、パラメータおよび変数のタイプ 240
つ
ツリー
PeopleSoft、パラメータおよび変数のタイプ 240
て
停止
Integration Serviceの処理 185
エラーしきい値 186
セッション 189
タスク 189
ワークフロー 188
ディシジョンタスク
変数 213
変数のタイプ 240
ディレクトリ
共有キャッシュ 317
履歴集計データ用 342
データベースパーティション化。
パフォーマンス 51
データベースビュー
孤立したビューの削除 85
トラブルシューティング 85
プッシュダウンの最適化 85
プッシュダウンの最適化による作成 84
リカバリ中の削除 85
データ
ソースの差分変更のキャプチャ 337, 341
データ暗号化
FastExport属性 266
データ移動モード
差分集計への影響 339
データキャッシュ
差分集計 340
命名規則 315
データのコミット
ターゲット接続グループ 133
トランザクション制御 138
データのロールバック
トランザクション制御 138
データファイル
検索 340
ディレクトリの作成 342
データプロファイリングドメイン
ドメイン値、変数のタイプ 240
データベースシーケンス
孤立シーケンスの削除 85
トラブルシューティング 85
プッシュダウンの最適化 85
リカバリ中の削除 85
データベース接続
パラメータタイプ[ぱらめたたいぷ] 240
セッションパラメータ 227
パスワード、パラメータのタイプ 240
パラメータ 232
プッシュダウン互換性 70
ユーザー名、パラメータのタイプ 240
データベースパーティション化
1つのソース 52
Integration Serviceに関するルールおよびガイドライ
ン 53
Integration Serviceの処理 53
説明 4, 46
ソースに関するルールおよびガイドライン 54
ターゲット 54
ターゲットに関するルールおよびガイドライン 55
パフォーマンス 54
複数のソース 52
テーブルオーナー名
パラメータおよび変数のタイプ 240
テーブル名
アイドル状態のデータベースの構文 72
プッシュダウン互換性の修飾 72
テーブル名のプレフィックス
ターゲット、パラメータおよび変数のタイプ 240
リレーショナルエラーログ、長さ制限 261
リレーショナルエラーログ、パラメータおよび変数のタ
イプ 240
電子メール
サスペンド時、変数のタイプ 240
セッション実行後、パラメータおよび変数のタイプ 240
電子メールタスク
サスペンド時のメール 169
変数のタイプ 240
と
統合コマンド
説明 31
パラメータおよび変数のタイプ 240
統合タイプ
説明 31
統合ファイルディレクトリ
説明 31
パラメータおよび変数のタイプ 240
統合ファイル名
説明 31
パラメータおよび変数のタイプ 240
動作可能なデータベース
説明 66
同時接続
パーティション化されたパイプライン 29
同時統合
ファイルターゲット 32
同時読み込みのパーティション化
セッションのプロパティ 24
動的パーティション
CPUの数を基準 6
グリッドのノード数を基準 6
説明 5
ソースパーティションの使用 6
パーティションタイプでの使用 8
パーティションの数、パラメータのタイプ 240
パーティションの数を基準 6
パフォーマンス 5
無効 6
ルールおよびガイドライン 7
トランザクション
定義 142
トランザクション環境SQL
パラメータおよび変数のタイプ 240
トランザクション境界
削除 142
トランザクション制御 142
トランザクションコントロールトランスフォーメーショ
ン
ターゲット接続グループ 146
パーティション化のガイドライン 48
トランザクションジェネレータ
トランザクション制御ポイント 142
トランザクション制御
Integration Serviceの処理 138
オープントランザクション 142
概要 142
拒否ファイル 139
トランスフォーメーションエラー 139
トランスフォーメーション範囲 143
バルクロード 138
ファイルの末尾 139
ポイント 142
ユーザー定義コミット 138
リアルタイムセッション 142
ルールおよびガイドライン 146
トランザクション制御単位
説明 146
トランスフォーメーション
キャッシュ 312
再現可能なデータの生成 177
差分アグリゲータによるセッションのリカバリ 164
パーティション化の制限 45
プッシュダウンの最適化の設定 96
リアルタイムセッション 127
トランスフォーメーションの式
パラメータおよび変数のタイプ 240
トランスフォーメーション範囲
説明 143
トランスフォーメーション 143
リアルタイム処理 143
に
入力タイプ
ファイルソースのパーティション化のプロパティ 24
索引
367
の
ノーマライザトランスフォーメーション
パーティションポイントの使用 17
は
パイプライン
説明 1, 16, 46
パイプラインステージ
説明 1
パイプラインのパーティション化
FTPファイルターゲット 310
HTTPトランスフォーメーション 33
Informixへのロード 29
Javaトランスフォーメーション 33
SQLクエリ 20
エラーしきい値 186
オブジェクトの検証 11
ガイドライン 22
外部ローダー 30, 274
カスタムトランスフォーメーション 33
間接ファイルのパーティション化 23
キー範囲 57
キー範囲の追加 58
キャッシュ 8
グリッド上 204
結合処理のパフォーマンスを最適化するための設定 36
シーケンスジェネレータトランスフォーメーション 43
ジョイナトランスフォーメーション 36
使用例 47
数値関数の制限 45
スレッドとパーティション 3
セッションの設定 11
説明 1, 16, 46
ソータトランスフォーメーション 39, 43
ソート済みデータの設定 36
ソート済みフラットファイル 37
ソート済みリレーショナルデータ 39
ターゲットファイルの統合 30, 31
データベースの互換性 29
同時接続 29
動的パーティション 5
トランザクションコントロールトランスフォーメーショ
ン 48
パイプラインステージ 1
パススルーパーティションタイプタイプ 60
ハッシュキーの追加 56
ハッシュ自動キーのパーティション化 55
ハッシュユーザーキーのパーティション化 56
パーティションキー 56, 58
パーティションポイントの編集 11
パフォーマンス 56, 61
パフォーマンス 58
ファイルソース 22
ファイルターゲット 29
ファイルリスト 23
フィルタ条件 21
複数グループトランスフォーメーション 4
プッシュダウンの最適化の設定 90
マッピング変数 9
メッセージキュー 30
368
索引
有効なパーティションタイプ 48
ラウンドロビンパーティション化 61
リカバリ 186
リレーショナルターゲット 28
ルール 10
パイプラインルックアップ
ソーステーブルのパーティション化 42
パススルーパーティションタイプ
概要 46
処理 60
説明 4
パフォーマンス 60
プッシュダウンの最適化 92
ハッシュ自動キーのパーティション化
概要 55
説明 4
ハッシュパーティション化
説明 46
ハッシュキーの追加 56
ハッシュユーザーキー
説明 4
ハッシュユーザーキーのパーティション化
概要 56
パフォーマンス 56
バッファブロックサイズ
構成 351
バッファメモリ
構成 351
バッファブロック 351
割り当て 351
パーティション
XMLジェネレータ 44
計算 5
削除 13
セッションのプロパティ 31
説明 3
説明の入力 13
ターゲットデータの統合 32
追加 13
プッシュダウンの最適化のための統合 92
パーティション化
差分集計 340
ジョイナトランスフォーメーション 325
パイプラインルックアップソーステーブル 42
パフォーマンス 61
複数のターゲットでのFTPの使用 306
パーティションカウント
セッションパラメータ 227
パーティション化の制限
Informix 29
Sybase IQ 29
XMLジェネレータ 44
XMLターゲット 45
数値関数 45
接続されていないトランスフォーメーション 18
トランスフォーメーション 45
パーティションの数 10
リレーショナルターゲット 29
パーティションキー
NULL値を含む行 58
キー範囲の追加 58
追加 56, 58
ルールおよびガイドライン 59
パーティショングループ
ステージ 204
説明 204
パーティションタイプ
概要 4
キー範囲 57
設定 48
説明 46
デフォルト 48
パススルー 60
パーティションポイントでの使用 48
パフォーマンス 47
変更 13
ラウンドロビン 61
パーティションの数
概要 3
セッションパラメータ 227
動的パーティションでの設定 6
パフォーマンス 3
パーティションの数を基準
設定 6
パーティションポイント
HTTPトランスフォーメーション 33, 34
Javaトランスフォーメーション 33, 34
概要 2
カスタムトランスフォーメーション 33, 34
ジョイナトランスフォーメーション 36
追加および削除 16
追加、手順 12
編集 11
ルックアップトランスフォーメーション 41
パーティション名
設定 13
パーティションレベルの属性
説明 8
パフォーマンス
キャッシュ設定 318
コミット間隔 133
パラメータ
セッション 227
タイプの概要 239
データベース接続 232
パラメータファイルでの定義 240
パラメータを受け入れる入力フィールド 240
パラメータファイル
NULL値、入力 256
pmcmdでの使用 259
概要 238
構造体 253
コメント、追加 255
コンカレントワークフローインスタンスの設定 194
作成ガイドライン 253, 261
作成のヒント 263
サンプルのパラメータファイル 256
使用するファイルを指定 238
使用例 260
セクション 254
セッションでの使用 257
セッションパラメータファイル名、変数のタイプ 240,
258
接続属性のオーバーライド 252
説明 238
テンプレートファイル 252
トラブルシューティング 262
名前、設定 257
日時形式 261
場所、設定 257
パラメータおよび変数のタイプ 239
パラメータおよび変数の範囲 253
パラメータおよび変数を受け入れる入力フィールド 240
プロパティの定義 240
変数を使用した指定 258
見出し 254
優先 259
ワークフローでの使用 257
バルクロード
ユーザー定義コミットの使用 138
ひ
非永続変数
定義 220
ふ
ファイルソース
コードページ、パラメータおよび変数のタイプ 240
ディレクトリ、パラメータおよび変数のタイプ 240
名前、パラメータおよび変数のタイプ 240
入力ファイルコマンド、パラメータおよび変数のタイプ
240
パーティション化 22
ファイルターゲット
コードページ、パラメータおよび変数のタイプ 240
パーティション化 29
ファイルの末尾
トランザクション制御 139
ファイルリスト
ターゲットファイルの統合 32
パーティション化されたソースの作成 23
フィルタ条件
WebSphere MQ、パラメータおよび変数のタイプ 240
追加 59
パーティション化されたパイプライン 21
パラメータおよび変数のタイプ 240
フィルタトランスフォーメーション
プッシュダウンの最適化 99
複数グループトランスフォーメーション
パーティション化 4
プッシュダウングループ
説明 93
表示 93
プッシュダウンの最適化ビューア、使用 93
プッシュダウン互換性
互換性がないデータベースユーザー 71
説明 70
要件 70
プッシュダウンの最適化
$$PushdownConfigパラメータ[ぷっしゅだうんのさ
いてきか
pushdown config] 87
ODBCドライバ 67
パラメータタイプ[ぱらめたたいぷ] 240
SQLとANSI SQL 67
アグリゲータトランスフォーメーション 98
アップデートストラテジトランスフォーメーション 110
索引
369
一時シーケンス 83
エラー処理 81
演算子 74
概要 63
関数 75
完全なプッシュダウンの最適化 65
キー範囲パーティション化、使用 92
共有体トランスフォーメーション 110
式 74
式トランスフォーメーション 99
シーケンスジェネレータトランスフォーメーション 104
ジョイナトランスフォーメーション 100
生成されるSQL 64, 65
セッション 64
セッションの設定 89
ソース修飾子トランスフォーメーション 107
ソース側での最適化 64
ソースデータベースのパーティション化 54
ソータトランスフォーメーション 106
ターゲット 109
ターゲット側での最適化 65
ターゲットにロード 92
データベースビューの作成 84
データベースシーケンス 85
データベースビュー 85
トランスフォーメーション 96
ネイティブデータベースドライバ 67
パススルーパーティションタイプ 92
パーティション化の設定 90
パーティションの統合 92
パフォーマンスの問題 65
フィルタトランスフォーメーション 99
マッピングへのトランスフォーメーションの追加 93
マッピング変数 75
リカバリ 81
ルータートランスフォーメーション 104
ルールおよびガイドライン 93
ロギング 81
一時ビュー 84
プッシュダウンの最適化ビューア
プッシュダウングループの表示 93
フッタ
パラメータおよび変数のタイプ 240
ファイルターゲットでの作成 31
フッタのコマンド
フラットファイルターゲット 31
フラッシュ待ち時間
構成 117
説明 117
フラットファイル
出力ファイルセッションパラメータ 227
ソースファイルセッションパラメータ 227
入力行の順序の維持 27
フッタのコマンドプロパティ 31
ヘッダのオプションプロパティ 31
ヘッダのコマンドプロパティ 31
フラットファイル
リカバリの設定 177
フラットファイルのロギンク
エラーログタイプ、設定 160
エラーログファイルディレクトリ、設定 160
エラーログファイル名、設定 160
フルリカバリ
説明 174
370
索引
ブロックサイズ
FastExport属性 266
へ
並列実行の設定
ワークフローインスタンスの設定 195
ベースURL
パラメータおよび変数のタイプ 240
ヘッダ
パラメータおよび変数のタイプ 240
ファイルターゲットでの作成 31
ヘッダのオプション
フラットファイルターゲット 31
ヘッダのコマンド
フラットファイルターゲット 31
変更されたソースデータ
リアルタイムデータ 113
変数
$PMWorkflowRunId 195
$PMWorkflowRunInstanceName 195
タイプの概要 239
パラメータファイルでの定義 240
変数を受け入れる入力フィールド 240
ワークフロー 213
変数値
パーティション全体での計算 9
ま
待ち時間
説明 112
マッピング
パーティションからのセッションの失敗 11
マッピングパラメータ
$$PushdownConfig
pushdown config] 87
オーバーライド 234
セッション間での値の受け渡し 235
セッションプロパティ内 234
パラメータファイル 239
マッピング変数
セッション間での値の受け渡し 235
データベース内で使用可能 75
パーティション化されたパイプライン 9
パラメータファイル 239
プッシュダウンの最適化 75
マルチバイトデータ
Oracle外部ローダー 283
Sybase IQ外部ローダー 285
Teradata FastExport 266
め
命名規則
セッションパラメータ 227
メッセージ
リアルタイムデータの処理 113
メッセージカウント
構成 116
メッセージキュー
パーティション化されたパイプラインでの使用 30
リアルタイムデータの処理 113
メッセージとメッセージキュー
リアルタイムデータ 113
メッセージの処理
リアルタイムセッション 120, 122, 123
リカバリキュー 123
リカバリテーブル 122
リカバリトピック 123
リカバリファイル 120
ルールおよびガイドライン 127
メッセージリカバリ
セッションリカバリデータのフラッシュ 121
説明 118
前提条件 119
有効化 120
リアルタイムセッション 118, 121–123
リカバリキュー 118, 123
リカバリテーブル 118, 122
リカバリトピック 118, 123
リカバリファイル 118, 121
ルールおよびガイドライン 127
メモリ
キャッシュ 313
自動設定の設定 352
複数のセッションに対する設定 352
メモリ設定
複数のセッションでの設定 352
メモリ要件
DTMバッファサイズ 353
セッションキャッシュサイズ 353
ゆ
有効日
PeopleSoft、パラメータおよび変数のタイプ 240
優先度
タスクへの割り当て 210
ユーザー定義結合
パラメータおよび変数のタイプ 240
ユーザー定義コミット
バルクロード 138
ら
ラウンドロビンパーティション化
説明 4, 46, 61
ランクキャッシュ
説明 331
ランクトランスフォーメーション
キャッシュ 331
キャッシュの計算の入力 332
キャッシュの設定 332
キャッシュのパーティション化 322, 331
パーティションポイントの使用 17
り
リアルタイム処理
サンプルマッピング 128
説明 112
リアルタイム製品
概要 130
リアルタイムセッション
PM_REC_STATEテーブル 122
Reader時間制限、設定 116
アイドル時間、設定 116
概要 112
強制終了 124
構成 115
コミットタイプ、設定 118
コールドスタート 125
再開 125
再起動 125
サポートされる製品 130
サンプルマッピング 128
終了条件、設定 116
説明 112
停止 124
トランスフォーメーション 127
トランスフォーメーション範囲 143
フラッシュ待ち時間、設定 117
メッセージカウント、設定 116
メッセージの処理 120, 122, 123
メッセージリカバリ 121–123
リカバリ 126
ルールおよびガイドライン 127
レジリエンス 127
リアルタイムデータ
Webサービスメッセージ 113
概要 113
サポートされる製品 130
変更されたソースデータ 113
メッセージとメッセージキュー 113
リアルタイムフラッシュ待ち時間
構成 117
リカバリ
PM_RECOVERYテーブル形式 164
PM_TGT_RUN_IDテーブル形式 164
SDKソース 177
インスタンス名によるリカバリ 192
概要 162
グリッド上のセッション 205
グリッド上のワークフロー 205
最後のチェックポイントから再開 172, 174
差分 174
差分アグリゲータを含むセッション 164
実行IDによるワークフローのリカバリ 194
セッション内の再現可能なデータ 176
セッションの検証 176
戦略 172
操作のセッション状態 164
ターゲットリカバリテーブル 164
タスクからのワークフローのリカバリ 182
タスクのリカバリ 181
チェックポイントからのセッション 174
データベースシーケンスの削除 85
データベースビューの削除 85
パイプラインのパーティション化 186
プッシュダウンの最適化 81
フラットファイル 177
フルリカバリ 174
リアルタイムセッション 118
リカバリ不可能なセッションの完了 184
索引
371
ルールおよびガイドライン 183
ワークフローの操作の状態 163
リカバリ可能なタスク
説明 171
リカバリキャッシュフォルダ
JMS用の変数のタイプ 240
TIBCO用の変数のタイプ 240
webMethods用の変数のタイプ 240
WebSphere MQ用の変数のタイプ 240
リカバリキュー
メッセージの処理 123
メッセージリカバリ 118, 123
リカバリ戦略
最後のチェックポイントから再開 172, 174
タスクのリスタート 172, 174
タスクを失敗してワークフローを続行 172, 174
リカバリテーブル
スクリプトからの手動での作成 166
説明 164
メッセージの処理 122
メッセージリカバリ 118, 122
リカバリトピック
メッセージの処理 123
メッセージリカバリ 118, 123
リカバリファイル
メッセージの処理 120
メッセージリカバリ 118, 121
リソース
外部ローダーの割り当て 272
タスクへの割り当て 210
リレーショナルターゲット
パーティション化 28
パーティション化の制限 29
リレーショナルデータベースのロギング
エラーログタイプ、設定 160
リンク
変数 213
変数のタイプ 240
る
ルータートランスフォーメーション
プッシュダウンの最適化 104
ルックアップ
永続キャッシュ 329
ルックアップSQLオーバーライドオプション
パラメータおよび変数のタイプ 240
ルックアップキャッシュ
説明 329
ファイル名のプレフィックス、パラメータおよび変数の
タイプ 240
ルックアップソースファイル
パラメータの使用 227
ルックアップデータベース
データベース接続セッションパラメータ 227
ルックアップトランスフォーメーション
キャッシュ 329
キャッシュの計算の入力 331
キャッシュの設定 331
キャッシュのパーティション化 41, 322, 329
コンカレントワークフローへの追加 200
接続情報、パラメータおよび変数のタイプ 240
ソースファイル、パラメータおよび変数のタイプ 240
372
索引
プッシュダウンの最適化 101
ルックアップファイル
ルックアップファイルセッションパラメータ 227
れ
レジリエンス
リアルタイムセッション 127
ろ
ロギング
プッシュダウンの最適化 81
ロードバランサ
タスクへの優先度の割り当て 210
タスクへのリソースの割り当て 210
ワークフローの設定 209
わ
ワークフロー
pmcmdを使用したコンカレントワークフローの開始 197
一意のインスタンスの設定 192
インスタンス名の設定 195
強制終了 188
グリッド上での実行 203
グリッド上での分散 203, 205
グリッド上でのリカバリ 205
コンカレントインスタンス 191
コンカレントワークフローのスケジューリング 200
サスペンド中 168
サービスレベル 210
ステータス 168
操作の状態 163
タスクのディスパッチ 209
停止 188
同一名のコンカレントの設定 193
パラメータファイル 220
変数 213
ワークフローインスタンス
$PMWorkflowRunInstanceName変数の使用 195
Workflow Monitorでの表示 198
開始および停止 196
コマンドラインからの開始 197
説明 191
動的に作成 197
ワークフローインスタンスの追加 195
ワークフローの実行ID
説明 193
ワークフローログに表示 200
ワークフローのスケジューリング
コンカレントワークフロー 200
ワークフローのリカバリ
インスタンス名によるワークフローのリカバリ 192
実行IDによるインスタンスのリカバリ 194
ワークフロープロパティ
サービスレベル 210
ワークフロー変数
永続変数 220
キーワード 213
組み込み変数 214
作成 221
式での使用 217
使用 213
初期値とカレント値 220
セッション間での値の受け渡し 235
定義済み 214
データー型 214, 221
デフォルト値 214, 220, 221
日時形式 221
パラメータファイル 239
非永続変数 220
命名規則 221
ユーザー定義 219
ワークレット間での値の受け渡し 224
ワークフローログ
ファイル名およびディレクトリ、変数のタイプ 240
ワークフローログカウント数、変数のタイプ 240
ワークフローログファイル
コンカレントワークフローの表示 199
ワークレット
永続変数 223
永続変数の例 223
コンカレントワークフローへの追加 200
情報の受け渡し 224
情報の受け渡し、例 224
[パラメータ]タブ 223
変数 223
変数値のオーバーライド 223
ワークレット実行前および実行後の変数の割り当て、手
順 225, 237
ワークレット実行前および実行後の変数割り当て 224
ワークレット実行後の変数割り当て
実行 224
ワークレット実行前の変数割り当て
実行 224
ワークレット変数
セッション間での値の受け渡し 235
パラメータファイル 239
ワークレット間での値の受け渡し 224
割り当てタスク
変数 213, 240
索引
373