Built-in functions
 PMML3.0 Menu Home PMML Notice and License Changes Conformance General Structure Header Data Dictionary Mining Schema Transformations Statistics Taxomony Targets Output Functions Built-in Functions Model Composition Model Verification Association Rules Cluster Models General Regression Naive Bayes Neural Network Regression Ruleset Sequences Text Models Trees Vector Machine

## PMML 3.0 - Built-in functions

Almost all programming languages come with a set of predefined functions that perform low-level operations. PMML has a similar set of functions.

The definitions of functions in PMML generally follow the design of functions and operators in XQuery. Further ideas are taken from MathML , XPath, , Java Date formats .

### +, -, * and /

Functions for simple arithmetics.

Pseudo-declaration of PMML built-in function +:

 ``` ... implementation built-in ... ```
The functions -, *, and / are defined in the same way and have two parameters.

Example: Return the difference between input fields named A, B.

 ``` ```
Assuming A=2.5 and B=4 the result corresponding to this Apply element is -1.5.

### min, max, sum and avg

Returns an aggregation of a variable number of input fields.

Pseudo-declaration of PMML built-in function min:

 ``` The function takes a variable number of as parameters ... implemention built-in ... ```
The aggregation functions max, sum, and avg are defined in the same way. Note that the number of input parameters is variable but these functions do not aggregate values coming from multiple input records.

Example: Return the minimum value of input fields named A, B, and C.

 ``` ```
Assuming A=2.5 and B=4 and C=1.5 the result corresponding to this Apply element is 1.5.

### log10, ln, sqrt, abs

Further mathematical functions.

Pseudo-declaration of PMML built-in function log10:

 ``` ... implemention built-in ... ```
The function log10 returns the logarithm to the base 10. The functions ln (natural log), sqrt (square root), and abs (absolute value) are defined in the same way. Semantics are as usual. See also MathML.

Example: Return the logarithm to the base 10 of an input field A.

 ``` ```
Assuming A=2.5 the result corresponding to this Apply element is approx. 0.397940008672038.

### uppercase

Returns a string where all lowercase characters in the input string are replaced by their uppercase variants.

Pseudo-declaration of PMML built-in function uppercase:

 ``` ... implemention built-in ... ```
The function uppercase uses the Unicode definitions for classifying characters as uppercase / lowercase. See XQuery fn:upper-case

Example: Return the field Str with all characters in upper case.

 ``` ```
Assuming Str="aBc9" the result corresponding to this Apply element is "ABC9".

### substring

Extracts a substring from an input string.

Pseudo-declaration of PMML built-in function substring:

 ``` ... See XQuery fn:substring ... ```
`startPos` and `length` must be integers. The first character of a string is located at position 1 (not position 0).

Example: Return the 3 characters of field Str beginning at position 2.

 ``` 2 3 ```
Assuming Str="aBc9x" the result corresponding to this Apply element is "Bc9".

### trimBlanks

Returns a string where leading and trailing characters in the input string are removed. Note that trailing blanks in PMML, by definition, are not significant when strings are compared.

Pseudo-declaration of PMML built-in function trimBlanks:

 ``` ... implemention built-in ... ```
Blanks include tab and newline characters. Use definitions according to Unicode.

Example: Trim blanks of field Str.

 ``` ```
Assuming Str=" aBc9x " the result corresponding to this Apply element is "aBc9x".

### formatNumber

Formats numbers according to a pattern. The pattern uses the Posix descriptors as used, e.g., in the C function printf.

Pseudo-declaration of PMML built-in function formatNumber:

 ``` ... implemention built-in ... ```

Example: Convert a number in the field Num into a string of length 3 with leading blanks.

 ``` %3d ```
Assuming Num=2 the result corresponding to this Apply element is the string " 2".

### formatDatetime

Formats date and time value according to a pattern. The pattern is a Posix descriptors as used, e.g., in the C function strftime or the Unix command date. See, e.g., Posix datetime descriptors

Pseudo-declaration of PMML built-in function formatDatetime:

 ``` ... implemention built-in ... ```
`input` must be a date or time or dateTime.

Example: Format a date value as 'Month/Day/Year'.

 ``` %m/%d/%y ```
With `StartDate` being the date August 20th, 2004 the result is `StartDateUS="08/20/04"`.

### dateDaysSinceYear

Function for transforming dates into integers.

Pseudo-declaration of PMML built-in function dateDaysSinceYear:

 ``` ```
`input` must be of datatype date or dateTime.

Example: Calculate days since 1970.

 ``` 1970 ```

### dateSecondsSinceYear

Function for transforming dates into integers.

Pseudo-declaration of PMML built-in function dateSecondsSinceYear:

 ``` ```
`input` must be of datatype date or dateTime. If input is of datatype date, it is assumed that the time is 00:00:00 at this date.

Example: Create a new field PurchaseDateSeconds from the PurchaseDate attribute relative to the year 1970.

 ``` 1970 ```

### dateSecondsSinceMidnight

Function for transforming dates into integers.

Pseudo-declaration of PMML built-in function dateSecondsSinceMidnight:

 ``` ```
`input` must be of datatype time or dateTime.

Example: Create a new field PurchaseDateSeconds from the PurchaseDate attribute relative to midnight.

 ``` ```

 e-mail info at dmg.org