• Queries that incorporate explicit pass-through statements: If explicit pass-through 
statements are used, the statements are passed directly to the database as they are. 
Therefore, there is no need to try to prepare or translate the SQL with implicit pass-
through to make it compatible to the database. It is already assumed to be 
compatible.
• Queries that use SAS data set options: SAS data set options cannot be honored in a 
pass-through context.
• Queries that use an INTO: clause: The memory that is associated with the host 
variable is not available to the DBMS that processes the query. The INTO: clause is 
not supported in the SQL Join transformation.
• Queries that contain the SAS OUTER UNION operator: This operator is a non-ANSI 
SAS SQL extension.
• Specification of a SAS Language function that is not mapped to a DBMS equivalent 
by the engine. These functions vary by database.
• Specification of ANSIMISS or NOMISS in the join syntax.
• Heterogeneous queries: Implicit pass-through is not attempted for queries that 
involve different engines or on queries that involve a single engine with multiple 
librefs that cannot share a single connection because they have different connection 
properties (such as a different database= value). For heterogeneous queries, try 
explicit pass-through. With the SQL Join transformation, you can also use the 
Upload Library Before SQLPre-Upload Action, and Use Bulkload for Upload 
properties in the table properties panes to improve the situation. 
Note: The Upload Library Before SQL property in the SQL Jon transformation 
can be used to create a homogeneous join, which can then enable an explicit 
pass-through operation. This property enables you to select another library on the 
same database server as other tables in the SQL query. The best choice for a 
library is a temporary space on that database server. The operations on that 
temporary table can also be modified to choose between deleting all rows or 
deleting the entire table. Bulk-load is also an option for the upload operation with 
the Use Bulkload for Uploading property. It is generally a good practice to 
upload the smaller of the tables in the SQL query because this operation can be 
expensive.
Enable Explicit Pass-Through Processing
To enable explicit pass-through processing by default for new instances of most SQL 
transformations, select Tools 
ð
Options 
ð
Job Editor Tab, and then select the pass-
through check box in the Automatic Settings area. This setting affects SQL Join 
transformations and also any SQL transformation whose properties window includes a 
Database pass-through option on its Options tab. This includes SQL transformations 
such as Create Table, Insert Rows, Set Operators, Delete, and Update.
To enable pass-through processing for an SQL Join transformation, open the properties 
window for the transformation and specify Yes in the Pass Through property. The SQL 
Properties pane also contains the Target Table is Pass Through property, which 
determines whether explicit pass-through is active for the target table. This property 
enables the target to have the select rows inserted into the target within the explicit 
operation. This property is valid only when all the tables in the query, including the 
target, are on the same database server. The Target Table is Pass Through property has 
a corresponding property, named Target Table Pass Through Action. The Truncate 
option in this property is useful for DBMS systems that does not allow the target to be 
deleted or created. In this case, the only option is removing all of the rows. If Truncate 
is selected, all of the rows in the table are deleted. If the table does not exist, it is created.
Enabling Explicit Pass-Through Processing for SQL Join Transformations
477
.Net convert pdf to jpg - 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 image to jpg image; changing pdf to jpg file
.Net convert pdf to jpg - 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 to .jpg; .pdf to .jpg converter online
Using Properties Window Options to Optimize 
SQL Processing Performance
Problem
You want to set specific options in the SQL Properties pane or table properties panes 
that are located in the Designer window for an SQL Join transformation. These options 
are intended to improve the performance of SQL processes that are included in a SAS 
Data Integration Studio job.
Solution
Use one of the following techniques:
• “Bulk Load Tables” on page 478
• “Optimize the SELECT Statement” on page 479
• “Set Buffering Options” on page 479
• “Use Threaded Reads” on page 479
• “Write User-Written Code” on page 480
Tasks
Bulk Load Tables
The fastest way to insert data into a relational database when using the SAS/ACCESS 
engine is to use the bulk-loading capabilities of the database. By default, the 
SAS/ACCESS engines load data into tables by preparing an SQL INSERT statement, 
executing the INSERT statement for each row, and issuing a COMMIT. If you specify 
BULKLOAD=YES as a DATA step or LIBNAME option, then the database load utility 
is invoked. This invocation enables you to bulk load rows of data as a single unit, which 
can significantly enhance performance. You can set the BULKLOAD option on the 
Bulkload to DBMS property pane for the target table. Some databases require that the 
table be empty in order to load records with their bulk-load utilities. Check your 
database documentation for these restrictions.
For smaller tables, the extra overhead of the bulk-load process might slow performance. 
For larger tables, the speed of the bulk-load process outweighs the overhead costs. Each 
SAS/ACCESS engine invokes a different load utility and uses different options. For 
information about using the bulk-load option for each SAS/ACCESS engine, see the 
online documentation for each engine.
The Use Bulkload for Uploading and Bulkload Options properties are available on the 
properties window for each table in a query. The Use Bulkload for Uploading property 
applies to the source table. It is a valid option only when the source table is being 
uploaded to the DBMS to create a homogeneous join. The Bulkload to DBMS property 
applies to target tables and turns bulk loading on and off. The Bulkload to DBMS 
property is not valid when the Target Table is Pass Through property on the SQL 
Properties pane is set to Yes.
478
Chapter 21 1 • • Working with SQL Join Transformations
Online Convert Jpeg to PDF file. Best free online export Jpg image
So, feel free to convert them too with our tool. want to turn PDF file into image file format in C# application, then RasterEdge XDoc.PDF for .NET can also
convert pdf images to jpg; .pdf to .jpg online
Online Convert PDF to Jpeg images. Best free online PDF JPEG
We try to make it as easy as possible to convert your PDF files to JPG RasterEdge PDF to JPEG converting control SDK (XDoc.PDF for .NET) supports converting
convert pdf into jpg format; convert multiple pdf to jpg online
The option to bulk load tables applies only to source tables that are participating in a 
heterogeneous join. Also, the user must be uploading the table to the DBMS where the 
join is performed.
Optimize the SELECT Statement
If you set the Select * property to Yes in the Select Properties pane, a Select * statement 
selects all columns in the order in which they are stored in a table and then runs when 
the query is submitted. If you set the Select * property to No and enter only the columns 
that you need for the query in the SELECT statement, you can improve performance. 
You can also enhance performance by carefully ordering columns so that non-character 
columns (such as numeric, DATE, and DATETIME) come first and character columns 
come last.
Set Buffering Options
You can adjust I/O buffering. Set the Buffer Size property to 128 KB to promote fast 
I/O performance (or 64 KB to enhance large, sequential processes). The Buffer Size 
property is available in the SQL Properties pane. Other buffering options are database-
specific and are available in the properties pane for each of the individual tables in the 
query. For example, you can set the READBUFF option by entering a number in the 
Number of Rows in DBMS Read property in the properties pane, which buffers the 
database records read before passing them to SAS. INSERTBUFF is an example of 
another option that is available on some database management systems.
You should experiment with different settings for these options to find optimal 
performance for your query. These options apply to data sets. Therefore, do not specify 
them unless you know that explicit pass-through or implicit pass-through is not used on 
that portion of the query because they could actually slow performance. If these options 
are present in the query at all, they prevent implicit pass-through processing. If these 
options are present on the part that is being explicitly passed through, a database error 
occurs because the database cannot recognize these options.
For example, if the Target Table is Pass Through property on the SQL Properties pane 
is set to Yes, then using INSERTBUFF data set option on this target table causes an 
error on the database. If the Pass Through property in the SQL Properties pane is set to 
Yes and a number is specified in the Buffer Size property, then the database returns an 
error because it does not recognize this option in the query's FROM clause. To avoid the 
risk of preventing implicit pass-through, specify these options in the LIBNAME 
statement, which applies to all tables that use that LIBNAME and anything that accesses 
those tables. These buffering data set options are great performance boosters if the 
database records are all copied to SAS before the query runs in SAS (with no pass-
through) because it buffers the I/O between the database and SAS into memory.
Use Threaded Reads
Threaded reads divide resource-intensive tasks into multiple independent units of work 
and execute those units simultaneously. SAS can create multiple threads, and a read 
connection is established between the DBMS and each SAS thread. The results from 
each of these threads, know as a result set, is partitioned across the connections, and 
rows are passed to SAS simultaneously (in parallel) across the connections. This 
approach improves performance.
To perform a threaded read, SAS first creates threads, which are standard operating 
system tasks that are controlled by SAS, within the SAS session. Next, SAS establishes a 
DBMS connection on each thread. SAS then causes the DBMS to partition the result set 
and reads one partition per thread. To cause the partitioning, SAS appends a WHERE 
clause to the SQL so that a single SQL statement becomes multiple SQL statements, one 
for each thread. The DBSLICE option specifies user-supplied WHERE clauses to 
Using Properties Window Options to Optimize SQL Processing Performance
479
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.
best convert pdf to jpg; changing pdf to jpg on
C# Image Convert: How to Convert Adobe PDF to Jpeg, Png, Bmp, &
Copy the code below to your .NET project to pdf"; String outputFilePath = @"C:\output.bmp"; // Convert PDF to bmp C# sample code for PDF to jpg image conversion
convert pdf file to jpg file; to jpeg
partition a DBMS query for threaded reads. The DBSLICEPARM option controls the 
scope of DBMS threaded reads and the number of DBMS connections. You can enable 
threaded reads with the Parallel Processing with Threads property on the SQL 
Properties pane.
Write User-Written Code
The User Written property determines whether the query is user-written or generated. 
When the User Written property on the SQL Properties pane is set to Yes, you can edit 
the code on the Source tab, and the entire job is saved as user written. When the User 
Written property in the Where, Having, or Join Properties pane is set to Yes, you can 
then enter code directly into the field. Therefore, you can either write a new SQL query 
from scratch or modify a query that is generated when conditions are added to the top 
section of the Where/Having/Join tab. When User Written is set to No in any 
properties pane, the SQL field is read-only. It displays only the generated query. User-
written code can be used as a last resort because the code cannot be regenerated from the 
metadata when there are changes. The User Written property is available in the SQL 
Properties pane and in the Where/Having/Join Properties pane.
480
Chapter 21 1 • • Working with SQL Join Transformations
C# Image Convert: How to Convert Tiff Image to Jpeg, Png, Bmp, &
Of course, our XDoc.Converter for .NET still enables you to define a resolution for RasterEdge.XDoc.PDF.dll. This demo code will convert first page to jpeg image
c# pdf to jpg; convert pdf image to jpg image
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.
.net pdf to jpg; change from pdf to jpg on
Chapter 22
Working with Other SQL 
Transformations
About Other SQL Transformations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 481
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 481
Query Builder Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 482
Inserting Rows into a Target Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 483
Problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 483
Solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 484
Tasks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 484
Using the SQL Set Operators Transformation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 487
Problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 487
Solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 487
Tasks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 488
Enabling Explicit Pass-Through Processing for Other SQL Transformations . . 494
Problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 494
Solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 494
Tasks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 494
About Other SQL 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 SQL transformations 
other than the Join transformation.
In addition to the Join transformation, the SQL folder contains the following 
transformations:
Table 22.1 Other SQL Transformations
Name
Description
Create 
Table
Provides a simple SQL interface for creating tables.
481
C# TIFF: C#.NET Code to Convert JPEG Images to TIFF
Use C# Code to Convert Jpeg to Tiff. Jpeg image to Tiff image in your .NET application. string[] imagePaths = { @"C:\demo1.jpg", @"C:\demo2.jpg", @"C:\demo3.jpg
change file from pdf to jpg on; convert pdf photo to jpg
VB.NET PDF - Convert PDF with VB.NET WPF PDF Viewer
Convert PDF to image file formats with high quality, support converting PDF to PNG, JPG, BMP and GIF. VB.NET WPF PDF Viewer: Convert and Export PDF.
changing pdf to jpg; change pdf to jpg on
Name
Description
Delete
Generates a PROC SQL statement that deletes user-selected rows in a single 
target table. Supports delete, truncate, or delete with a WHERE clause. Also 
supports implicit and explicit pass-through.
Execute
Enables you to specify custom SQL code to be executed and provides SQL 
templates for supported databases.
Extract
Selects multiple sets of rows from a source and writes those rows to a target. 
Typically used to create one subset from a source. Can also be used to create 
columns in a target that are derived from columns in a source. For more 
information, see “Extracting Data from a Source Table” on page 692.
Insert Rows
Provides a simple SQL interface for inserting rows into a target table. For more 
information, see “Inserting Rows into a Target Table” on page 483.
Merge
Inserts new rows and updates existing rows using the SQL Merge DML 
command. The command was officially introduced in the SQL:2008 standard.
Set 
Operators
Enables you to use set operators to combine the results of table-based queries. 
For more information, see “Using the SQL Set Operators Transformation” on 
page 487.
Update
Updates user-selected columns in a single target table. The target columns can be 
updated by case, constant, expression, or subquery. Handles correlated 
subqueries.
Some functions in the Delete, Execute, Insert Rows, Merge, and Update transformations 
might work only when the table comes from a database management system that 
provides an implementation of an SQL command for which a SAS/ACCESS interface is 
available. One example is sort. You can use SAS tables and tables from database 
management systems that do not implement the SQL command, but these command-
specific functions might not work.
You should enable explicit pass-through processing when you connect a database 
management system table to the Create Table transformation, Delete transformation, 
Insert Rows transformation, and Update transformation. For more information, see 
“Enabling Explicit Pass-Through Processing for Other SQL Transformations” on page 
494.
See also the SQL-related usage notes in “General Usage Notes” on page 627. For 
information about the Join transformation, see “Working with SQL Join 
Transformations” on page 435.
Query Builder Window
The Query Builder window provides a convenient interface for creating SQL queries 
within transformations in SAS Data Integration Studio jobs. You can access the Query 
Builder or its components in the following transformations:
• Insert Rows — displays the Query Builder window when you click Edit Query on 
the Insert tab.
• Create Table — incorporates the tabs from the Query Builder window into its 
properties window.
482
Chapter 22 2 • • Working with Other SQL Transformations
• Additional SQL transformations that support subqueries include Delete, Update, and 
Merge. Note that the subquery version of the Query Builder window includes a 
Name (ALIAS) field. This field enables you to specify an alias for the subquery 
when it is used in a query.
The Query Builder window contains the following tabs:
Tabs
Description
Source
Identifies the tables used in a query. When 
multiple tables are selected, you can specify 
the join type and any applicable join 
conditions. Finally, you can create a subquery 
that you can use as the source of a query.
Note: In the Subquery window, tables from 
all database management systems are handled 
in the same way. The interface in the window 
does not change to reflect the differences in 
how the various database management 
systems implement the SQL MERGE 
command. Therefore, it is possible to generate 
invalid SQL Merge code by using features 
that are not supported by a specific database 
management system. When you encounter 
SQL Merge errors, review the log for the SAS 
Data Integration Studio job. Also, see the 
documentation for the database management 
system for information about its 
implementation of the SQL MERGE 
command.
Result
Maps source tables to a target table. The tab 
uses the standard SAS Data Integration Studio 
mapping component.
Filter and Sort
Filters and sorts query results.
Group
Groups query results. You can also use the tab 
to filter the groups with a HAVING clause.
Code
Manages the code that is generated.
Inserting Rows into a Target Table
Problem
You want to insert rows into a target table that is included in a SAS Data Integration 
Studio job.
Inserting Rows into a Target Table
483
Solution
You can use the Insert Rows transformation to create an SQL query that will insert the 
rows into the target table.
Perform the following tasks to insert the rows:
• “Create and Populate the Job” on page 484
• “Filter and Sort the Data” on page 485
• “Run the Job and Review the Results” on page 486
Insert Rows is one of the specialized transformations that are provided in the SQL folder 
in the SAS Data Integration Studio transformation tree.
The SQL folder is shown the following display:
Display 22.1 SQL Folder
These specialized transformations enable you to perform basic SQL tasks in SAS Data 
Integration Studio jobs. You can use the transformations to create tables, insert, merge, 
and delete rows, update columns, and execute custom SQL code. You can use the 
transformations in jobs in the same way that Insert Rows is used in the job described in 
this topic.
Tasks
Create and Populate the Job
Perform the following steps to create and populate a job that includes the Insert Rows 
transformation:
1. Create an empty job.
2. Select and drag an Insert Rows transformation from the SQL folder in the 
Transformations tree. Then, drop it in the empty job on the Diagram tab in the Job 
Editor window.
3. Select and drag the source table out of the Inventory tree. Then, drop it before the 
Insert Rows transformation on the Diagram tab. For example, you could add the 
flightdelays table, which contains data about delayed airlines flights, as the source 
table. The flightdelays table is a SQL Server table.
484
Chapter 22 2 • • Working with Other SQL Transformations
Note: You can also select the table by clicking the Select a table button next to the 
Table field on the Source tab.
4. Drag the cursor from the source table to the input port of the Insert Rows 
transformation. This action connects the sources to the transformation.
5. 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 Insert 
Rows transformation and click Replace in the pop-up menu. Then, use the Table 
Selector window to select the target table for the job. In this case, you want to insert 
selected rows into the SQL Server table flightdelays, so select it as the target table. 
The completed flow is shown in the following display:
Display 22.2 Insert Rows Job Flow
Note: If you need to use explicit pass-through, the source table and the target table 
must come from the same database management system. When you use implicit 
pass-through, the source table and the target table can come from different 
databases. You must use explicit pass-through if you need to sort the table on the 
Filter and Sort tab.
6. Open the properties window for the Insert Rows transformation.
7. Click Options and select Database pass-through.
8. Set the SQL procedure pass-through option to Yes. This setting enables the pass-
through processing supported by the database management system for the source and 
target tables.
Filter and Sort the Data
Perform the following steps to filter and sort the rows that you want to insert:
1. Click Insert. Then, click Edit Query to access the Query Builder window.
2. Click Filter and Sort.
3. Click New row above the Filter (WHERE) table to add a row to the table. Then, 
enter your filter conditions.
The filter conditions are shown in the following display:
Display 22.3 WHERE Filter Conditions
This target table will contain only those rows that have a destination of LAX and a 
delay of more than five minutes. Note that the operand ‘LAX’ is enclosed in single 
quotation marks. SAS Data Integration Studio cannot successfully generate code for 
a job that includes a database management system table in which the double 
Inserting Rows into a Target Table
485
quotation mark is used in the table name or the column names. The table that serves 
as the source and target for this job is a SQL Server table.
4. Click New row above the Sort (ORDER BY) table to add a row to the table. Then, 
enter your sort conditions.
The sort conditions are shown in the following display:
Display 22.4 Sort Conditions
This setting creates an ascending sort based that is on the Delay column.
Note: The sort function is supported only when explicit pass-through processing is 
enabled and the source and target tables come from Oracle, DB2, and SQL 
Server database management systems.
5. Click OK to save the query and return to the Insert tab. You can review the settings 
and mappings in the query on the tab.
The following display shows the portion of the SQL query that contains the filter and 
sort conditions:
Display 22.5 SQL Filter and Sort Code
6. Click OK to save the settings in the properties window and return to the job flow.
Run the Job and Review the Results
Perform the following steps to run the job and review the results.
1. Run the job.
2. If the job completes without error, right-click the target table icon and click Open.
486
Chapter 22 2 • • Working with Other SQL Transformations
Documents you may be interested
Documents you may be interested