Chapter 20
Working with SAS Sort 
Transformations
About Sort Transformations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427
Optimizing Sort Performance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427
Problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427
Solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 428
Creating a Table That Contains the Sorted Contents of a Source . . . . . . . . . . . . . 430
Problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 430
Solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 430
Tasks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 430
About Sort Transformations
The Sort transformation provides a graphic interface for the functions that are available 
in PROC SORT. You can use the transformation to read data from a source, sort it, and 
write the sorted data to a target in a SAS Data Integration Studio job.
The properties window for the Sort transformation contains tabs that enable you to select 
the columns that you sort by and to set options for the sort. You can also optimize sort 
performance, as described in “Optimizing Sort Performance” on page 427. For an 
example of how you can use a Sort transformation, see “Creating a Table That Contains 
the Sorted Contents of a Source” on page 430.
Optimizing Sort Performance
Problem
You want to sort the data in your source tables before running a job. Sorting is a 
common and resource-intensive component of SAS Data Integration Studio. Sorts occur 
explicitly as PROC SORT steps and implicitly in other operations such as joins. 
Effective sorting requires a detailed analysis of performance and resource usage.
Sorting large SAS tables requires large SORT procedure utility files. When SAS Data 
Integration Studio is running on multiple SAS jobs simultaneously, multiple SORT 
procedure utility files can be active. For these reasons, tuning sort performance and 
understanding sort disk space consumption are critical.
427
Convert pdf to jpg for - Convert PDF to JPEG images in C#.net, ASP.NET MVC, WinForms, WPF project
How to convert PDF to JPEG using C#.NET PDF to JPEG conversion / converter library control SDK
convert pdf file into jpg format; batch convert pdf to jpg online
Convert pdf to jpg for - VB.NET PDF Convert to Jpeg SDK: Convert PDF to JPEG images in vb.net, ASP.NET MVC, WinForms, WPF project
Online Tutorial for PDF to JPEG (JPG) Conversion in VB.NET Image Application
convert pdf image to jpg image; bulk pdf to jpg converter
Solution
You can enhance sort performance with the techniques listed in the following table. For 
more information, see the ETL Performance Tuning Tips white paper that is available 
from http://support.sas.com/resources/papers/tnote/
tnote_performance.html.
Table 20.1 Sort Performance Enhancement Techniques
Technique
Notes
Use the improved SAS®9 sort 
algorithm
SAS®9 includes a rewritten SORT algorithm that 
incorporates threading and data latency reduction 
algorithms. The SAS®9 sort uses multiple threads and 
outperforms a SAS 8 sort in almost all circumstances.
Minimize data
Perform the following steps:
• Minimize row width.
• Drop unnecessary columns.
• Minimize pad bytes.
Direct sort utility files to fast 
storage devices
Use the WORK invocation option, the UTILLOC 
invocation option, or both options to direct SORT 
procedure utility files to fast, less-utilized storage devices. 
Some procedure utility files are accessed heavily, and 
separating them from other active files might improve 
performance.
Distribute sort utility files across 
multiple devices
Distribute SORT procedure utility files across multiple fast, 
less-utilized devices. Direct the SORT procedure utility file 
of each job to a different device. Use the WORK invocation 
option, the UTILLOC invocation option, or both options.
Pre-sort explicitly on the most 
common sort key
SAS Data Integration Studio might arrange a table in sort 
order, one or multiple times. For large tables in which sort 
order is required multiple times, look for a common sort 
order. Use the MSGLEVEL=I option to expose information 
that is in the SAS log to determine where sorts occur.
Change the default SORTSIZE 
value
For large tables, set SORTSIZE to 256 MB or 512 MB. For 
extremely large tables (a billion or more wide rows), set 
SORTSIZE to 1 GB or higher. Tune these recommended 
values further based on empirical testing or based on in-
depth knowledge of your hardware and operating system.
Change the default MEMSIZE 
value
Set MEMSIZE at least 50% larger than SORTSIZE.
Set the NOSORTEQUALS 
system option
In an ETL process flow, maintaining relative row order is 
rarely a requirement. If maintaining the relative order of 
rows with identical key values is not important, set the 
system option NOSORTEQUALS to save resources.
428
Chapter 20 0 • • Working with SAS Sort Transformations
Online Convert Jpeg to PDF file. Best free online export Jpg image
Online JPEG to PDF Converter. Download Free Trial. Convert a JPG to PDF. You can drag and drop your JPG file in the box, and then start
batch pdf to jpg converter; convert pdf pages to jpg online
Online Convert PDF to Jpeg images. Best free online PDF JPEG
Download Free Trial. Convert a PDF File to JPG. Easy converting! We try to make it as easy as possible to convert your PDF files to JPG.
convert pdf into jpg online; batch pdf to jpg
Technique
Notes
Set the UBUFNO option to the 
maximum of 20
The UBUFNO option specifies the number of utility I/O 
buffers. In some cases, maximizing UBUFNO increases 
sort performance up to 10%. Increasing UBUFNO has no 
negative ramifications.
Use the TAGSORT option for 
nearly sorted data
TAGSORT is an alternative SAS 8 sort algorithm that is 
useful for data that is almost in sort order. The option is 
most effective when the sort-key width is no more than 5 
percent of the total uncompressed column width. Using the 
TAGSORT option on a large unsorted data set results in 
extremely long sort times compared to a SAS®9 sort that 
uses multiple threads.
Use relational database sort 
engines to pre-sort tables 
without data order issues
Pre-sorting in relational databases might outperform sorting 
that is based on SAS. Use options of the SAS Data 
Integration Studio Extract transformation to generate an 
ORDER BY clause in the SAS SQL. The ORDER BY 
clause asks the relational database to return the rows in that 
particular sorted order.
Determine disk space 
requirements to complete a sort
Size the following sort data components:
• input data
• SORT procedure utility file
• output data
Size input data
Because sorting is so I/O intensive, it is important to start 
with only the rows and columns that are needed for the sort. 
The SORT procedure WORK files and the output file are 
dependent on the input file size.
Size SORT procedure utility 
files
Consider a number of factors to size the SORT procedure 
utility files:
• sizing information of the input data
• any pad bytes added to character columns
• any pad bytes added to short numeric columns
• pad bytes that align each row by 8 bytes (for SAS data 
sets)
• 8 bytes per row overhead for EQUALS processing
• per-page unused space in the SORT procedure utility 
files
• multi-pass merge: doubling of SORT procedure utility 
files (or sort failure)
Size of output data
To size the output data, apply the sizing rules of the 
destination data store to the columns that are produced by 
the sort.
Optimizing Sort Performance
429
C# Image Convert: How to Convert Adobe PDF to Jpeg, Png, Bmp, &
This demo code just converts first page to jpeg image. String inputFilePath = @"C:\input.pdf"; String outputFilePath = @"C:\output.jpg"; // Convert PDF to jpg.
pdf to jpeg converter; .net pdf to jpg
C# Image Convert: How to Convert Tiff Image to Jpeg, Png, Bmp, &
RasterEdge.XDoc.PDF.dll. This demo code will convert first page to jpeg image. C:\input.tif"; String outputFilePath = @"C:\output.jpg"; // Convert tiff to jpg.
convert pdf to high quality jpg; conversion pdf to jpg
Creating a Table That Contains the Sorted 
Contents of a Source
Problem
You want to create a job that reads data from a source, sorts it, and writes the sorted data 
to a target.
Solution
You can create a job that uses a Sort transformation to sort the data in a source table and 
write it to a target table. The sample job includes the following tasks:
• “Create and Populate the Job” on page 430
• “Specify How to Sort Information in the Target” on page 431
• “Run the Job and View the Output” on page 431
Tasks
Create and Populate the Job
Perform the following steps to create and populate a new job:
1. Create an empty SAS Data Integration Studio job.
2. From the Data folder in the Transformations tree, select and drag a Sort 
transformation and drop it in the empty job on the Diagram tab in the Job Editor 
window.
3. Select and drag the source table from its folder and drop it before the Sort 
transformation on the Diagram tab.
4. Drag the cursor from the source table to the input port of the Sort transformation. 
This action connects the transformation to the source. 
5. Because you want to have a permanent target table to contain the output for the 
transformation, right-click the temporary work table that is attached to the 
transformation and click Replace in the pop-up menu. Then, use the Table Selector 
window to select the target table for the job. The target table must be registered in 
SAS Data Integration Studio. (For more information about temporary work tables, 
see “Working with Default Temporary Output Tables” on page 146.)
The following example shows the sample process flow. The source table is named 
ALL_EMP and the permanent target table is named EMPSORT.
Display 20.1 Sample Sort Process Flow Diagram
430
Chapter 20 0 • • Working with SAS Sort Transformations
C# Create PDF from images Library to convert Jpeg, png images to
Batch convert PDF documents from multiple image formats, including Jpg, Png, Bmp, Gif, Tiff, Bitmap, .NET Graphics, and REImage.
change file from pdf to jpg on; advanced pdf to jpg converter
VB.NET PDF Convert to Images SDK: Convert PDF to png, gif images
Resize converted image files in VB.NET. Convert PDF to Jpg, Png, Bmp, Gif, Tiff and Bitmap in ASP.NET. Embed PDF to image converter in viewer.
batch convert pdf to jpg; c# convert pdf to jpg
Specify How to Sort Information in the Target
Perform the following steps to specify how to sort information in the target table:
1. Open the Sort By Columns tab of the properties window for the Sort transformation.
2. Select the first variable for the new sort from the list in the Available Columns field. 
Move the variable to the Sort by columns field. Then, specify the sort direction for 
the variable with the drop-down menu in the Sort Order column.
Note: You can double-click on the value in the Sort order column to change the 
value. However, if you double-click on the value in the Column name column, 
the column is removed from the Sort by columns list.
3. Move the other variables that you want to sort by to the Sort by columns field. 
Then, set the sort direction for each. The following display depicts the completed 
Sort By Columns tab for the sample sort job.
Display 20.2 Completed Sort Tab for Sample Job
Note: Additional sorting options can be specified on the Options tab.
Run the Job and View the Output
Perform the following steps to run the job and view the output:
1. Save the selection criteria for the target and close the properties window.
2. Right-click on an empty area of the job, and click Run in the pop-up menu. SAS 
Data Integration Studio generates code for the job and submits it to the SAS 
Application Server for execution. The following display shows a successful run of a 
sample job.
Creating a Table That Contains the Sorted Contents of a Source
431
C# TIFF: C#.NET Code to Convert JPEG Images to TIFF
Use C# Code to Convert Jpeg to Tiff. string[] imagePaths = { @"C:\demo1.jpg", @"C:\demo2.jpg", @"C:\demo3.jpg" }; // Construct List<REImage> object.
convert pdf to jpg; best convert pdf to jpg
VB.NET PDF - Convert PDF with VB.NET WPF PDF Viewer
4. To Image. Convert PDF to image formats, such as PNG, JPG, BMP and GIF. Copyright © <2000-2015> by <RasterEdge.com>. All Rights Reserved.
convert pdf into jpg; convert pdf file to jpg online
Display 20.3 Successfully Completed Sample Job
3. If error messages are displayed on the Status tab, read and respond to the messages 
as needed.
4. To view the target table, right-click the target and select Open. The following 
display shows the target table data for the sample job.
Display 20.4 Data in Sample Sorted Table
You can review the View Data window to ensure that the data from the source table was 
properly sorted. Note that the Age and Sex columns in the sample target table are sorted, 
but the other columns remained unsorted.
432
Chapter 20 0 • • Working with SAS Sort Transformations
Chapter 21
Working with SQL Join 
Transformations
About Join Transformations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435
Using the Designer Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435
Problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435
Solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 436
Tasks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 436
Reviewing and Modifying Clauses, Joins, and Tables in an SQL Query . . . . . . . 437
Problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437
Solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437
Tasks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437
Understanding Automatic Joins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439
The Autojoin Process . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439
A Sample Auto-Join Process . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 440
Selecting the Join Type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442
Problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442
Solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442
Tasks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442
Adding User-Written SQL Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 444
Problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 444
Solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 444
Additional Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445
Debugging an SQL Query . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445
Problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445
Solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446
Tasks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446
Adding a Column to the Target Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447
Problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447
Solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447
Tasks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447
Adding a Join to an SQL Query on the Designer Tab . . . . . . . . . . . . . . . . . . . . . . 447
Problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447
Solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 448
Tasks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 448
Creating a Simple SQL Query . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 449
Problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 449
Solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 449
Tasks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 449
433
Configuring a SELECT Clause . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451
Problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451
Solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451
Tasks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 452
Adding a CASE Expression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 453
Problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 453
Solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 454
Tasks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 454
Creating or Configuring a WHERE Clause . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 455
Problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 455
Solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 455
Tasks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456
Adding a GROUP BY Clause and a HAVING Clause . . . . . . . . . . . . . . . . . . . . . . 457
Problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457
Solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 458
Tasks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 458
Adding an ORDER BY Clause . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 460
Problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 460
Solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 460
Tasks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 461
Adding Subqueries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 462
Problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 462
Solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 462
Tasks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 462
Validating or Submitting an SQL Query . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 467
Problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 467
Solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 467
Tasks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 467
Joining a Table to Itself . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 468
Problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 468
Solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 468
Tasks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 468
Using Parameters with an SQL Join . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 469
Problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 469
Solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 469
Constructing a SAS Scalable Performance Data Server Star Join . . . . . . . . . . . . 470
Problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 470
Solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 470
Tasks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 470
Optimizing SQL Processing Performance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 471
Problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 471
Solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 471
Performing General Data Optimization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 472
Problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 472
Solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 472
Tasks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 472
Influencing the Join Algorithm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 473
Problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 473
Solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 473
Tasks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 473
434
Chapter 21 1 • • Working with SQL Join Transformations
Setting the Implicit Property for a Join . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 474
Problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 474
Solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 474
Enabling Explicit Pass-Through Processing for SQL Join Transformations . . . . 476
Problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 476
Solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 476
Tasks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 476
Using Properties Window Options to Optimize SQL Processing Performance . . 478
Problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 478
Solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 478
Tasks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 478
About Join Transformations
Overview
The SQL folder in the Transformation tree contains a number of transformations that 
enable you to add SQL processing to jobs. This chapter is about the Join transformation.
The Join transformation provides an interface for building the statements and clauses 
that constitute queries. The transformation supports the SAS SQL procedure syntax of 
Create table/view <table> as <query expression> and accommodates 
up to 256 tables in a single query. The SELECT statement supports joining the table to 
itself. It also supports subqueries; the CASE expression; and WHERE, GROUP BY, 
HAVING, and ORDER BY clauses.
The process of building the SQL query is performed in the Designer window. You 
access this window when you double-click the Join transformation in a SAS Data 
Integration Studio job. You use the Designer window to create, edit, and review an SQL 
query. The window contains sections that are designed to simplify creating the SQL 
query and configuring its parts. To return to the SQL job on the Designer tab of the Job 
Editor window, click Up on the toolbar.
The Join transformation supports the pushdown feature that enables you to process 
relational database tables directly on the appropriate relational database server. For 
information about pushdown, see “Pushing ELT Job Code Down to a Database” on page 
193.
See the SQL-related usage notes in “General Usage Notes” on page 627. For 
information about other SQL transformations, see “Working with Other SQL 
Transformations” on page 481.
Using the Designer Window
Problem
You want to create SQL queries that you can use in SAS Data Integration Studio jobs. 
You want to build these queries in a graphical interface that enables you to drag and 
drop components onto a visual representation of a query. After a component is added to 
the query, you need the ability to open and configure it.
Using the Designer Window
435
Solution
Use the Designer window for the SQL transformation to create, edit, and review an SQL 
query. You access this window when you double-click the SQL Join in a SAS Data 
Integration Studio job. (You can also right-click the transformation and click Open in 
the pop-up menu.) The window contains sections that are designed to simplify creating 
the SQL query and configuring its parts.
Tasks
Using Components in the Designer Window
The Designer window enables you to perform the tasks listed in the following table:
Table 21.1 Designer Tab Tasks
Task
Location
Action
Select and manipulate an object that 
displays in the Diagram tab.
Navigate pane
Click the object that you need to 
access.
Add SQL clauses to the flow shown 
on the Diagram tab.
SQL Clauses 
pane
Double-click the clause or drop it on 
the Diagram tab.
Review the list of columns in the 
source table and the target table. 
Note that you can specify alphabetic 
display of the columns by selecting 
Display columns in alphabetical 
order.
Tables pane
Click SelectWhereHaving
Group by, or Order by in the SQL 
Clauses pane.
Display and update the main 
properties of an object that is 
selected on the Diagram tab. The 
title of this pane changes to match 
the object selected in the Navigate 
pane.
Properties pane
Click an object on the Diagram tab.
Create SQL statements, configure 
the clauses that are contained in the 
statement, and edit the source table 
to target table mappings. The name 
of this component changes as you 
click different statements and 
clauses in the Navigate pane.
Diagram tab
Click SQL JoinCreate, or From 
in the Navigate pane.
View the SAS code generated for 
the query.
Code tab
Click Code at the bottom of the 
Diagram tab.
View the log of a SAS program, 
such as the code that is executed or 
validated for the SQL query.
Log tab
Click Log at the bottom of the 
Diagram tab.
436
Chapter 21 1 • • Working with SQL Join Transformations
Documents you may be interested
Documents you may be interested