SAS Data Integration Studio 4.2: User's Guide

Transcription

SASData Integration Studio 4.2User’s Guide

The correct bibliographic citation for this manual is as follows: SAS Institute Inc. 2009.SAS Data Integration Studio 4.2: User’s Guide. Cary, NC: SAS Institute Inc.SAS Data Integration Studio 4.2: User’s GuideCopyright 2009, SAS Institute Inc., Cary, NC, USAISBN 978-1-59047-960-5All rights reserved. Produced in the United States of America.For a hard-copy book: No part of this publication may be reproduced, stored in aretrieval system, or transmitted, in any form or by any means, electronic, mechanical,photocopying, or otherwise, without the prior written permission of the publisher, SASInstitute Inc.For a Web download or e-book: Your use of this publication shall be governed by theterms established by the vendor at the time you acquire this publication.U.S. Government Restricted Rights Notice. Use, duplication, or disclosure of thissoftware and related documentation by the U.S. government is subject to the Agreementwith SAS Institute and the restrictions set forth in FAR 52.227-19 Commercial ComputerSoftware-Restricted Rights (June 1987).SAS Institute Inc., SAS Campus Drive, Cary, North Carolina 27513.1st electronic book, February 20091st printing, March 20092nd electronic book, May 20092nd printing, June 2009SAS Publishing provides a complete selection of books and electronic products to helpcustomers use SAS software to its fullest potential. For more information about oure-books, e-learning products, CDs, and hard-copy books, visit the SAS Publishing Web siteat support.sas.com/publishing or call 1-800-727-3228.SAS and all other SAS Institute Inc. product or service names are registered trademarksor trademarks of SAS Institute Inc. in the USA and other countries. indicates USAregistration.Other brand and product names are registered trademarks or trademarks of theirrespective companies.

ContentsPART 1Introduction1Chapter 1 Overview of SAS Data Integration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3About SAS Data Integration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3Advantages of SAS Data Integration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4A Basic Data Integration Environment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5Online Help for SAS Data Integration Studio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8Administrative Documentation for SAS Data Integration Studio . . . . . . . . . . . . . . . . . . 9Accessibility Features in SAS Data Integration Studio . . . . . . . . . . . . . . . . . . . . . . . . . 10Upgrading from Earlier Versions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13PART 2General User Tasks19Chapter 2 Getting Started . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21Setup for SAS Data Integration Studio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22Security for SAS Data Integration Studio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22Main Tasks for Creating Process Flows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23Starting SAS Data Integration Studio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24Connecting to a SAS Metadata Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26Working with the Folders Tree . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27Selecting a Default SAS Application Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30Registering SAS Libraries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31Working with User-Defined Formats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32Registering Tables and Cubes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33Specifying Global Options in SAS Data Integration Studio . . . . . . . . . . . . . . . . . . . . . 35Working with Change Management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36Add a Note or Document to a Registered Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41View the Content of Notes or Documents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43Chapter 3 Importing, Exporting, and Copying Metadata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45Metadata Import and Export in SAS Data Integration Studio . . . . . . . . . . . . . . . . . . . . 46Working with SAS Package Metadata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46Preparing to Import or Export SAS Package Metadata . . . . . . . . . . . . . . . . . . . . . . . . . 47Exporting SAS Package Metadata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48Importing SAS Package Metadata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49Copying and Pasting Metadata Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51Working with SAS Metadata Bridges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51Usage Notes for Importing or Exporting with a SAS Metadata Bridge . . . . . . . . . . . . . 52Preparing to Import or Export with a SAS Metadata Bridge . . . . . . . . . . . . . . . . . . . . . 53Importing New Metadata with a SAS Metadata Bridge . . . . . . . . . . . . . . . . . . . . . . . . . 53Importing Updated Metadata with a SAS Metadata Bridge . . . . . . . . . . . . . . . . . . . . . . 55Exporting Metadata with a SAS Metadata Bridge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60Chapter 4 Working with Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63About Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64Registering Existing Tables with the Register Tables Wizard . . . . . . . . . . . . . . . . . . . . 65Registering New Tables with the New Table Wizard . . . . . . . . . . . . . . . . . . . . . . . . . . 66

iv ContentsViewing or Updating Table Metadata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68Using a Physical Table to Update Table Metadata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69Specifying Options for Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70Supporting Case and Special Characters in Table and Column Names . . . . . . . . . . . . . 72Maintaining Column Metadata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77Maintaining Keys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82Maintaining Indexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87Browsing Table Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89Editing SAS Table Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92Using the View Data Window to Create a SAS Table . . . . . . . . . . . . . . . . . . . . . . . . . 95Specifying Browse and Edit Options for Tables and External Files . . . . . . . . . . . . . . . 96Chapter 5 Working with External Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99About External Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100Registering a Delimited External File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100Registering a Fixed-Width External File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103Registering an External File with User-Written Code . . . . . . . . . . . . . . . . . . . . . . . . . 108Viewing or Updating External File Metadata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111Overriding the Code Generated by the External File Wizards . . . . . . . . . . . . . . . . . . . 112Specifying NLS Support for External Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113Accessing an External File with an FTP Server or an HTTP Server . . . . . . . . . . . . . . 113Viewing Data in External Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114Registering a COBOL Data File That Uses a COBOL Copybook . . . . . . . . . . . . . . . . 115Using an External File in the Process Flow for a Job . . . . . . . . . . . . . . . . . . . . . . . . . . 117Chapter 6 Creating Jobs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121About Jobs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122Creating an Empty Job . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123Creating a Process Flow for a Job . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124Creating a Job That Contains Jobs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125Working with Default Temporary Output Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126About Job Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130Documenting Process Flow Diagrams . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133Accessing Local and Remote Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133Viewing or Updating Job Metadata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136Displaying the SAS Code for a Job . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137Common Code Generated for a Job . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138Chapter 7 Managing Jobs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141About Managing Jobs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142Submitting a Job for Immediate Execution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142Meeting Prerequisites for Collecting Job Statistics . . . . . . . . . . . . . . . . . . . . . . . . . . . 145Reviewing a Successful Job . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145Diagnosing and Correcting an Unsuccessful Job . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150Maintaining Column Mappings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154Managing the Scope of Column Changes in Jobs . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158Managing Connections in Job Editor Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162Viewing the Code for a Transformation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164Viewing or Updating the Metadata for Transformations . . . . . . . . . . . . . . . . . . . . . . . 165Chapter 8 Managing the Status of Jobs and Transformations . . . . . . . . . . . . . . . . . . . . . . . . 167About Status Handling for Jobs and Transformations . . . . . . . . . . . . . . . . . . . . . . . . . 167Default Conditions, Actions, and Conditional Action Sets . . . . . . . . . . . . . . . . . . . . . 168Prerequisites for Actions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172Perform Actions Based on the Status of a Job . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173Perform Actions Based on the Status of a Transformation . . . . . . . . . . . . . . . . . . . . . 175

ContentsvMacro Variables for Status Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177Chapter 9 Deploying Jobs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183About Deploying Jobs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184About Deploying Jobs for Scheduling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185Prerequisites for Deploying a Job for Scheduling . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185Deploying Jobs for Scheduling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185Redeploying Jobs for Scheduling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187Using Scheduling to Handle Complex Process Flows . . . . . . . . . . . . . . . . . . . . . . . . .187Using Deploy for Scheduling to Execute Jobs on a Remote Host . . . . . . . . . . . . . . . . 188About Deploying Jobs as Stored Processes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189Prerequisites for Deploying a Job as a Stored Process . . . . . . . . . . . . . . . . . . . . . . . . . 190Deploying Jobs as Stored Processes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .190Redeploying Jobs to Stored Processes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192Viewing or Updating Stored Process Metadata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193About Deploying Jobs as Web Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .194Prerequisites for Web Service Jobs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195Requirements for Web Service Jobs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .195Creating a Web Service Job . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196Deploying a Web Service Job as a Stored Process . . . . . . . . . . . . . . . . . . . . . . . . . . . .200Deploying a Stored Process as a Web Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203Chapter 10 Working with Generated Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205About Code Generated for Jobs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205Displaying the Code Generated for a Job . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209Displaying the Code Generated for a Transformation . . . . . . . . . . . . . . . . . . . . . . . . . 209Specifying Options for Jobs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210Specifying Options for a Transformation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .210Modifying Configuration Files or SAS Start Commands for Application Servers . . . 211Chapter 11 Working with User-Written Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213About User-Written Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213Adding User-Written Code to the Precode and Postcode Tab . . . . . . . . . . . . . . . . . . . 214Adding a User Written Code Transformation to a Job . . . . . . . . . . . . . . . . . . . . . . . . . 216Creating and Using a Generated Transformation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219Maintaining a Generated Transformation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .226Editing the Generated Code for a Job or Transformation . . . . . . . . . . . . . . . . . . . . . . .228Replacing the Generated Code for a Job or Transformation . . . . . . . . . . . . . . . . . . . . 229Chapter 12 Optimizing Process Flows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231About Process Flow Optimization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231Managing Process Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232Managing Columns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .235Streamlining Process Flow Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237Using Simple Debugging Techniques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238Using SAS Logs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242Reviewing Temporary Output Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244Additional Performance Optimization Information . . . . . . . . . . . . . . . . . . . . . . . . . . . 246Chapter 13 Using Impact Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247About Impact Analysis and Reverse Impact Analysis . . . . . . . . . . . . . . . . . . . . . . . . .247Performing an Impact Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248Performing Impact Analysis on a Generated Transformation . . . . . . . . . . . . . . . . . . . 251Performing Reverse Impact Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253Chapter 14 Working with Reports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255

vi ContentsAbout Reports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .256Opening the Reports Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256Selecting the Reports Perspective . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257Customizing the Tables Report . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258Customizing the Job Documentation Report . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259Running and Saving a Report . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260Saving a Report As a Document Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262Viewing a Report . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263Creating Your Own Report . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265PART 3Working with Transformations267Chapter 15 Working with Loader Transformations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269About Loader Transformations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269About the SPD Server Table Loader Transformation . . . . . . . . . . . . . . . . . . . . . . . . . 270About the Table Loader Transformation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270Setting Table Loader Transformation Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271Selecting a Load Technique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273Removing Non-Essential Indexes and Constraints during a Load . . . . . . . . . . . . . . . . 276Considering a Bulk Load . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277Chapter 16 Working with SAS Sort Transformations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279About Sort Transformations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279Optimizing Sort Performance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279Creating a Table That Contains the Sorted Contents of a Source . . . . . . . . . . . . . . . . 282Chapter 17 Working with SQL Join Transformations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285About SQL Join Transformations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287Using the Designer Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287Reviewing and Modifying Clauses, Joins, and Tables in an SQL Query . . . . . . . . . . . 288Understanding Automatic Joins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291Selecting the Join Type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294Adding User-Written SQL Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296Debugging an SQL Query . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297Adding a Column to the Target Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299Adding a Join to an SQL Query on the Designer Tab . . . . . . . . . . . . . . . . . . . . . . . . . 299Creating a Simple SQL Query . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301Configuring a SELECT Clause . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303Adding a CASE Expression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305Creating or Configuring a WHERE Clause . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307Adding a GROUP BY Clause and a HAVING Clause . . . . . . . . . . . . . . . . . . . . . . . . 309Adding an ORDER BY Clause . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312Adding Subqueries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313Validating or Submitting an SQL Query . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318Joining a Table to Itself . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319Using Parameters with an SQL Join . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320Constructing a SAS Scalable Performance Data Server Star Join . . . . . . . . . . . . . . . . 321Optimizing SQL Processing Performance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322Performing General Data Optimization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323Influencing the Join Algorithm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324Setting the Implicit Property for a Join . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325Enabling Pass-Through Processing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326Using Properties Window Options to Optimize SQL Processing Performance . . . . . . 328

ContentsviiChapter 18 Working with Iterative Jobs and Parallel Processing . . . . . . . . . . . . . . . . . . . . . . 333About Iterative Jobs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333Creating and Running an Iterative Job . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334Creating a Parameterized Job . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337Creating a Control Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340About Parallel Processing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342Setting Options for Parallel Processing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344Chapter 19 Working with Slowly Changing Dimensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347About Slowly Changing Dimensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348About Dimension Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350About Fact Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352Loading a Dimension Table with Type 1 and 2 Updates . . . . . . . . . . . . . . . . . . . . . . . 353Loading a Fact Table Using Dimension Table Lookup . . . . . . . . . . . . . . . . . . . . . . . . 356Loading a Table and Adding a Surrogate Primary Key . . . . . . . . . . . . . . . . . . . . . . . . 362Tracking Changes in Source Datetime Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365Closing Out Rows in Datetime Change Tracking . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367Chapter 20 Working with Change Data Capture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369About the Change Data Capture Transformations . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369About CDC Changed Data Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371About CDC Control Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372Capture Changed Data from Oracle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372Chapter 21 Working with Message Queues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379About Message Queues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379Prerequisites for Message Queues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380Selecting Message Queue Transformations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381Processing a WebSphere Queue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382Polling a Websphere Message Queue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384Processing a Microsoft Queue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386Chapter 22 Working with SPD Server Cluster Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389About SPD Server Cluster Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389Creating an SPD Server Cluster Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390Maintaining an SPD Server Cluster . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391PART 4Appendixes393Appendix 1 Main Windows and Wizards . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395Analysis Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396Checkouts Tree . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397Code Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397Comparison Results Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398Connection Profile Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399Desktop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399Details Pane . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 401Expression Builder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402Folders Tree . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403Inventory Tree . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404Job Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407Properties Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408Reports Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411Tools-Options Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412

viii ContentsTransformations Tree . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413Tree View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419View Data Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 421Wizards . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423Appendix 2 Java Code and Methods for Report Plug-ins . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427Example Java Code for a Report Plug-in . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427Reporting Interface Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

Chapter 1 Overview of SAS Data Integration About SAS Data Integration . . . . . . . . . . . . . . . . .