Validating or Submitting an SQL Query
Problem
You want to either validate that the code in an SQL query works properly when the SAS 
Data Integration Studio job that contains it is run at a later time or immediately submit 
the query as part of a job.
Solution
You can validate the code in an SQL query in the Designer window for the SQL Join 
transformation. This approach can be helpful when you want to make sure that your 
query runs properly and returns the data that you are seeking. You can also submit the 
query as part of the SAS Data Integration Studio job that contains the SQL Join 
transformation.
• “Validate the Code in an SQL Query” on page 467
• “Submit a Query As a Part of a SAS Data Integration Studio Job” on page 467
Tasks
Validate the Code in an SQL Query
Perform the following steps to validate a query in the Designer window:
1. Click Validate SQL in the toolbar at the top of the Designer window.
2. Examine the Log tab that is displayed in the Designer window to verify that the 
query was submitted successfully or to troubleshoot an unsuccessful submission.
Note: You can use the Runtime Manager in SAS Data Integration Studio to cancel the 
SQL query. The SQL Join transformation is displayed as a row in the Runtime 
Manager. You can right-click the row and click Stop Job to cancel the query. (You 
can also click Stop in the Designer window toolbar.) The SQL Join transformation is 
currently the only transformation that supports this type of cancellation.
Submit a Query As a Part of a SAS Data Integration Studio Job
Perform the following steps to submit a query from the SAS Data Integration Studio job:
1. Submit the query in one of the following ways:
• Click Run on the SAS Data Integration Studio menu bar.
• Right-click in the Job Editor window. Then, click Run.
• Click Run on the SAS Data Integration Studio Actions menu.
2. Validate the job as needed. For example, you can check the properties of the target 
table. You can also review the data that is populated into the target table in the View 
Data window. Finally, you can examine the Log tab to verify that the job was 
submitted successfully or to troubleshoot an unsuccessful submission.
Validating or Submitting an SQL Query
467
Pdf to jpg converter - 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 into jpg online; change pdf file to jpg file
Pdf to jpg converter - 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
changing file from pdf to jpg; change pdf to jpg file
Note: You can click Run to Selected Transform on the Designer window toolbar to 
specify that only the steps that are placed before the SQL query code are submitted. 
(These steps are used to create the source tables for the query.)
Joining a Table to Itself
Problem
You need to produce a subset of information that is based on the relationship between 
columns in the same table.
Solution
You can join the table to itself by creating the second version of the table with an alias. 
Then, you can create a query to compare data from columns in the original table to other 
columns in the aliased table.
Tasks
Join the Table to Itself
Perform the following steps to join a table to itself and use the resulting hierarchy of 
tables in a query:
1. Create an SQL query in an empty job. The query should contain the SQL Join 
transformation, at least one source table, and a target table.
2. Open the Designer window for the SQL Join transformation. Click Create in the 
Navigate pane to access the Diagram tab and the SQL Clauses pane.
3. Drop the same table that was used as a source table for the query in the Diagram tab. 
You are prompted to supply an alias for the table because it is already being used as 
a source table for the query. Enter the alias in the Alias field of the properties pane 
for the table. The dialog box for the alias is shown in the following display.
Display 21.24 Self-Join Alias Dialog Box
4. Complete any additional configuration needed to finish the query. The following 
display shows a sample job that includes a table joined to itself.
468
Chapter 21 1 • • Working with SQL Join Transformations
Online Convert PDF to Jpeg images. Best free online PDF JPEG
Online PDF to JPEG Converter. Download Free Trial. Convert a PDF File to JPG. Drag and drop your PDF in the box above and we'll convert the files for you.
convert pdf pages to jpg; convert pdf file into jpg
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
pdf to jpg; convert pdf to jpg 100 dpi
Display 21.25 Sample Job with a Table Joined to Itself
The tables in the flow shown on the Diagram tab are reflected in the FROM clause that 
is highlighted on the Code tab below it. The query that is shown in the sample job pulls 
the Name variable from the original table (denoted with the us alias). However, it pulls 
the Population and Area variables from the copy of the original table (denoted with the 
uscopy alias).
Using Parameters with an SQL Join
Problem
You want to include an SQL Join transformation in a parameterized job that is run in an 
iterative job. This iterative job contains a control loop in which one or more processes 
are executed multiple times, so this job needs to be allowed to iteratively run a series of 
tables in a library through your SQL query. For example, you need to process a series of 
50 tables that represent each of the 50 states in the United States through the same SQL 
query.
Solution
You can create one or more parameters on the Parameters tab in the properties window 
for the SQL Join transformation. Then, you can use the parameters to tie the SQL Join 
transformation to the other parts of the parameterized job and the iterative job that 
contains it. The following prerequisites must be satisfied before the SQL Join 
transformation can work in this iterative setting:
• The SQL Join transformation must be placed in a parameterized job. See “Creating a 
Parameterized Job” on page 501.
• One or more parameters must be set for the input and output tables for the 
parameterized job. See “Set Input and Output Parameters” on page 502.
• One or more parameters must be set for the parameterized job. See “Set Parameters 
for the Job” on page 503.
Using Parameters with an SQL Join
469
C# Image Convert: How to Convert Adobe PDF to Jpeg, Png, Bmp, &
using RasterEdge.XDoc.Converter; String inputFilePath = @"C:\input.pdf"; String outputFilePath = @"C:\output.jpg"; // Convert PDF to jpg.
convert pdf picture to jpg; change from pdf to jpg on
C# Image Convert: How to Convert Dicom Image File to Raster Images
RasterEdge.XDoc.PDF.dll. using RasterEdge.XDoc.Converter; String inputFilePath = @"C:\input.dcm"; String outputFilePath = @"C:\output.jpg"; // Convert dicom to
reader convert pdf to jpg; convert pdf page to jpg
• The parameterized job must be embedded in an iterative job. See “About Iterative 
Jobs” on page 497.
• The parameters from the parameterized job must be mapped on the Parameter 
Mapping tab of the properties window for the iterative job.
• The tables that you need to process through query created in the SQL Join 
transformation must be included in the control table for the iterative job. See 
“Creating a Control Table” on page 504.
Constructing a SAS Scalable Performance Data 
Server Star Join
Problem
You want to construct SAS Scalable Performance Data (SPD) Server star joins.
Solution
You can use the SAS Data Integration Studio SQL Join transformation to construct SAS 
SPD Server star joins when you use SAS SPD Server version 4.3 or later.
Tasks
Construct an SPD Server Star Join
Star joins are useful when you query information from dimensional models that are 
constructed of two or more dimension tables that surround a centralized fact table, which 
is known as a star schema. SAS SPD Server star joins are queries that validate, optimize, 
and execute SQL queries in the SAS SPD Server database for performance. If the star 
join is not used, the SQL is processed in the SAS SPD Server by using pair-wise joins, 
which require one step for each table to complete the join. When the SAS SPD Server 
options are set, the star join is enabled.
You must meet the following requirements in order to enable a SAS SPD Server star 
join:
• All dimension tables must surround a single fact table.
• Dimension-to-fact table joins must be equal joins, and there should be one join per 
dimension table.
• You must have two or more dimension tables in the join condition.
• The fact table must have at least one subsetting condition placed on it.
• All subsetting and join conditions must be specified in the WHERE clause.
• Star join optimization must be enabled through the setting of options on the SAS 
SPD Server library.
In order to enable star join optimization, code that runs on the generated Pass SAS SPD 
Server system library must have the following options added to the library:
• LIBGEN=YES*
• IP=YES
470
Chapter 21 1 • • Working with SQL Join Transformations
JPEG to PDF Converter | Convert JPEG to PDF, Convert PDF to JPEG
Windows 2003 and Windows Vista etc. Features and Benefits. Powerful image converter to convert images of JPG, JPEG formats to PDF files;
changing pdf to jpg; convert pdf pictures to jpg
JPG to GIF Converter | Convert JPEG to GIF, Convert GIF to JPG
What you need to do is just click the convert button, sort the imported file, and then JPEG to GIF Converter will give you JPG files with high good quality.
convert pdf to jpg for online; pdf to jpeg
Here is a commented example of a WHERE clause that enables a SAS SPD Server star 
join optimization:
where
/* dimension1 equi-joined on the fact */
hh_&statesimple.geosur = hh_dim_geo_&statesimple.geosur
/* dimension2 equi-joined on the fact */
and hh_&statesimple.utilsur = hh_dim_utility_&statesimple.utilsur
/* dimension3 equi-joined on the fact */
and hh_dim_family_&statesimple.famsur =
hh_dim_family_&statesimple.famsur
/* subsetting condition on the fact */
and hh_dim_family_&statesimple.PERSONS = 1
;
Note: The SAS SPD Server requires all subsetting to be implemented on the Where tab 
in the SQL Join transformation. For more information about SAS SPD Server 
support for star joins, see the SAS Scalable Performance Data Server: User's Guide
When the code is properly configured, the following output is generated in the log: 
SPDS_NOTE: STARJOIN optimization used in SQL execution.
Optimizing SQL Processing Performance
Problem
Joins are a common and resource-intensive part of SAS Data Integration Studio. SAS 
SQL implements several well-known join algorithms: sort-merge, index, and hash. You 
can use common techniques to aid join performance, irrespective of the algorithm that 
you choose. Conditions often cause the SAS SQL optimizer to choose the sort-merge 
algorithm; techniques that improve sort performance also improve sort-merge join 
performance. However, understanding and leveraging index and hash joins enhance 
performance.
You might often perform lookups between tables in SAS Data Integration Studio. Based 
on key values in one table, you look up matching keys in a second table and retrieve 
associated data in the second table. SQL joins can perform lookups. However, SAS and 
SAS Data Integration Studio provide special lookup mechanisms that typically 
outperform a join. The problems associated with joins are similar to the problems with 
sorting:
• Join performance seems slow.
• You have trouble influencing the join algorithm that SAS SQL chooses.
• You experience higher than expected disk space consumption.
• You have trouble operating SAS SQL joins with RDBMS data.
Solution
Review the techniques explained in the following topics:
• “Debugging an SQL Query” on page 445
• “Enabling Explicit Pass-Through Processing for SQL Join Transformations” on page 
476
Optimizing SQL Processing Performance
471
JPG to JBIG2 Converter | Convert JPEG to JBIG2, Convert JBIG2 to
Image Converter Pro - JPEG to JBIG2 Converter. Convert JPEG (JPG) Images to, from JBIG2 Images on Windows.
batch pdf to jpg; convert pdf to jpeg
JPG to DICOM Converter | Convert JPEG to DICOM, Convert DICOM to
Image Converter Pro - JPEG to DICOM Converter. Convert JPEG (JPG) Images to, from DICOM Images on Windows.
change pdf to jpg format; changing pdf file to jpg
• “Influencing the Join Algorithm” on page 473
• “Performing General Data Optimization” on page 472
• “Understanding Automatic Joins” on page 439
• “Setting the Implicit Property for a Join” on page 474
• “Selecting the Join Type” on page 442
• “Using Properties Window Options to Optimize SQL Processing Performance” on 
page 478
Performing General Data Optimization
Problem
You want to streamline the data as much as possible before you run it through SQL 
processing in a SAS Data Integration Studio job.
Solution
You can minimize the input and output overhead for the data. You can also pre-sort the 
data. Perform the following tasks:
• “Minimize Input/Output (I/O) Processing” on page 472
• “Pre-Sort Data” on page 472
Tasks
Minimize Input/Output (I/O) Processing
To help minimize I/O and improve performance, you can drop unneeded columns, 
minimize column widths (especially from Database Management System [DBMS] tables 
that have wide columns), and delay the inflation of column widths until the end of your 
SAS Data Integration Studio flow. (Column width inflation becomes an issue when you 
combine multiple columns into a single column to use a key value).
Pre-Sort Data
Pre-sorting can be the most effective means to improve overall join performance. A table 
that participates in multiple joins on the same join key usually benefits from pre-sorting. 
For example, if the ACCOUNT table participates in four joins on ACCOUNT_ID, then 
pre-sorting the ACCOUNT table on ACCOUNT_ID helps optimize three joins. 
However, the overhead that is associated with sorting can degrade performance. You can 
sometimes achieve better performance when you subset by using the list of columns in 
the SELECT statement and the conditions set in the WHERE clause.
Note: Integrity constraints are automatically generated when the query target to the SQL 
transformation is a physical table. You can control the generation of these constraints 
by using a Table Loader transformation between the SQL Join transformation and its 
physical table.
472
Chapter 21 1 • • Working with SQL Join Transformations
Influencing the Join Algorithm
Problem
You want to influence the SAS SQL optimizer to choose the join algorithm that yields 
the best possible performance for the SQL processing that is included in a SAS Data 
Integration Studio job. SAS SQL implements several well-known join algorithms: sort-
merge, index, and hash.
Solution
Common techniques aid join performance, irrespective of the algorithm chosen. These 
techniques use options that are found on the SQL Properties pane and the properties 
panes for the tables found in SAS queries. However, selecting a join algorithm is 
important enough to merit a dedicated topic. You can use the Debug property on the 
SQL Join Properties pane to run the _method option, which adds a trace that indicates 
which algorithm is used when in the Log tab.
You can use the following join types:
• “Sort-Merge Joins” on page 473
• “Index Joins” on page 473
• “Hash Joins” on page 474
Tasks
Sort-Merge Joins
Conditions often cause the SAS SQL optimizer to choose the sort-merge algorithm, and 
techniques that improve sort performance also improve sort-merge join performance. 
However, understanding and using index and hash joins can provide performance gains. 
Sort-merge is the algorithm that is selected most often by the SQL optimizer. When 
index nested loop and hash join are eliminated as choices, a sort-merge join or simple 
nested loop join is used. A sort-merge sorts one table, stores the sorted intermediate 
table, sorts the second table, and finally merges the two to form the join result. Use the 
Suggest Sort Merge Join property on the SQL Properties pane to encourage a sort-
merge. This property adds MAGIC=102 to the PROC SQL invocation, as follows: proc 
sql _method magic=102;.
Index Joins
An index join looks up each row of the smaller table by querying an index of the large 
table. When chosen by the optimizer, an index join usually outperforms a sort-merge 
join on the same data. To get the best join performance, you should ensure that both 
tables have indexes created on any columns that you want to participate in the join 
relationship. The SAS SQL optimizer considers an index join when:
• The join is an equijoin in which tables are related by equivalence conditions on key 
columns.
• Joins with multiple conditions are connected by the AND operator.
Influencing the Join Algorithm
473
• The larger table has an index that includes all the join keys.
Encourage an index nested loop with IDXWHERE=YES as a data set option, as follows: 
proc sql _method; select ... from smalltable, 
largetable(idxwhere=yes). You can also turn on the Suggest Index Join 
property on the properties panes for the tables in the query.
Hash Joins
The optimizer considers a hash join when an index join is eliminated as a possibility. 
With a hash join, the smaller table is reconfigured in memory as a hash table. SQL 
sequentially scans the larger table and performs row-by-row hash lookup against the 
small table to form the result set. A memory-sizing formula, which is not presented here, 
determines whether a hash join is chosen. The formula is based on the PROC SQL 
option BUFFERSIZE, whose default value is 64 KB. On a memory-rich system, 
consider increasing BUFFERSIZE to increase the likelihood that a hash join is chosen. 
You can also encourage a hash join by increasing the default 64 KB PROC SQL buffer 
size option. Set the Buffer Size property on the SQL Properties pane to 1048576.
Setting the Implicit Property for a Join
Problem
You want to decide whether the Implicit property for a join should be enabled. This 
setting determines whether the join condition is processed implicitly in a WHERE 
statement or explicitly in a FROM clause in the SELECT statement.
Solution
You can access the Implicit property in the SQL Properties pane. You can also right-
click a join in the Diagram tab to access the property in the pop-up menu. The following 
table depicts the settings that are available for each type of join, along with a sample of 
the join condition code that is generated for the join type:
Table 21.5 Implicit and Explicit Properties for SQL Join Types
Join Type
Join Condition Code
Inner
Can generate an implicit inner join condition in a WHERE statement 
near the end of the query:
where
POSTALCODES.Name = UNITEDSTATES.Name
You can use an implicit join only when the tables are joined with the 
equality operator. You can also generate an explicit inner join 
condition in a FROM clause in the SELECT statement:
from  
srclib.POSTALCODES inner join 
srclib.UNITEDSTATES
on
(
POSTALCODES.Name = UNITEDSTATES.Name
)   
474
Chapter 21 1 • • Working with SQL Join Transformations
Join Type
Join Condition Code
Full
Can generate an explicit join condition in a FROM clause in the 
SELECT statement:
from
srclib.POSTALCODES full join 
srclib.UNITEDSTATES
on
(
POSTALCODES.Name = UNITEDSTATES.Name
)       
Left
Can generate an explicit join condition in a FROM clause in the 
SELECT statement:
from
srclib.POSTALCODES left join 
srclib.UNITEDSTATES
on
(
POSTALCODES.Name = UNITEDSTATES.Name
)
Right
Can generate an explicit join condition in a FROM clause in the 
SELECT statement:
from
srclib.POSTALCODES right join 
srclib.UNITEDSTATES
on
(
POSTALCODES.Name = UNITEDSTATES.Name
)
Cross
Can generate an explicit join condition in a FROM clause in the 
SELECT statement:
from
srclib.POSTALCODES cross join 
srclib.UNITEDSTATES
Union
Can generate an explicit join condition in a FROM clause in the 
SELECT statement:
from
srclib.POSTALCODES union join 
srclib.UNITEDSTATES
The Implicit property is disabled by default for all of the join types except the inner join.
Setting the Implicit Property for a Join
475
Enabling Explicit Pass-Through Processing for 
SQL Join Transformations
Problem
You want to enable explicit pass-through processing for an SQL Join transformation.
Solution
Perform the following tasks:
• “Determine Whether Explicit Pass-Through Processing Is Possible” on page 476
• “Enable Explicit Pass-Through Processing” on page 477
Tasks
Determine Whether Explicit Pass-Through Processing Is Possible
Pass-through processing sends DBMS-specific statements to a database management 
system and retrieves the DBMS data directly. In some situations, explicit pass-through 
processing can improve the performance of SQL transformations in the context of a SAS 
Data Integration Studio job. However, explicit pass-through is not always feasible. The 
query has to be able to work as is on the database. Therefore, if the query contains 
anything specific to SAS beyond the outermost select columns portion, the database 
generates errors. For example, using any of the following in a WHERE clause 
expression or in a subquery on the WHERE or FROM clauses causes the code to fail on 
the database:
• SAS formats
• SAS functions
• DATE or DATETIME literals or actual numeric values
• date arithmetic (usually does not work)
• INTO: macro variable
• data set options
Even if explicit pass-through is not enabled, the SAS SQL procedure still tries to pass 
the query or part of the query down to the database with implicit pass-through. This 
attempt to optimize performance is made without the user having to request it. SQL 
implicit pass-through is a silent optimization that is done in PROC SQL. Implicit pass-
through interprets SAS SQL statements, and, whenever possible, rewrites the SAS SQL 
into database SQL.
There is no guarantee that the SQL is passed to the database. However, PROC SQL tries 
to generate SQL that passes to the database. If the optimization succeeds in passing a 
query (or parts of a query) directly to a database, the SQL query executes on the 
database. Only the results of the query are returned to SAS. This approach can greatly 
improve the performance of the PROC SQL code. If the query cannot be passed to the 
database, records are read and passed back to SAS, one at a time. Implicit pass-through 
is disabled by the following query constructs:
476
Chapter 21 1 • • Working with SQL Join Transformations
Documents you may be interested
Documents you may be interested