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
© Copyright 2024 Paperzz