SUPPORT / SAMPLES & SAS NOTES
 

Support

Usage Note 42419: Understanding what affects performance when generating queries based on SAS® Information Maps in SAS® Enterprise Guide®

DetailsAboutRate It

Overview

Typically, querying an information map in SAS Enterprise Guide (or the SAS® Add-In for Microsoft Office) is slower than querying the information map in SAS® Web Report Studio or SAS® Information Map Studio. There are several reasons for the performance differences. Most of these differences are not visible to the end-user.

  1. By default, SAS Enterprise Guide uses a standard workspace server, and SAS Information Map Studio and SAS Web Report Studio use a pooled workspace server. A standard workspace server must start a new SAS session as needed. When a pooled workspace server is used, a pool typically has a SAS session already running.
  2. In SAS Enterprise Guide 4.2 and later, several queries are submitted to get the variable names, filter names, and prompts associated with the information map. This information is retrieved from SAS dictionary tables.
  3. The code generated in SAS Enterprise Guide to retrieve the information map is DATA step code. In order to create the result set that is used as input to the DATA step code, PROC SQL code must first retrieve the result set.
  4. In many cases, the PROC SQL is processed in workspace server session that is local to SAS Enterprise Guide. However, in some cases, the PROC SQL is processed in a pooled workspace server session that is not local to SAS Enterprise Guide. When this "remote" processing occurs, the following message appears in the log.
  5. The Information Maps LIBNAME Engine is retrieving data via a remote connection. Performance is not optimized.

    For example, remote processing occurs in all of the following circumstances:

    • when an information map includes a stored process.
    • Note: There are several papers that discuss using a stored process to improve performance for information maps. The suggestions in these papers do not apply when the information map is being accessed via the SAS Information Maps LIBNAME Engine. For example, it might take more than 30 minutes to return 1 million rows from an information map that includes a stored process. Instead, these papers are specific to using information maps in applications such as SAS Web Report Studio.

    • when the user who is logged into SAS Enterprise Guide does not have permission to read the underlying data (see SAS Note 38948).
    • when a libref for third-party data cannot be assigned locally.

Note: The pooled workspace server is also used to populate dynamic prompts, unless there is no pooled workspace server available to the user.

Other issues that affect performance

The following two SAS notes explain two additional performance issues that you might encounter.

How to gather additional information about processing time

One way to see how the processing time is being used is to turn on the SASTRACE system option. One example is shown below.

 options sastrace='d' sastraceloc=saslog nostsuffix; 

With the SASTRACE option set, the SAS log shows the PROC SQL statements that are used to create the result set from the information map. The log also shows how much time is being used to retrieve information from the SAS dictionary table.

For more information about the SASTRACE option, see SASTRACE= System Option .

Another way to see how the processing time is being used is to submit the following code in SAS Enterprise Guide. Make sure to change the values for MapFolder, MapName, and Server. Enclose MapFolder and MapName within quotation marks.

/* Uncomment the following line for extreme INFOMAPS engine detail */
   *options sastrace='d,,d,sa' sastraceloc=saslog nostsuffix;

/* Replace these three macro values with your MapFolder and MapName
   within quotation marks. Also specify a Server (no quotation marks 
   are necessary for the server name) */
%let MapFolder = "/Shared Data/Maps";
%let MapName = "mymap";
%let Server = yourservername;


%put %sysfunc(time(), timeampm12.): Starting session;
proc javainfo; run;
%put %sysfunc(time(), timeampm12.): Java Runtime loaded;
%put &SYSVLONG4;

%put %sysfunc(time(), timeampm12.): Assigning INFOMAPS library;
sysecho "Assigning library for information map";
libname imaplib sasioime 
	 mappath=&MapFolder
	 aggregate=yes
	 metacredentials=no
	 metaserver=&server
         metaport=8561
	 PRESERVE_MAP_NAMES=YES; 
/* NOTE: When using this LIBNAME statement in a batch environment,  */
/* you might need to add metadata host and credentials information. */

%put %sysfunc(time(), timeampm12.): Library assignment complete;

proc sql noprint; 
	drop table imapitems;

%put %sysfunc(time(), timeampm12.): Discovering Map MEMBER name;
*sysecho "Discovering information map member name";
SELECT imap.memname into :_im_memname
	from dictionary.infomaps as imap
	where imap.mapname=&MapName;
	
%put %sysfunc(time(), timeampm12.): Query for Map Data Items;
sysecho "Gathering information map data items";
create table imapitems as 
     SELECT  d.dataitemname, d.name, d.id, d.path, d.description, c.label, d.class, c.type, c.length, c.format, c.informat, c.npos	 
		FROM dictionary.dataitems as d, dictionary.columns as c
		WHERE (d.libname=c.libname and d.memname=c.memname and c.name=d.name) 
			and (d.libname ="IMAPLIB" and d.memname="%trim(%superq(_im_memname))")
			and (d.isusable="YES")
		ORDER BY c.npos;
quit;
%put %sysfunc(time(), timeampm12.): Query Complete;

The result of running this code are various timestamps throughout the log that look like the following:

3:44:24 PM: Starting session
...
...
3:44:24 PM: Assigning INFOMAPS library
... ... 3:44:27 PM: Library assignment complete
... ... 3:44:27 PM: Discovering Map MEMBER name
... ... 3:44:31 PM: Query for Map Data Items
... ... 3:44:31 PM: Query Complete

Tips for improving performance

For information about how to optimize performance when accessing information maps using the engine, see the documentation for the version of SAS that you are using.



Operating System and Release Information

Product FamilyProductSystemProduct ReleaseSAS Release
ReportedFixed*ReportedFixed*
SAS SystemSAS Enterprise GuideMicrosoft® Windows® for x644.29.2 TS2M3
Microsoft Windows Server 2003 Datacenter Edition4.29.2 TS2M3
Microsoft Windows Server 2003 Enterprise Edition4.29.2 TS2M3
Microsoft Windows Server 2003 Standard Edition4.29.2 TS2M3
Microsoft Windows Server 2003 for x644.29.2 TS2M3
Microsoft Windows Server 20084.29.2 TS2M3
Microsoft Windows Server 2008 for x644.29.2 TS2M3
Microsoft Windows XP Professional4.29.2 TS2M3
Windows 7 Enterprise 32 bit4.29.2 TS2M3
Windows 7 Enterprise x644.29.2 TS2M3
Windows 7 Home Premium 32 bit4.29.2 TS2M3
Windows 7 Home Premium x644.29.2 TS2M3
Windows 7 Professional 32 bit4.29.2 TS2M3
Windows 7 Professional x644.29.2 TS2M3
Windows 7 Ultimate 32 bit4.29.2 TS2M3
Windows 7 Ultimate x644.29.2 TS2M3
Windows Vista4.29.2 TS2M3
Windows Vista for x644.29.2 TS2M3
* For software releases that are not yet generally available, the Fixed Release is the software release in which the problem is planned to be fixed.