Transformation GuideInformatica PowerCenter®(Version 8.1.1)
Informatica PowerCenter Transformation GuideVersion 8.1.1April 2007Copyright (c) 1998–2007 Informatica Corporation.All rig...
Table of Contents     List of Figures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ...
Entering and Validating Default Values . . . . . . . . . . . . . . . . . . . . . . . . . 28             Configuring Tracin...
Creating Custom Transformations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57     Rules and Guidelines ...
Deinitialization Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102             API Functions...
Chapter 6: External Procedure Transformation . . . . . . . . . . . . . . . . 145Overview . . . . . . . . . . . . . . . . ....
External Procedure Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181                    Property ...
Configuring Ports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219     Creating Gro...
Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243            isNull ...
Step 2. Create and Validate the Expression . . . . . . . . . . . . . . . . . . . . . 267     Step 3. Generate Java Code fo...
Configuring the Sort Order . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292                   Adding Tr...
Lookup Condition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328     Uncached or Sta...
Sharing an Unnamed Lookup Cache . . . . . . . . . . . . . . . . . . . . . . . . . . 363                   Sharing a Named ...
Working with Groups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412     Input Group . . ...
Creating a Sorter Transformation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443              Chapter 21...
Script Mode Rules and Guidelines . . . . . . . . . . . . . . . . . . . . . . . . . . . 482Query Mode . . . . . . . . . . ....
Defining the SQL Transformation . . . . . . . . . . . . . . . . . . . . . . . . . . . 522                     Configuring ...
Tips . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 553Troublesho...
XML Generator Transformation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 588             Index . . . ....
List of Figures    Figure   1-1. Sample Ports Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ...
Figure   11-2. Java Transformation Example - Ports Tab . . . . . . . . . . . . . . . . . . . . . . . .                .   ...
Figure   18-2.   Sample Router Transformation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .           ...
xxiv   List of Figures
List of Tables    Table 1-1. Transformation Descriptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .    ...
Table 9-2. Java Transformation Properties . . . . . . . . . . . . . . . . . . . . . . .           ...   .   .   ..   .   ....
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Pc 811 transformation_guide
Upcoming SlideShare
Loading in …5
×

Pc 811 transformation_guide

347 views

Published on

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
347
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
10
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Pc 811 transformation_guide

  1. 1. Transformation GuideInformatica PowerCenter®(Version 8.1.1)
  2. 2. Informatica PowerCenter Transformation GuideVersion 8.1.1April 2007Copyright (c) 1998–2007 Informatica Corporation.All rights reserved. Printed in the USA.This software and documentation contain proprietary information of Informatica Corporation and are provided under a license agreement containingrestrictions on use and disclosure and are also protected by copyright law. Reverse engineering of the software is prohibited. No part of this document may bereproduced or transmitted in any form, by any means (electronic, photocopying, recording or otherwise) without prior consent of Informatica Corporation.Use, duplication, or disclosure of the Software by the U.S. Government is subject to the restrictions set forth in the applicable software license agreement and asprovided in DFARS 227.7202-1(a) and 227.7702-3(a) (1995), DFARS 252.227-7013(c)(1)(ii) (OCT 1988), FAR 12.212(a) (1995), FAR 52.227-19, or FAR52.227-14 (ALT III), as applicable.The information in this document is subject to change without notice. If you find any problems in the documentation, please report them to us in writing.Informatica Corporation does not warrant that this documentation is error free.Informatica, PowerCenter, PowerCenterRT, PowerCenter Connect, PowerCenter Data Analyzer, PowerExchange, PowerMart, SuperGlue, Metadata Manager,Informatica Data Quality and Informatica Data Explorer are trademarks or registered trademarks of Informatica Corporation in the United States and injurisdictions throughout the world. All other company and product names may be trade names or trademarks of their respective owners.Portions of this software and/or documentation are subject to copyright held by third parties, including without limitation: Copyright DataDirect Technologies,1999-2002. All rights reserved. Copyright © Sun Microsystems. All Rights Reserved. Copyright © RSA Security Inc. All Rights Reserved. Copyright © OrdinalTechnology Corp. All Rights Reserved.Informatica PowerCenter products contain ACE (TM) software copyrighted by Douglas C. Schmidt and his research group at Washington University andUniversity of California, Irvine, Copyright (c) 1993-2002, all rights reserved.Portions of this software contain copyrighted material from The JBoss Group, LLC. Your right to use such materials is set forth in the GNU Lesser GeneralPublic License Agreement, which may be found at http://www.opensource.org/licenses/lgpl-license.php. The JBoss materials are provided free of charge byInformatica, “as-is”, without warranty of any kind, either express or implied, including but not limited to the implied warranties of merchantability and fitnessfor a particular purpose.Portions of this software contain copyrighted material from Meta Integration Technology, Inc. Meta Integration® is a registered trademark of Meta IntegrationTechnology, Inc.This product includes software developed by the Apache Software Foundation (http://www.apache.org/). The Apache Software is Copyright (c) 1999-2005 TheApache Software Foundation. All rights reserved.This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit and redistribution of this software is subject to terms availableat http://www.openssl.org. Copyright 1998-2003 The OpenSSL Project. All Rights Reserved.The zlib library included with this software is Copyright (c) 1995-2003 Jean-loup Gailly and Mark Adler.The Curl license provided with this Software is Copyright 1996-2004, Daniel Stenberg, <Daniel@haxx.se>. All Rights Reserved.The PCRE library included with this software is Copyright (c) 1997-2001 University of Cambridge Regular expression support is provided by the PCRE librarypackage, which is open source software, written by Philip Hazel. The source for this library may be found at ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre.InstallAnywhere is Copyright 2005 Zero G Software, Inc. All Rights Reserved.Portions of the Software are Copyright (c) 1998-2005 The OpenLDAP Foundation. All rights reserved. Redistribution and use in source and binary forms, withor without modification, are permitted only as authorized by the OpenLDAP Public License, available at http://www.openldap.org/software/release/license.html.This Software is protected by U.S. Patent Numbers 6,208,990; 6,044,374; 6,014,670; 6,032,158; 5,794,246; 6,339,775 and other U.S. Patents Pending.DISCLAIMER: Informatica Corporation provides this documentation “as is” without warranty of any kind, either express or implied,including, but not limited to, the implied warranties of non-infringement, merchantability, or use for a particular purpose. The information provided in thisdocumentation may include technical inaccuracies or typographical errors. Informatica could make improvements and/or changes in the products described inthis documentation at any time without notice.
  3. 3. Table of Contents List of Figures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxi List of Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxv Preface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxix About This Book . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxx Document Conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxx Other Informatica Resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxxi Visiting Informatica Customer Portal . . . . . . . . . . . . . . . . . . . . . . . . . xxxi Visiting the Informatica Web Site . . . . . . . . . . . . . . . . . . . . . . . . . . . xxxi Visiting the Informatica Knowledge Base . . . . . . . . . . . . . . . . . . . . . . xxxi Obtaining Technical Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxxi Chapter 1: Working with Transformations . . . . . . . . . . . . . . . . . . . . . . 1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 Creating a Transformation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 Configuring Transformations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 Working with Ports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 Creating Ports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 Configuring Ports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 Linking Ports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 Multi-Group Transformations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 Working with Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 Using the Expression Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 Using Local Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 Temporarily Store Data and Simplify Complex Expressions . . . . . . . . . . 14 Store Values Across Rows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 Capture Values from Stored Procedures . . . . . . . . . . . . . . . . . . . . . . . . 15 Guidelines for Configuring Variable Ports . . . . . . . . . . . . . . . . . . . . . . 16 Using Default Values for Ports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 Entering User-Defined Default Values . . . . . . . . . . . . . . . . . . . . . . . . . 20 Entering User-Defined Default Input Values . . . . . . . . . . . . . . . . . . . . . 22 Entering User-Defined Default Output Values . . . . . . . . . . . . . . . . . . . 25 General Rules for Default Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 iii
  4. 4. Entering and Validating Default Values . . . . . . . . . . . . . . . . . . . . . . . . . 28 Configuring Tracing Level in Transformations . . . . . . . . . . . . . . . . . . . . . . . 30 Reusable Transformations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 Instances and Inherited Changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 Mapping Variables in Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 Creating Reusable Transformations . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 Promoting Non-Reusable Transformations . . . . . . . . . . . . . . . . . . . . . . 32 Creating Non-Reusable Instances of Reusable Transformations . . . . . . . . 33 Adding Reusable Transformations to Mappings . . . . . . . . . . . . . . . . . . . 33 Modifying a Reusable Transformation . . . . . . . . . . . . . . . . . . . . . . . . . . 34 Chapter 2: Aggregator Transformation . . . . . . . . . . . . . . . . . . . . . . . 37 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 Ports in the Aggregator Transformation . . . . . . . . . . . . . . . . . . . . . . . . . 38 Components of the Aggregator Transformation . . . . . . . . . . . . . . . . . . . 38 Aggregate Caches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 Aggregate Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 Aggregate Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 Nested Aggregate Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 Conditional Clauses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 Non-Aggregate Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 Null Values in Aggregate Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 Group By Ports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 Non-Aggregate Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 Default Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 Using Sorted Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 Sorted Input Conditions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 Pre-Sorting Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 Creating an Aggregator Transformation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 Tips . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 Troubleshooting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 Chapter 3: Custom Transformation . . . . . . . . . . . . . . . . . . . . . . . . . . 53 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 Working with Transformations Built On the Custom Transformation . . . 54 Code Page Compatibility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 Distributing Custom Transformation Procedures . . . . . . . . . . . . . . . . . . 56iv Table of Contents
  5. 5. Creating Custom Transformations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 Rules and Guidelines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 Custom Transformation Components . . . . . . . . . . . . . . . . . . . . . . . . . . 58Working with Groups and Ports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 Creating Groups and Ports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 Editing Groups and Ports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 Defining Port Relationships . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60Working with Port Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62Custom Transformation Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 Setting the Update Strategy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 Working with Thread-Specific Procedure Code . . . . . . . . . . . . . . . . . . . 66Working with Transaction Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 Transformation Scope . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 Generate Transaction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 Working with Transaction Boundaries . . . . . . . . . . . . . . . . . . . . . . . . . 69Blocking Input Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 Writing the Procedure Code to Block Data . . . . . . . . . . . . . . . . . . . . . . 70 Configuring Custom Transformations as Blocking Transformations . . . . 70 Validating Mappings with Custom Transformations . . . . . . . . . . . . . . . 71Working with Procedure Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72Creating Custom Transformation Procedures . . . . . . . . . . . . . . . . . . . . . . . 73 Step 1. Create the Custom Transformation . . . . . . . . . . . . . . . . . . . . . . 73 Step 2. Generate the C Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 Step 3. Fill Out the Code with the Transformation Logic . . . . . . . . . . . 76 Step 4. Build the Module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 Step 5. Create a Mapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 Step 6. Run the Session in a Workflow . . . . . . . . . . . . . . . . . . . . . . . . . 87Chapter 4: Custom Transformation Functions . . . . . . . . . . . . . . . . . 89Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 Working with Handles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90Function Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92Working with Rows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 Rules and Guidelines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97Generated Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 Initialization Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 Notification Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 Table of Contents v
  6. 6. Deinitialization Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 API Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 Set Data Access Mode Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 Navigation Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 Property Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 Rebind Datatype Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 Data Handling Functions (Row-Based Mode) . . . . . . . . . . . . . . . . . . . 117 Set Pass-Through Port Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 Output Notification Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 Data Boundary Output Notification Function . . . . . . . . . . . . . . . . . . . 121 Error Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 Session Log Message Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 Increment Error Count Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 Is Terminated Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 Blocking Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 Pointer Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 Change String Mode Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 Set Data Code Page Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 Row Strategy Functions (Row-Based Mode) . . . . . . . . . . . . . . . . . . . . 128 Change Default Row Strategy Function . . . . . . . . . . . . . . . . . . . . . . . 129 Array-Based API Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 Maximum Number of Rows Functions . . . . . . . . . . . . . . . . . . . . . . . . 130 Number of Rows Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 Is Row Valid Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 Data Handling Functions (Array-Based Mode) . . . . . . . . . . . . . . . . . . 132 Row Strategy Functions (Array-Based Mode) . . . . . . . . . . . . . . . . . . . . 135 Set Input Error Row Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 Java API Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 C++ API Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 Chapter 5: Expression Transformation . . . . . . . . . . . . . . . . . . . . . . 141 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 Calculating Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 Adding Multiple Calculations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 Creating an Expression Transformation . . . . . . . . . . . . . . . . . . . . . . . . . . . 143vi Table of Contents
  7. 7. Chapter 6: External Procedure Transformation . . . . . . . . . . . . . . . . 145Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146 Code Page Compatibility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146 External Procedures and External Procedure Transformations . . . . . . . . 147 External Procedure Transformation Properties . . . . . . . . . . . . . . . . . . . 147 Pipeline Partitioning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147 COM Versus Informatica External Procedures . . . . . . . . . . . . . . . . . . . 148 The BankSoft Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148Developing COM Procedures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 Steps for Creating a COM Procedure . . . . . . . . . . . . . . . . . . . . . . . . . 149 COM External Procedure Server Type . . . . . . . . . . . . . . . . . . . . . . . . 149 Using Visual C++ to Develop COM Procedures . . . . . . . . . . . . . . . . . 149 Developing COM Procedures with Visual Basic . . . . . . . . . . . . . . . . . 156Developing Informatica External Procedures . . . . . . . . . . . . . . . . . . . . . . . 159 Step 1. Create the External Procedure Transformation . . . . . . . . . . . . . 159 Step 2. Generate the C++ Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162 Step 3. Fill Out the Method Stub with Implementation . . . . . . . . . . . . 164 Step 4. Building the Module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 Step 5. Create a Mapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 Step 6. Run the Session in a Workflow . . . . . . . . . . . . . . . . . . . . . . . . 167Distributing External Procedures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169 Distributing COM Procedures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169 Distributing Informatica Modules . . . . . . . . . . . . . . . . . . . . . . . . . . . 170Development Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 COM Datatypes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 Row-Level Procedures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172 Return Values from Procedures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172 Exceptions in Procedure Calls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172 Memory Management for Procedures . . . . . . . . . . . . . . . . . . . . . . . . . 173 Wrapper Classes for Pre-Existing C/C++ Libraries or VB Functions . . . 173 Generating Error and Tracing Messages . . . . . . . . . . . . . . . . . . . . . . . 173 Unconnected External Procedure Transformations . . . . . . . . . . . . . . . . 175 Initializing COM and Informatica Modules . . . . . . . . . . . . . . . . . . . . 175 Other Files Distributed and Used in TX . . . . . . . . . . . . . . . . . . . . . . . 179Service Process Variables in Initialization Properties . . . . . . . . . . . . . . . . . 180External Procedure Interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181 Dispatch Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181 Table of Contents vii
  8. 8. External Procedure Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181 Property Access Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182 Parameter Access Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183 Code Page Access Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185 Transformation Name Access Functions . . . . . . . . . . . . . . . . . . . . . . . 185 Procedure Access Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186 Partition Related Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186 Tracing Level Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187 Chapter 7: Filter Transformation . . . . . . . . . . . . . . . . . . . . . . . . . . . 189 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190 Filter Condition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192 Creating a Filter Transformation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193 Tips . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195 Troubleshooting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196 Chapter 8: HTTP Transformation . . . . . . . . . . . . . . . . . . . . . . . . . . . 197 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198 Authentication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199 Connecting to the HTTP Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199 Creating an HTTP Transformation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200 Configuring the Properties Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202 Configuring the HTTP Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204 Selecting a Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204 Configuring Groups and Ports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205 Configuring a URL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209 GET Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209 POST Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210 SIMPLE POST Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211 Chapter 9: Java Transformation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214 Steps to Define a Java Transformation . . . . . . . . . . . . . . . . . . . . . . . . . 214 Active and Passive Java Transformations . . . . . . . . . . . . . . . . . . . . . . . 215 Datatype Mapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215 Using the Java Code Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217viii Table of Contents
  9. 9. Configuring Ports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219 Creating Groups and Ports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219 Setting Default Port Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220Configuring Java Transformation Properties . . . . . . . . . . . . . . . . . . . . . . . 221 Working with Transaction Control . . . . . . . . . . . . . . . . . . . . . . . . . . . 223 Setting the Update Strategy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224Developing Java Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225 Creating Java Code Snippets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225 Importing Java Packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226 Defining Helper Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226 On Input Row Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227 On End of Data Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228 On Receiving Transaction Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228Configuring Java Transformation Settings . . . . . . . . . . . . . . . . . . . . . . . . . 229 Configuring the Classpath . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229 Enabling High Precision . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230Compiling a Java Transformation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231Fixing Compilation Errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232 Locating the Source of Compilation Errors . . . . . . . . . . . . . . . . . . . . . 232 Identifying Compilation Errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234Chapter 10: Java Transformation API Reference . . . . . . . . . . . . . . . 237Java Transformation API Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238commit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239failSession . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240generateRow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241getInRowType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242incrementErrorCount . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243 Table of Contents ix
  10. 10. Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243 isNull . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244 logInfo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245 logError . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246 rollBack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247 setNull . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248 setOutRowType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249 Chapter 11: Java Transformation Example . . . . . . . . . . . . . . . . . . . 251 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252 Step 1. Import the Mapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253 Step 2. Create Transformation and Configure Ports . . . . . . . . . . . . . . . . . . 254 Step 3. Enter Java Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256 Import Packages Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256 Helper Code Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257 On Input Row Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258 Step 4. Compile the Java Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261 Step 5. Create a Session and Workflow . . . . . . . . . . . . . . . . . . . . . . . . . . . 262 Sample Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262 Chapter 12: Java Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264 Expression Function Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264 Using the Define Expression Dialog Box . . . . . . . . . . . . . . . . . . . . . . . . . . 266 Step 1. Configure the Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266x Table of Contents
  11. 11. Step 2. Create and Validate the Expression . . . . . . . . . . . . . . . . . . . . . 267 Step 3. Generate Java Code for the Expression . . . . . . . . . . . . . . . . . . 267 Steps to Create an Expression and Generate Java Code . . . . . . . . . . . . 268 Java Expression Templates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269Working with the Simple Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271 invokeJExpression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271 Simple Interface Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272Working with the Advanced Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273 Steps to Invoke an Expression with the Advanced Interface . . . . . . . . . 273 Rules and Guidelines for Working with the Advanced Interface . . . . . . 273 EDataType Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274 JExprParamMetadata Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274 defineJExpression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275 JExpression Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276 Advanced Interface Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277JExpression API Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279 invoke . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279 getResultDataType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280 getResultMetadata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280 isResultNull . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280 getInt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281 getDouble . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281 getLong . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281 getStringBuffer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282 getBytes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282Chapter 13: Joiner Transformation . . . . . . . . . . . . . . . . . . . . . . . . . 283Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284 Working with the Joiner Transformation . . . . . . . . . . . . . . . . . . . . . . 284Joiner Transformation Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286Defining a Join Condition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288Defining the Join Type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289 Normal Join . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289 Master Outer Join . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290 Detail Outer Join . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290 Full Outer Join . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291Using Sorted Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292 Table of Contents xi
  12. 12. Configuring the Sort Order . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292 Adding Transformations to the Mapping . . . . . . . . . . . . . . . . . . . . . . . 293 Configuring the Joiner Transformation . . . . . . . . . . . . . . . . . . . . . . . . 293 Defining the Join Condition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294 Joining Data from a Single Source . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296 Joining Two Branches of the Same Pipeline . . . . . . . . . . . . . . . . . . . . . 296 Joining Two Instances of the Same Source . . . . . . . . . . . . . . . . . . . . . . 297 Guidelines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298 Blocking the Source Pipelines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299 Unsorted Joiner Transformation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299 Sorted Joiner Transformation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299 Working with Transactions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300 Preserving Transaction Boundaries for a Single Pipeline . . . . . . . . . . . . 301 Preserving Transaction Boundaries in the Detail Pipeline . . . . . . . . . . . 301 Dropping Transaction Boundaries for Two Pipelines . . . . . . . . . . . . . . 302 Creating a Joiner Transformation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303 Tips . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306 Chapter 14: Lookup Transformation . . . . . . . . . . . . . . . . . . . . . . . . 307 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308 Connected and Unconnected Lookups . . . . . . . . . . . . . . . . . . . . . . . . . . . 309 Connected Lookup Transformation . . . . . . . . . . . . . . . . . . . . . . . . . . 309 Unconnected Lookup Transformation . . . . . . . . . . . . . . . . . . . . . . . . . 310 Relational and Flat File Lookups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311 Relational Lookups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311 Flat File Lookups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311 Lookup Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313 Lookup Source . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313 Lookup Ports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313 Lookup Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314 Lookup Condition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315 Metadata Extensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315 Lookup Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316 Configuring Lookup Properties in a Session . . . . . . . . . . . . . . . . . . . . 320 Lookup Query . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324 Default Lookup Query . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324 Overriding the Lookup Query . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324xii Table of Contents
  13. 13. Lookup Condition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328 Uncached or Static Cache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328 Dynamic Cache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329 Handling Multiple Matches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329Lookup Caches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330Configuring Unconnected Lookup Transformations . . . . . . . . . . . . . . . . . 331 Step 1. Add Input Ports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331 Step 2. Add the Lookup Condition . . . . . . . . . . . . . . . . . . . . . . . . . . 332 Step 3. Designate a Return Value . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332 Step 4. Call the Lookup Through an Expression . . . . . . . . . . . . . . . . . 333Creating a Lookup Transformation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335Tips . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336Chapter 15: Lookup Caches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338 Cache Comparison . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339Building Connected Lookup Caches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340 Sequential Caches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340 Concurrent Caches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341Using a Persistent Lookup Cache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342 Using a Non-Persistent Cache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342 Using a Persistent Cache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342 Rebuilding the Lookup Cache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342Working with an Uncached Lookup or Static Cache . . . . . . . . . . . . . . . . . 344Working with a Dynamic Lookup Cache . . . . . . . . . . . . . . . . . . . . . . . . . 345 Using the NewLookupRow Port . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347 Using the Associated Input Port . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348 Working with Lookup Transformation Values . . . . . . . . . . . . . . . . . . . 349 Using the Ignore Null Property . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353 Using the Ignore in Comparison Property . . . . . . . . . . . . . . . . . . . . . . 354 Using Update Strategy Transformations with a Dynamic Cache . . . . . . 354 Updating the Dynamic Lookup Cache . . . . . . . . . . . . . . . . . . . . . . . . 356 Using the WHERE Clause with a Dynamic Cache . . . . . . . . . . . . . . . 358 Synchronizing the Dynamic Lookup Cache . . . . . . . . . . . . . . . . . . . . . 359 Example Using a Dynamic Lookup Cache . . . . . . . . . . . . . . . . . . . . . . 360 Rules and Guidelines for Dynamic Caches . . . . . . . . . . . . . . . . . . . . . 361Sharing the Lookup Cache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363 Table of Contents xiii
  14. 14. Sharing an Unnamed Lookup Cache . . . . . . . . . . . . . . . . . . . . . . . . . . 363 Sharing a Named Lookup Cache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365 Lookup Cache Tips . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369 Chapter 16: Normalizer Transformation . . . . . . . . . . . . . . . . . . . . . . 371 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372 Normalizer Transformation Components . . . . . . . . . . . . . . . . . . . . . . . . . . 374 Ports Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374 Properties Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376 Normalizer Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377 Normalizer Transformation Generated Keys . . . . . . . . . . . . . . . . . . . . . . . 379 Storing Generated Key Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379 Changing the Generated Key Values . . . . . . . . . . . . . . . . . . . . . . . . . . 379 VSAM Normalizer Transformation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380 VSAM Normalizer Ports Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382 VSAM Normalizer Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383 Steps to Create a VSAM Normalizer Transformation . . . . . . . . . . . . . . 385 Pipeline Normalizer Transformation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 387 Pipeline Normalizer Ports Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388 Pipeline Normalizer Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390 Steps to Create a Pipeline Normalizer Transformation . . . . . . . . . . . . . 391 Using a Normalizer Transformation in a Mapping . . . . . . . . . . . . . . . . . . . 394 Generating Key Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396 Troubleshooting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399 Chapter 17: Rank Transformation . . . . . . . . . . . . . . . . . . . . . . . . . . 401 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402 Ranking String Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403 Rank Caches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403 Rank Transformation Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403 Ports in a Rank Transformation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404 Rank Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404 Defining Groups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405 Creating a Rank Transformation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406 Chapter 18: Router Transformation . . . . . . . . . . . . . . . . . . . . . . . . . 409 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410xiv Table of Contents
  15. 15. Working with Groups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412 Input Group . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412 Output Groups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412 Using Group Filter Conditions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413 Adding Groups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414Working with Ports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 416Connecting Router Transformations in a Mapping . . . . . . . . . . . . . . . . . . 418Creating a Router Transformation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 420Chapter 19: Sequence Generator Transformation . . . . . . . . . . . . . . 421Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 422Common Uses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423 Creating Keys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423 Replacing Missing Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423Sequence Generator Ports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424 NEXTVAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424 CURRVAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426Transformation Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427 Start Value and Cycle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 428 Increment By . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 428 End Value . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429 Current Value . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429 Number of Cached Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 430 Reset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431Creating a Sequence Generator Transformation . . . . . . . . . . . . . . . . . . . . . 432Chapter 20: Sorter Transformation . . . . . . . . . . . . . . . . . . . . . . . . . . 435Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 436Sorting Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437Sorter Transformation Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439 Sorter Cache Size . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439 Case Sensitive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 441 Work Directory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 441 Distinct Output Rows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 441 Tracing Level . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 441 Null Treated Low . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442 Transformation Scope . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442 Table of Contents xv
  16. 16. Creating a Sorter Transformation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443 Chapter 21: Source Qualifier Transformation . . . . . . . . . . . . . . . . . 445 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446 Transformation Datatypes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446 Target Load Order . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446 Parameters and Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447 Source Qualifier Transformation Properties . . . . . . . . . . . . . . . . . . . . . . . . 449 Default Query . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451 Viewing the Default Query . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 452 Overriding the Default Query . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 452 Joining Source Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 454 Default Join . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 454 Custom Joins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 455 Heterogeneous Joins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456 Creating Key Relationships . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456 Adding an SQL Query . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 458 Entering a User-Defined Join . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 460 Outer Join Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 462 Informatica Join Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 462 Creating an Outer Join . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 467 Common Database Syntax Restrictions . . . . . . . . . . . . . . . . . . . . . . . . 469 Entering a Source Filter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 470 Using Sorted Ports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 472 Select Distinct . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 474 Overriding Select Distinct in the Session . . . . . . . . . . . . . . . . . . . . . . 474 Adding Pre- and Post-Session SQL Commands . . . . . . . . . . . . . . . . . . . . . 475 Creating a Source Qualifier Transformation . . . . . . . . . . . . . . . . . . . . . . . . 476 Creating a Source Qualifier Transformation By Default . . . . . . . . . . . . 476 Creating a Source Qualifier Transformation Manually . . . . . . . . . . . . . 476 Configuring Source Qualifier Transformation Options . . . . . . . . . . . . . 476 Troubleshooting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 478 Chapter 22: SQL Transformation . . . . . . . . . . . . . . . . . . . . . . . . . . . 479 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 480 Script Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 481 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 482xvi Table of Contents
  17. 17. Script Mode Rules and Guidelines . . . . . . . . . . . . . . . . . . . . . . . . . . . 482Query Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 484 Using Static SQL Queries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 485 Using Dynamic SQL Queries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 486 Query Mode Rules and Guidelines . . . . . . . . . . . . . . . . . . . . . . . . . . . 489Connecting to Databases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 490 Using a Static Database Connection . . . . . . . . . . . . . . . . . . . . . . . . . . 490 Passing a Logical Database Connection . . . . . . . . . . . . . . . . . . . . . . . . 490 Passing Full Connection Information . . . . . . . . . . . . . . . . . . . . . . . . . 490 Database Connections Rules and Guidelines . . . . . . . . . . . . . . . . . . . . 493Session Processing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 494 Input Row to Output Row Cardinality . . . . . . . . . . . . . . . . . . . . . . . . 494 Transaction Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 498 High Availability . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 498Creating an SQL Transformation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 500SQL Transformation Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 502 Properties Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 502 SQL Settings Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 505 SQL Ports Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 506SQL Statements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 509Chapter 23: Using the SQL Transformation in a Mapping . . . . . . . . 511Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 512Dynamic Update Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 513 Defining the Source File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 514 Creating a Target Definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 515 Creating the Database Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 515 Configuring the Expression Transformation . . . . . . . . . . . . . . . . . . . . 516 Defining the SQL Transformation . . . . . . . . . . . . . . . . . . . . . . . . . . . 516 Configuring Session Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 518 Target Data Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 518Dynamic Connection Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519 Defining the Source File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 520 Creating a Target Definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 520 Creating the Database Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 520 Creating the Database Connections . . . . . . . . . . . . . . . . . . . . . . . . . . 521 Configuring the Expression Transformation . . . . . . . . . . . . . . . . . . . . 521 Table of Contents xvii
  18. 18. Defining the SQL Transformation . . . . . . . . . . . . . . . . . . . . . . . . . . . 522 Configuring Session Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 524 Target Data Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 524 Chapter 24: Stored Procedure Transformation . . . . . . . . . . . . . . . . 525 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 526 Connected and Unconnected Transformations . . . . . . . . . . . . . . . . . . . . . . 527 Input and Output Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 528 Input/Output Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 528 Return Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 528 Status Codes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 528 Running a Stored Procedure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 529 Stored Procedure Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 529 Executing Stored Procedures with a Database Connection . . . . . . . . . . 529 Using a Stored Procedure in a Mapping . . . . . . . . . . . . . . . . . . . . . . . . . . . 531 Writing a Stored Procedure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 532 Sample Stored Procedure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 532 Creating a Stored Procedure Transformation . . . . . . . . . . . . . . . . . . . . . . . 535 Importing Stored Procedures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 535 Manually Creating Stored Procedure Transformations . . . . . . . . . . . . . 537 Setting Options for the Stored Procedure . . . . . . . . . . . . . . . . . . . . . . 538 Using $Source and $Target Variables . . . . . . . . . . . . . . . . . . . . . . . . . 539 Changing the Stored Procedure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 540 Configuring a Connected Transformation . . . . . . . . . . . . . . . . . . . . . . . . . 541 Configuring an Unconnected Transformation . . . . . . . . . . . . . . . . . . . . . . 542 Calling a Stored Procedure From an Expression . . . . . . . . . . . . . . . . . . 542 Calling a Pre- or Post-Session Stored Procedure . . . . . . . . . . . . . . . . . . 545 Error Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 548 Pre-Session Errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 548 Post-Session Errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 549 Session Errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 549 Supported Databases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 550 SQL Declaration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 550 Parameter Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 550 Input/Output Port in Mapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 550 Type of Return Value Supported . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 551 Expression Rules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 552xviii Table of Contents
  19. 19. Tips . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 553Troubleshooting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 554Chapter 25: Transaction Control Transformation . . . . . . . . . . . . . . 555Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 556Transaction Control Transformation Properties . . . . . . . . . . . . . . . . . . . . . 557 Properties Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 557 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 558Using Transaction Control Transformations in Mappings . . . . . . . . . . . . . . 560 Sample Transaction Control Mappings with Multiple Targets . . . . . . . 561Mapping Guidelines and Validation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 564Creating a Transaction Control Transformation . . . . . . . . . . . . . . . . . . . . . 565Chapter 26: Union Transformation . . . . . . . . . . . . . . . . . . . . . . . . . . 567Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 568 Union Transformation Rules and Guidelines . . . . . . . . . . . . . . . . . . . . 568 Union Transformation Components . . . . . . . . . . . . . . . . . . . . . . . . . . 568Working with Groups and Ports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 570Creating a Union Transformation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 572Using a Union Transformation in Mappings . . . . . . . . . . . . . . . . . . . . . . . 574Chapter 27: Update Strategy Transformation . . . . . . . . . . . . . . . . . 575Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 576 Setting the Update Strategy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 576Flagging Rows Within a Mapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 577 Forwarding Rejected Rows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 577 Update Strategy Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 577 Aggregator and Update Strategy Transformations . . . . . . . . . . . . . . . . 578 Lookup and Update Strategy Transformations . . . . . . . . . . . . . . . . . . . 579Setting the Update Strategy for a Session . . . . . . . . . . . . . . . . . . . . . . . . . 580 Specifying an Operation for All Rows . . . . . . . . . . . . . . . . . . . . . . . . . 580 Specifying Operations for Individual Target Tables . . . . . . . . . . . . . . . 581Update Strategy Checklist . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 583Chapter 28: XML Transformations . . . . . . . . . . . . . . . . . . . . . . . . . . 585XML Source Qualifier Transformation . . . . . . . . . . . . . . . . . . . . . . . . . . . 586XML Parser Transformation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 587 Table of Contents xix
  20. 20. XML Generator Transformation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 588 Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 589xx Table of Contents
  21. 21. List of Figures Figure 1-1. Sample Ports Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 Figure 1-2. Example of Input, Output, and Input/Output Ports . . . . . . . . . . . . . . . . . . . . . . . 8 Figure 1-3. Sample Input and Output Ports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 Figure 1-4. Expression Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 Figure 1-5. Variable Ports Store Values Across Rows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 Figure 1-6. Default Value for Input and Input/Output Ports . . . . . . . . . . . . . . . . . . . . . . . . . 19 Figure 1-7. Default Value for Output Ports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 Figure 1-8. Using a Constant as a Default Value . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 Figure 1-9. Using the ERROR Function to Skip Null Input Values . . . . . . . . . . . . . . . . . . . . 24 Figure 1-10. Entering and Validating Default Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 Figure 1-11. Reverting to Original Reusable Transformation Properties . . . . . . . . . . . . . . . . . 35 Figure 2-1. Sample Mapping with Aggregator and Sorter Transformations . . . . . . . . . . . . . . . 46 Figure 3-1. Custom Transformation Ports Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 Figure 3-2. Editing Port Dependencies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 Figure 3-3. Port Attribute Definitions Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 Figure 3-4. Edit Port Attribute Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 Figure 3-5. Custom Transformation Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 Figure 3-6. Custom Transformation Ports Tab - Union Example . . . . . . . . . . . . . . . . . . . . . . 74 Figure 3-7. Custom Transformation Properties Tab - Union Example . . . . . . . . . . . . . . . . . . 75 Figure 3-8. Mapping with a Custom Transformation - Union Example . . . . . . . . . . . . . . . . . 87 Figure 4-1. Custom Transformation Handles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 Figure 6-1. Process for Distributing External Procedures . . . . . . . . . . . . . . . . . . . . . . . . . . . 169 Figure 6-2. External Procedure Transformation Initialization Properties . . . . . . . . . . . . . . . . 178 Figure 6-3. External Procedure Transformation Initialization Properties Tab . . . . . . . . . . . . 180 Figure 7-1. Sample Mapping with a Filter Transformation . . . . . . . . . . . . . . . . . . . . . . . . . . 190 Figure 7-2. Specifying a Filter Condition in a Filter Transformation . . . . . . . . . . . . . . . . . . 191 Figure 8-1. HTTP Transformation Processing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198 Figure 8-2. HTTP Transformation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201 Figure 8-3. HTTP Transformation Properties Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202 Figure 8-4. HTTP Transformation HTTP Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204 Figure 8-5. HTTP Tab for a GET Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209 Figure 8-6. HTTP Tab for a POST Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210 Figure 8-7. HTTP Tab for a SIMPLE POST Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211 Figure 9-1. Java Code Tab Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217 Figure 9-2. Java Transformation Ports Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219 Figure 9-3. Java Transformation Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221 Figure 9-4. Java Transformation Settings Dialog Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229 Figure 9-5. Highlighted Error in Code Entry Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233 Figure 9-6. Highlighted Error in Full Code Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234 Figure 11-1. Java Transformation Example - Sample Mapping . . . . . . . . . . . . . . . . . . . . . . . 253 List of Figures xxi
  22. 22. Figure 11-2. Java Transformation Example - Ports Tab . . . . . . . . . . . . . . . . . . . . . . . . . .. . .255 Figure 11-3. Java Transformation Example - Import Packages Tab . . . . . . . . . . . . . . . . . .. . .257 Figure 11-4. Java Transformation Example - Helper Code Tab . . . . . . . . . . . . . . . . . . . .. . .258 Figure 11-5. Java Transformation Example - On Input Row Tab . . . . . . . . . . . . . . . . . . .. . .260 Figure 11-6. Java Transformation Example - Successful Compilation . . . . . . . . . . . . . . . .. . .261 Figure 12-1. Define Expression Dialog Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . .267 Figure 12-2. Java Expressions Code Entry Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . .268 Figure 13-1. Mapping with Master and Detail Pipelines . . . . . . . . . . . . . . . . . . . . . . . . .. . .284 Figure 13-2. Joiner Transformation Properties Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . .286 Figure 13-3. Mapping Configured to Join Data from Two Pipelines . . . . . . . . . . . . . . . .. . .295 Figure 13-4. Mapping that Joins Two Branches of a Pipeline . . . . . . . . . . . . . . . . . . . . . .. . .297 Figure 13-5. Mapping that Joins Two Instances of the Same Source . . . . . . . . . . . . . . . . .. . .297 Figure 13-6. Preserving Transaction Boundaries when You Join Two Pipeline Branches . .. . .301 Figure 14-1. Session Properties for Flat File Lookups . . . . . . . . . . . . . . . . . . . . . . . . . . .. . .321 Figure 14-2. Return Port in a Lookup Transformation . . . . . . . . . . . . . . . . . . . . . . . . . .. . .333 Figure 15-1. Building Lookup Caches Sequentially . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . .340 Figure 15-2. Building Lookup Caches Concurrently . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . .341 Figure 15-3. Mapping with a Dynamic Lookup Cache . . . . . . . . . . . . . . . . . . . . . . . . . . .. . .346 Figure 15-4. Dynamic Lookup Transformation Ports Tab . . . . . . . . . . . . . . . . . . . . . . . .. . .347 Figure 15-5. Using Update Strategy Transformations with a Lookup Transformation . . . .. . .355 Figure 15-6. Slowly Changing Dimension Mapping with Dynamic Lookup Cache . . . . . .. . .360 Figure 16-1. Normalizer Transformation Ports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . .374 Figure 16-2. Normalizer Ports Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . .375 Figure 16-3. Normalizer Transformation Properties Tab . . . . . . . . . . . . . . . . . . . . . . . . .. . .376 Figure 16-4. Normalizer Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . .377 Figure 16-5. COBOL Source Definition Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . .381 Figure 16-6. Sales File VSAM Normalizer Transformation . . . . . . . . . . . . . . . . . . . . . . .. . .381 Figure 16-7. VSAM Normalizer Ports Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . .383 Figure 16-8. Normalizer Tab for a VSAM Normalizer Transformation . . . . . . . . . . . . . . .. . .384 Figure 16-9. Pipeline Normalizer Columns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . .387 Figure 16-10. Pipeline Normalizer Ports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . .387 Figure 16-11. Pipeline Normalizer Ports Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . .389 Figure 16-12. Normalizer Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . .390 Figure 16-13. Grouping Repeated Columns on the Normalizer Tab . . . . . . . . . . . . . . . . .. . .391 Figure 16-14. Group-Level Column on the Normalizer Tab . . . . . . . . . . . . . . . . . . . . . .. . .393 Figure 16-15. Sales File COBOL Source . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . .394 Figure 16-16. Multiple Record Types Routed to Different Targets . . . . . . . . . . . . . . . . . .. . .395 Figure 16-17. Router Transformation User-Defined Groups . . . . . . . . . . . . . . . . . . . . . .. . .396 Figure 16-18. COBOL Source with A Multiple-Occurring Group of Columns . . . . . . . . .. . .397 Figure 16-19. Generated Keys in Target Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . .397 Figure 16-20. Generated Keys Mapped to Target Keys . . . . . . . . . . . . . . . . . . . . . . . . . .. . .398 Figure 17-1. Sample Mapping with a Rank Transformation . . . . . . . . . . . . . . . . . . . . . . .. . .402 Figure 18-1. Comparing Router and Filter Transformations . . . . . . . . . . . . . . . . . . . . . .. . .410xxii List of Figures
  23. 23. Figure 18-2. Sample Router Transformation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . 411Figure 18-3. Using a Router Transformation in a Mapping . . . . . . . . . . . . . . . . . . . . . . .. . 413Figure 18-4. Specifying Group Filter Conditions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . 414Figure 18-5. Router Transformation Ports Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . 416Figure 18-6. Input Port Name and Corresponding Output Port Names . . . . . . . . . . . . . .. . 417Figure 19-1. Connecting NEXTVAL to Two Target Tables in a Mapping . . . . . . . . . . . . .. . 424Figure 19-2. Mapping with a Sequence Generator and an Expression Transformation . . . .. . 425Figure 19-3. Connecting CURRVAL and NEXTVAL Ports to a Target . . . . . . . . . . . . . .. . 426Figure 20-1. Sample Mapping with a Sorter Transformation . . . . . . . . . . . . . . . . . . . . . .. . 436Figure 20-2. Sample Sorter Transformation Ports Configuration . . . . . . . . . . . . . . . . . . .. . 437Figure 20-3. Sorter Transformation Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . 439Figure 21-1. Source Definition Connected to a Source Qualifier Transformation . . . . . . .. . 451Figure 21-2. Joining Two Tables with One Source Qualifier Transformation . . . . . . . . . .. . 455Figure 21-3. Creating a Relationship Between Two Tables . . . . . . . . . . . . . . . . . . . . . . . .. . 457Figure 22-1. SQL Transformation Script Mode Ports . . . . . . . . . . . . . . . . . . . . . . . . . . .. . 481Figure 22-2. SQL Editor for an SQL Transformation Query . . . . . . . . . . . . . . . . . . . . . .. . 484Figure 22-3. SQL Transformation Static Query Mode Ports . . . . . . . . . . . . . . . . . . . . . .. . 486Figure 22-4. SQL Transformation Ports to Pass a Full Dynamic Query . . . . . . . . . . . . . .. . 487Figure 22-5. SQL Transformation Properties Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . 503Figure 22-6. SQL Settings Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . 505Figure 22-7. SQL Transformation SQL Ports Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . 507Figure 23-1. Dynamic Query Mapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . 513Figure 23-2. Dynamic Query Expression Transformation Ports . . . . . . . . . . . . . . . . . . . .. . 516Figure 23-3. Dynamic Query SQL Transformation Ports tab: . . . . . . . . . . . . . . . . . . . . .. . 517Figure 23-4. Dynamic Connection Mapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . 519Figure 23-5. Dynamic Query Example Expression Transformation Ports . . . . . . . . . . . . .. . 521Figure 23-6. Dynamic Connection Example SQL Transformation Ports . . . . . . . . . . . . . .. . 523Figure 24-1. Sample Mapping with a Stored Procedure Transformation . . . . . . . . . . . . . .. . 541Figure 24-2. Expression Transformation Referencing a Stored Procedure Transformation .. . 542Figure 24-3. Stored Procedure Error Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . 548Figure 25-1. Transaction Control Transformation Properties . . . . . . . . . . . . . . . . . . . . . .. . 557Figure 25-2. Sample Transaction Control Mapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . 559Figure 25-3. Effective and Ineffective Transaction Control Transformations . . . . . . . . . . .. . 561Figure 25-4. Transaction Control Transformation Effective for a Transformation . . . . . . .. . 561Figure 25-5. Valid Mapping with Transaction Control Transformations . . . . . . . . . . . . . .. . 562Figure 25-6. Invalid Mapping with Transaction Control Transformations . . . . . . . . . . . .. . 563Figure 26-1. Union Transformation Groups Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . 570Figure 26-2. Union Transformation Group Ports Tab . . . . . . . . . . . . . . . . . . . . . . . . . . .. . 571Figure 26-3. Union Transformation Ports Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . 571Figure 26-4. Mapping with a Union Transformation . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . 574Figure 27-1. Specifying Operations for Individual Target Tables . . . . . . . . . . . . . . . . . . .. . 582 List of Figures xxiii
  24. 24. xxiv List of Figures
  25. 25. List of Tables Table 1-1. Transformation Descriptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . .. . .. 2 Table 1-2. Multi-Group Transformations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . .. . .. 9 Table 1-3. Transformations Containing Expressions . . . . . . . . . . . . . . . . . . . . . . . . . .. . .. . . 11 Table 1-4. Variable Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . .. . . 14 Table 1-5. System Default Values and Integration Service Behavior . . . . . . . . . . . . . . .. . .. . . 18 Table 1-6. Transformations Supporting User-Defined Default Values . . . . . . . . . . . . .. . .. . . 20 Table 1-7. Default Values for Input and Input/Output Ports . . . . . . . . . . . . . . . . . . .. . .. . . 22 Table 1-8. Supported Default Values for Output Ports . . . . . . . . . . . . . . . . . . . . . . . .. . .. . . 26 Table 1-9. Session Log Tracing Levels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . .. . . 30 Table 3-1. Custom Transformation Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . .. . . 64 Table 3-2. Transaction Boundary Handling with Custom Transformations . . . . . . . . .. . .. . . 69 Table 3-3. Module File Names . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . .. . . 85 Table 3-4. UNIX Commands to Build the Shared Library. . . . . . . . . . . . . . . . . . . . . .. . .. . . 86 Table 4-1. Custom Transformation Handles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . .. . . 91 Table 4-2. Custom Transformation Generated Functions . . . . . . . . . . . . . . . . . . . . . .. . .. . . 92 Table 4-3. Custom Transformation API Functions . . . . . . . . . . . . . . . . . . . . . . . . . . .. . .. . . 92 Table 4-4. Custom Transformation Array-Based API Functions . . . . . . . . . . . . . . . . .. . .. . . 94 Table 4-5. INFA_CT_MODULE Property IDs . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . .. . 109 Table 4-6. INFA_CT_PROC_HANDLE Property IDs . . . . . . . . . . . . . . . . . . . . . . . .. . .. . 110 Table 4-7. INFA_CT_TRANS_HANDLE Property IDs . . . . . . . . . . . . . . . . . . . . . . .. . .. . 111 Table 4-8. INFA_CT_INPUT_GROUP and INFA_CT_OUTPUT_GROUP Handle Property IDs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 Table 4-9. INFA_CT_INPUTPORT and INFA_CT_OUTPUTPORT_HANDLE Handle Property IDs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . .. . 113 Table 4-10. Property Functions (MBCS) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . .. . 115 Table 4-11. Property Functions (Unicode) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . .. . 115 Table 4-12. Compatible Datatypes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . .. . 116 Table 4-13. Get Data Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . .. . 118 Table 4-14. Get Data Functions (Array-Based Mode) . . . . . . . . . . . . . . . . . . . . . . . . .. . .. . 133 Table 6-1. Differences Between COM and Informatica External Procedures . . . . . . . .. . .. . 148 Table 6-2. Visual C++ and Transformation Datatypes . . . . . . . . . . . . . . . . . . . . . . . .. . .. . 171 Table 6-3. Visual Basic and Transformation Datatypes . . . . . . . . . . . . . . . . . . . . . . . .. . .. . 171 Table 6-4. External Procedure Initialization Properties . . . . . . . . . . . . . . . . . . . . . . . .. . .. . 180 Table 6-5. Descriptions of Parameter Access Functions. . . . . . . . . . . . . . . . . . . . . . . .. . .. . 183 Table 6-6. Member Variable of the External Procedure Base Class. . . . . . . . . . . . . . . .. . .. . 185 Table 8-1. HTTP Transformation Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . .. . 202 Table 8-2. HTTP Transformation Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . .. . 205 Table 8-3. GET Method Groups and Ports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . .. . 206 Table 8-4. POST Method Groups and Ports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . .. . 206 Table 8-5. SIMPLE POST Method Groups and Ports . . . . . . . . . . . . . . . . . . . . . . . .. . .. . 207 Table 9-1. Mapping from PowerCenter Datatypes to Java Datatypes . . . . . . . . . . . . . .. . .. . 215 List of Tables xxv
  26. 26. Table 9-2. Java Transformation Properties . . . . . . . . . . . . . . . . . . . . . . . ... . . .. . . .. . .. . .221 Table 11-1. Input and Output Ports . . . . . . . . . . . . . . . . . . . . . . . . . . . ... . . .. . . .. . .. . .254 Table 12-1. Enumerated Java Datatypes . . . . . . . . . . . . . . . . . . . . . . . . ... . . .. . . .. . .. . .274 Table 12-2. JExpression API Methods . . . . . . . . . . . . . . . . . . . . . . . . . . ... . . .. . . .. . .. . .276 Table 13-1. Joiner Transformation Properties . . . . . . . . . . . . . . . . . . . . ... . . .. . . .. . .. . .286 Table 13-2. Integration Service Behavior with Transformation Scopes for the Joiner Transformation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ... . . .. . . .. . .. . .300 Table 14-1. Differences Between Connected and Unconnected Lookups . ... . . .. . . .. . .. . .309 Table 14-2. Lookup Transformation Port Types . . . . . . . . . . . . . . . . . . ... . . .. . . .. . .. . .314 Table 14-3. Lookup Transformation Properties . . . . . . . . . . . . . . . . . . . ... . . .. . . .. . .. . .316 Table 14-4. Session Properties for Flat File Lookups . . . . . . . . . . . . . . . ... . . .. . . .. . .. . .322 Table 15-1. Lookup Caching Comparison . . . . . . . . . . . . . . . . . . . . . . . ... . . .. . . .. . .. . .339 Table 15-2. Integration Service Handling of Persistent Caches . . . . . . . . ... . . .. . . .. . .. . .343 Table 15-3. NewLookupRow Values . . . . . . . . . . . . . . . . . . . . . . . . . . . ... . . .. . . .. . .. . .348 Table 15-4. Dynamic Lookup Cache Behavior for Insert Row Type . . . . ... . . .. . . .. . .. . .357 Table 15-5. Dynamic Lookup Cache Behavior for Update Row Type . . . ... . . .. . . .. . .. . .358 Table 15-6. Location for Sharing Unnamed Cache . . . . . . . . . . . . . . . . . ... . . .. . . .. . .. . .364 Table 15-7. Properties for Sharing Unnamed Cache . . . . . . . . . . . . . . . . ... . . .. . . .. . .. . .364 Table 15-8. Location for Sharing Named Cache . . . . . . . . . . . . . . . . . . . ... . . .. . . .. . .. . .367 Table 15-9. Properties for Sharing Named Cache . . . . . . . . . . . . . . . . . . ... . . .. . . .. . .. . .367 Table 16-1. Normalizer Transformation Properties . . . . . . . . . . . . . . . . ... . . .. . . .. . .. . .376 Table 16-2. Normalizer Tab Columns . . . . . . . . . . . . . . . . . . . . . . . . . . ... . . .. . . .. . .. . .378 Table 16-3. Normalizer Tab for a VSAM Normalizer Transformation . . . ... . . .. . . .. . .. . .384 Table 16-4. Pipeline Normalizer Tab . . . . . . . . . . . . . . . . . . . . . . . . . . ... . . .. . . .. . .. . .390 Table 17-1. Rank Transformation Ports . . . . . . . . . . . . . . . . . . . . . . . . ... . . .. . . .. . .. . .404 Table 17-2. Rank Transformation Properties . . . . . . . . . . . . . . . . . . . . . ... . . .. . . .. . .. . .407 Table 19-1. Sequence Generator Transformation Properties . . . . . . . . . . ... . . .. . . .. . .. . .427 Table 20-1. Column Sizes for Sorter Data Calculations . . . . . . . . . . . . . ... . . .. . . .. . .. . .440 Table 21-1. Conversion for Datetime Mapping Parameters and Variables ... . . .. . . .. . .. . .447 Table 21-2. Source Qualifier Transformation Properties . . . . . . . . . . . . . ... . . .. . . .. . .. . .449 Table 21-3. Locations for Entering Outer Join Syntax . . . . . . . . . . . . . . ... . . .. . . .. . .. . .463 Table 21-4. Syntax for Normal Joins in a Join Override . . . . . . . . . . . . . ... . . .. . . .. . .. . .463 Table 21-5. Syntax for Left Outer Joins in a Join Override . . . . . . . . . . . ... . . .. . . .. . .. . .465 Table 21-6. Syntax for Right Outer Joins in a Join Override . . . . . . . . . ... . . .. . . .. . .. . .467 Table 22-1. Full Database Connection Ports . . . . . . . . . . . . . . . . . . . . . ... . . .. . . .. . .. . .491 Table 22-2. Native Connect String Syntax . . . . . . . . . . . . . . . . . . . . . ... . . .. . . .. . .. . .491 Table 22-3. Output Rows By Query Statement - Query Mode . . . . . . . . ... . . .. . . .. . .. . .495 Table 22-4. NumRowsAffected Rows by Query Statement - Query Mode ... . . .. . . .. . .. . .495 Table 22-5. Output Rows by Query Statement - Query Mode . . . . . . . . ... . . .. . . .. . .. . .497 Table 22-6. SQL Transformation Connection Options . . . . . . . . . . . . . . ... . . .. . . .. . .. . .501 Table 22-7. SQL Transformation Properties . . . . . . . . . . . . . . . . . . . . . ... . . .. . . .. . .. . .503 Table 22-8. SQL Settings Tab Attributes . . . . . . . . . . . . . . . . . . . . . . . . ... . . .. . . .. . .. . .505 Table 22-9. SQL Transformation Ports . . . . . . . . . . . . . . . . . . . . . . . . . ... . . .. . . .. . .. . .507 Table 22-10. Standard SQL Statements . . . . . . . . . . . . . . . . . . . . . . . . . ... . . .. . . .. . .. . .509xxvi List of Tables

×