Running the %INDTD_PUBLISH_MODEL Macro

Macro Run Process

To run the %INDTD_PUBLISH_MODEL macro, complete the following steps:
  1. Create a scoring model using SAS Enterprise Miner.
  2. Use the SAS Enterprise Miner Score Code Export node to create a score output directory and populate the directory with the score.sas file, the score.xml file, and, if needed, the format catalog.
  3. Test your connection to Teradata with a local utility such as BTEQ.
  4. Start SAS 9.2 and submit the following commands in the Program Editor or Enhanced Editor:
    %indtdpm;
    %let indconn = server="myserver" user="myuserid" password="xxxx"
        database="mydb";
    
    The %INDTDPM macro searches the autocall library for the indtdpm.sas file. The indtdpm.sas file contains all the macro definitions that are used in conjunction with the %INDTD_PUBLISH_MODEL macro. The indtdpm.sas file should be in one of the directories listed in the SASAUTOS= system option in your configuration file. If the indtdpm.sas file is not present, the %INDTDPM macro call (%INDTDPM; statement) issues the following message:
    macro indtdpm not defined
    The INDCONN macro variable is used to provide the credentials to connect to Teradata. You must specify server, user, password, and database to access the machine on which you have installed the Teradata EDW. You must assign the INDCONN macro variable before the %INDTD_PUBLISH_MODEL macro is invoked.
    Here is the syntax for the value of the INDCONN macro variable:
    SERVER="server " USER="user " PASSWORD="password " DATABASE="database";
    Tip
    The INDCONN macro variable is not passed as an argument to the %INDTD_PUBLISH_MODEL macro. This information can be concealed in your SAS job. For example, you can place it in an autoexec file and apply permissions on that file so that others cannot access the user credentials.
  5. Run the %INDTD_PUBLISH_MODEL macro.
    Messages are written to the SAS log that indicate the success or failure of the creation of the scoring functions.
    For more information, see %INDTD_PUBLISH_MODEL Macro Syntax.
Note: USER librefs that are not assigned to the WORK library might cause unexpected or unsuccessful behavior.

%INDTD_PUBLISH_MODEL Macro Syntax

%INDTD_PUBLISH_MODEL
(DIR=input-directory-path, MODELNAME=name
<, DATASTEP=score-program-filename>
<, XML=xml-filename>
<, DATABASE=database-name>
<, FMTCAT=format-catalog-filename>
<, ACTION=CREATE | REPLACE | DROP>
<, MODE=PROTECTED | UNPROTECTED>
<, OUTDIR=diagnostic-output-directory>
);
Arguments
DIR=input-directory-path
specifies the directory where the scoring model program, the properties file, and the format catalog are located.
This is the directory that is created by the SAS Enterprise Miner Score Code Export node. This directory contains the score.sas file, the score.xml file, and, if user-defined formats were used, the format catalog.
Requirement: You must use a fully qualified pathname.
Interaction: If you do not use the default directory that is created by SAS Enterprise Miner, you must specify the DATASTEP=, XML=, and, if needed, FMTCAT= arguments.
MODELNAME=name
specifies the name that is prepended to each output function to ensure that each scoring function name is unique on the Teradata database.
Restriction: The scoring function name is a combination of the model and the output variable names. The scoring function name cannot exceed 30 characters. For more information, see Scoring Function Names.
Requirement: The model name must be a valid SAS name that is ten characters or fewer. For more information about valid SAS names, see the topic on rules for words and names in SAS 9.2 Language Reference: Concepts.
Interaction: Only the EM_ output variables are published as Teradata scoring functions. For more information about the EM_ output variables, see Fixed Variable Names and Scoring Function Names.
DATASTEP=score-program-filename
specifies the name of the scoring model program file that was created by using the SAS Enterprise Miner Score Code Export node.
Default: score.sas
Restriction: Only DATA step programs that are produced by the SAS Enterprise Miner Score Code Export node can be used.
Interaction: If you use the default score.sas file that is created by the SAS Enterprise Miner Score Code Export node, you do not need to specify the DATASTEP= argument.
XML=xml-filename
specifies the name of the properties XML file that was created by the SAS Enterprise Miner Score Code Export node.
Default: score.xml
Restriction: Only XML files that are produced by the SAS Enterprise Miner Score Code Export node can be used.
Restriction: The maximum number of output variables is 128.
Interaction: If you use the default score.xml file that is created by the SAS Enterprise Miner Score Code Export node, you do not need to specify the XML= argument.
DATABASE=database-name
specifies the name of a Teradata database to which the scoring functions and formats are published.
Interaction: The database that is specified by the DATABASE argument takes precedence over the database that you specify in the INDCONN macro variable. For more information, see Macro Run Process.
Tip
You can publish the scoring functions and formats to a shared database where other users can access them.
FMTCAT=format-catalog-filename
specifies the name of the format catalog file that contains all user-defined formats that were created by the FORMAT procedure and that are referenced in the DATA step scoring model program.
Restriction: Only format catalog files that are produced by the SAS Enterprise Miner Score Code Export node can be used.
Interaction: If you use the default format catalog that is created by the SAS Enterprise Miner Score Code Export node, you do not need to specify the FMTCAT= argument.
Interaction: If you do not use the default catalog name (FORMATS) or the default library (WORK or LIBRARY) when you create user-defined formats, you must use the FMTSEARCH system option to specify the location of the format catalog. For more information, see PROC FORMAT in the Base SAS 9.2 Procedures Guide.
ACTION=CREATE | REPLACE | DROP
specifies one of the following actions that the macro performs:
CREATE creates a new function.
REPLACE overwrites the current function, if a function by the same name is already registered.
DROP causes all functions for this model to be dropped from the Teradata database.
Default: CREATE
Tip
If the function has been previously defined and you specify ACTION=CREATE, you will receive warning messages from Teradata. If the function has been previously defined and you specify ACTION=REPLACE, no warnings are issued.
MODE=PROTECTED | UNPROTECTED
specifies whether the running code is isolated in a separate process in the Teradata database so that a program fault will not cause the database to stop.
Default: PROTECTED
Tip
After a function is validated in PROTECTED mode, it can be republished in UNPROTECTED mode. This could result in a significant performance gain.
OUTDIR=diagnostic-output-directory
specifies a directory that contains diagnostic files.
Files that are produced include an event log that contains detailed information about the success or failure of the publishing process and sample SQL code (SampleSQL.txt). For more information about the SampleSQL.txt file, see Scoring Function Names.
Tip: This argument is useful when testing your scoring models.

Modes of Operation

The %INDTD_PUBLISH_MODEL macro has two modes of operation: protected and unprotected. You specify the mode by setting the MODE= argument.
The default mode of operation is protected. Protected mode means that the macro code is isolated in a separate process in the Teradata database, and any error does not cause the database to stop. It is recommended that you run the %INDTD_PUBLISH_MODEL macro in protected mode during acceptance tests.
When the %INDTD_PUBLISH_MODEL macro is ready for production, you can run the macro in unprotected mode. Note that you could see a performance advantage when you run in unprotected mode.

Model Publishing Example

%indtdpm;
%let indconn = server="terabase" user="user1" password="open1" database="mydb";
%indtd_publish_model( dir=C:\SASIN\baseball1, modelname=baseball1);
This sequence of macros generates a separate .c file for each output parameter of interest. Each output stub calls into a shared scoring main which is compiled first. The %INDTD_PUBLISH_MODEL macro also produces a text file of Teradata CREATE FUNCTION commands as shown in the following example.
Note: This file is shown for illustrative purposes. The text file that is created by the %INDTD_PUBLISH_MODEL macro cannot be viewed and is deleted after the macro is complete.
CREATE FUNCTION baseball1_EM_eventprobablility
(
"CR_ATBAT" float,
"CR_BB" float,
"CR_HITS" float,
"CR_HOME" float,
"CR_RBI" float,
"CR_RUNS" float,
"DIVISION" varchar(31),
"LEAGUE" varchar(31),
"NO_ASSTS" float,
"NO_ATBAT" float,
"NO_BB" float,
"NO_ERROR" float,
"NO_HITS" float,
"NO_HOME" float,
"NO_OUTS" float,
"NO_RBI" float,
"NO_RUNS" float,
"YR_MAJOR" float
)
RETURNS float
LANGUAGE C
NO SQL
PARAMETER STYLE SQL
NOT DETERMINISTIC
CALLED ON NULL INPUT
EXTERNAL NAME 'SL!"jazxfbrs"'
'!CI!tkcsparm!c:\SASIN\baseball1\tkcsparm.h'
'!CS!baseball1_EM_eventprobability!c:\SASIN\baseball1\EM_eventprobability.c';
After the scoring functions are installed, they can be invoked in Teradata using SQL, as illustrated in the following example. Each output value is created as a separate function call in the select list.
select baseball1_EM_eventprobability
( 
"CR_ATBAT",
"CR_BB",
"CR_HITS",
"CR_HOME",
"CR_RBI",
"CR_RUNS",
"DIVISION",
"LEAGUE",
"NO_ASSTS",
"NO_ATBAT",
"NO_BB",
"NO_ERROR",
"NO_HITS",
"NO_HOME",
"NO_OUTS"
) as homeRunProb from MLBTera;