3 Overview of the Components of a Pipeline

A Oracle Stream Analytics pipeline is comprised of many components that define the pipeline.

These components are described in the following topics:

3.1 Understanding Query Stage

A query stage is used to configure a SQL-like query on the data stream and comprises additional sources for joins, filters, summaries, group by, time windows, and so on.

For example, the query below calculates hourly total sales where transaction amount is greater than a dollar and outputs the result every 1 second.

Select sum (TransactionAmount) As HourlySales
From SalesStream [Range 1 Hour Slide 1 Second]
Where TransactionAmount > 1

Queries like above or more complex queries can all be configured in the query stage with zero coding and with no intimate knowledge of Continuous Query Language or CQL. The CQL language is similar to SQL but with additional constructs for temporal analytics and pattern matching.

A query stage has the following sub sections:

  • Filters

  • Correlation

  • Summary/Group By

  • Window Type - Range and Evaluation Frequency

  • Visualizations

3.1.1 What is Filter

The filter section in a query stage or query group stage allows events in the data stream to be filtered out.

Only events which satisfy the filter condition are passed to the downstream stage. For example, in a data stream containing SensorId and Temperature, you can filter events where Temperature is lower than or equal to 70 degrees by setting the filter condition to Temperature > 70.

3.1.2 What is Correlation

A correlation is used to enrich the incoming event in the data stream with static data in a database table or with data from other streams.

For example, if the event in the data stream only includes SensorId and Sensor Temperature, the event could be enriched with data from a table to obtain SensorMake, SensorLocation, SensorThreshold, and many more.

Correlating an event with other sources requires the join condition to be based on a common key. In the above example, the SensorId from the stream cand be used to correlate with SensorKey in the database table. The following query illustrates the above data enrichment scenario producing sensor details for all sensors whose temperature exceeds their pre-defined threshold.

Select T.SensorId, T.Temperature, D.SensorName, D.SensorLocation
From TemperatureStream[Now] T, SensorDetailsTable D
Where T.SensorId = D.SensorKey And T.Temperature > D.SensorThreshold

Queries like above and more complex queries can be automatically generated by configuring sources and filter sections of the query stage.

3.1.3 What is Summary

A data stream is a continuous sequence of events but we can summarize the data over any time range including an unbounded range.

For example, you can continuously compute the maximum temperature for each sensor from the beginning of time by configuring a query like the one below in a Query stage.

Select SesnsorId, max(Temperature)
From TemperatureStream
Group By SensorId

3.1.4 What is Group By

A group by collects the data of all the rows with an identical column value. Group by is used in conjunction with Summaries (aggregate functions) to provide information about each group.

Here is an example configuration that generates a query for computing the average temperature of each sensor at the end of the hour and using readings from last one hour.

Select SesnsorId, avg(Temperature)
From TemperatureStream [Range 1 Hour Slide 1 Hour]
Group By SensorId

Example

If you add multiple group bys, the data is grouped on multiple columns. For example, you have a stream that gives you sales numbers for geographical locations. You have the following columns BEFORE group by:

COUNTRY     CITY       REVENUE
US            SF          500
US            NY          1000
INDIA        BOMBAY    800
INDIA        BOMBAY    1500
INDIA        BOMBAY    700
.........

Calculate sum of revenue (summary) by country (groupby) to get:

COUNTRY     SUM_OF_REVENUE
US            1500
INDIA        3000

Add CITY as another group by, to get your aggregations grouped by city in addition to country:

COUNTRY        CITY          SUM_OF_REVENUE
US               NY             1000
US               SF             500
INDIA           BOMBAY      1500
INDIA          BANGALORE   1500

3.1.5 What is Retain All Columns

The Retain All Columns is feature to allow the fields that are not in summary and group by be present in the output. The values of the retained columns(or fields) are the values of the last event in the stream.

3.1.6 What is Range

A range is a window applied on the data stream. Since data stream is an unbounded sequence of events it is often necessary to apply a window when computing aggregates.

Examples of ranges include – Last 1 Hour of events, Last 5 Minutes of events, Last 10 Events, and many more. Applying a range retains data in memory so be cautious with use of window ranges. For example, if data is arriving at the rate of 2000 events per second and if each event is 1KB then we have 2MB of data per second. Applying a 1-hour window on this data stream consumes 2MB times 3600 or 7.2GB of memory.

The supported time units in a range are:

  • now

  • nanoseconds

  • microseconds

  • milliseconds

  • seconds

  • minutes

  • hours

  • events

3.1.7 What is Evaluation Frequency

Evaluation Frequency or a Window Slide (commonly referred to) determines the frequency at which results are desired.

For example, the configured query below outputs total sales every 1 second but using transactions from last 1 hour.

Select sum (TransactionAmount) As HourlySales
From SalesStream [Range 1 Hour Slide 1 Second]

In other words, Evaluation Frequency determines how often you want to see the results. In the above query, if result is only desired at the end of the hour then we set the Evaluation Frequency to 1 hour.

3.1.8 What is Visualization

Visualizations are graphical representation of the streaming data in a pipeline. You can add visualizations on all stages in the pipeline except a target stage.

Select an appropriate visualization from the following available options, that suits your requirement.

  • Bar

  • Line

  • Geo Spatial

  • Area

  • Pie

  • Scatter

  • Bubble

  • Thematic Map

  • Stacked Bar

  • Table

3.2 Understanding Rules

A rule is a set of conditions applied to the incoming stream and a set of actions performed on the stream when conditions are true. Each event is analyzed independently of other events.

For example, assume that your stream is a stream from pressure sensors and has the following fields:

  • sensor_id

  • pressure

  • status

If you want to assign a status value based on the pressure, you can define the following rules:

  • if the pressure is less than or equal to 50, the status must be set to GREEN

  • if the pressure is between 50 and 100, the status must be set to YELLOW

  • if the pressure is greater than 100, the status must be set to RED.

3.3 Understanding Rule Stage

A rule stage is a stage in the pipeline where you apply conditional (IF - THEN) logic to the events in the stream. You can check for specific conditions and assign values to fields based on the results of your checks.

You can add multiple rules to the stage and they will get applied to pipeline in the sequence they are added. A rule is a set of conditions applied to the incoming stream and a set of actions performed on the stream when conditions are true. Each event is analyzed independently of other events.

3.4 Understanding Pattern Stage

Patterns are a stage within a pipeline. When working from a pattern, you need to specify a few key fields to discover an interesting result. You can create pattern stages within the pipeline. Patterns are not stand-alone artifacts. They need to be embedded within a pipeline.

3.5 Understanding Custom Stage

Custom Stage is a type of stage where you can apply custom Java/Scala code to streaming data in the pipeline. It behaves like any other type of stage with data flowing into and out of it. It is close to a pattern stage in the way that you are asked to configure a few parameters before its logic applies to the stream.

3.6 Understanding Scoring Stage

Scoring Stage is a type of stage where you apply a machine learning model to your streaming data to do predictive analysis. Scoring Stage is the infrastructure that Oracle Stream Analytics provides to data scientists for machine learning model deployment against streaming data.

3.7 Understanding Query Group

A query group stage lets you do aggregations on multiple group bys and multiple windows. It is a collection of groups, where each of the group has its own window, filters that affect the data processing only within that group.

A query group has two types of stages:

  • Stream

  • Table

3.7.1 What is Query Group Stage: Stream?

A query group stage of the type stream is where you can apply aggregate functions with different group-bys and window ranges to your streaming data. You can have multiple query groups in one stage.

3.7.2 What is Query Group Stage: Table?

A query group stage of the type table is where you can apply aggregate functions with different group bys and window ranges to a database table data recreated in memory. Use this stage on a change data capture stream, such as GoldenGate. You can have multiple query groups in one stage.

3.8 Understanding the Live Output Table

The Live Output table is the main feedback mechanism from the pipelines that you build. The Live Output table will display events that go out of your pipeline, after your processing logic has been applied on the incoming stream or streams.

The Live Output table will be displayed for each stage of your pipeline and will include output of that particular stage. On the source stage the Live Output table will display events as they arrive in the stream. On the target stage, the Live Output stage will display events as they will flow to the target.

The Live Output table is also a powerful tool for event shape manipulation. With the Live Output table you can:

  • Add new fields to the event using an extensive library of functions in the expression builder, and remove new fields

  • Change the order of the event fields

  • Rename event fields

  • Remove existing fields from the output of the stage

  • Add a timestamp field to each event

  • Hide fields from view (but retain them in the output)

  • Pause and restart event display in the browser (not affecting downstream stages or targets)

The interaction with the table should be intuitively clear to anyone who has worked with popular spreadsheet pipelines.

Expression Builder

The expression builder provides functionality to add new fields to your output based on existing fields. You can use a rich library of functions to manipulate your event data. A simple example is string concatenation; you can construct a full name from first and last names:

Description of string_concat.png follows
Description of the illustration string_concat.png

Note:

The event shape manipulation functionality is available on the table in the query stage.

The expression builder has syntax highlighting and code completion. You can also see the function signature, input parameters and the return value in the Expression Editor.

Description of concat_details.png follows
Description of the illustration concat_details.png

3.9 Understanding Visualizations

Visualization is mapping of the data (information) to a graphical or tabular format which can be used to answer a specific analytical question.

It translates data, its properties and relationships into an easy to interpretable visual object consisting of points, lines, shapes and colors. It effectively represents the results of the meaningful multi-dimensional questions. It also enables to discover the influential patterns out of the represented data (information) using the visual analysis.

Visualizations

Visualizations are divided into two categories:

  • Axis based

    Axis based visualizations display series and groups of data. Series and groups are analogous to the rows and columns of a grid of data. Typically, the rows in the grid appear as a series in visualization, and the columns in the grid appear as groups.

    Axis based visualizations enables users to visualize the data along two graph axis x and y like sum of sales over regions or sum of sales over time period. X axis values can be categorical in nature like regions or can be based on time series values whereas Y axis represents the measured value like sum(sales). These charts are useful for visualizing trends in a set of values over time and comparing these values across series.

  • Spatial

    Spatial visualizations are used when geography is especially important in analyzing an event. It represents business data superimposed on a single geo fence.

3.9.1 What is a Bar Type of Visualization?

Bar visualization is one of the widely used visualization types which represents data as a series of vertical bars. It is best suited for comparison of the values represented along y axis where different categories are spread across x axis. In a Bar visualization vertical columns represent metrics (measured values). The horizontal axis displays multiple or non-consecutive categories.

In Horizontal Bar, the axis positions are switched. The vertical axis displays multiple or non-consecutive categories. The horizontal columns represents metrics (measured values). It is preferable when the category names are long text values and requires more space in order to be displayed.

3.9.2 What is a Line Type of Visualization?

Line visualization represents data as a line, as a series of data points, or as data points that are connected by a line. Line visualization require data for at least two points for each member in a group. The X-axis is a single consecutive dimension, such as a date-time field, and the data lines are likely to cross. X axis can also have non date-time categories. Y axis represents the metrics (measured value). It is preferred to use line visualization when data set is continuous in nature. It is best suited for trend-based plotting of data over a period of time. In Line visualization, emphasis is on the continuation or the flow of the values (a trend) but individual value comparison can also be carried out. Multiple series can also be compared with the line visualizations.

It can have a horizontal orientation where axis are switched i.e. y axis holds categories whereas x axis shows metrics.

3.9.3 What is An Area Type of Visualization?

Area visualization represents data as a filled-in area. Area visualization requires at least two groups of data along an axis. The X-axis is a single consecutive dimension, such as a date-time field, and the data lines are unlikely to cross. Y axis represents the metrics (measured value). X axis can also have non date-time categories. This visualization is mainly suitable for presenting accumulative value changes over time.

It can have a horizontal orientation where axis are switched i.e. y axis holds categories whereas x axis shows metrics.

3.9.4 What is a Stacked Bar Type of Visualization?

A Stacked visualization displays sets of values stacked in a single segmented column instead of side-by-side in separate columns. It is used to show a composition. Bars for each set of data are appended to previous sets of data. The size of the stack represents a cumulative data total.

3.9.5 What is a Spatial Type of Visualization?

Geo Spatial visualization allows displaying location of an object on a geo fence and takes user to the area where events are occurring. User can configure visualization to specify latitude, longitude, identifier etc. Customization of visualization by specifying different pins like arrows with different colors based on certain condition is also allowed.

3.9.6 What is a Pie Chart?

A pie chart is a circular graphic divided into slices that indicate numerical proportions. The arc length of each slice is proportionate to the quantity it represents.

You can use Pie charts to compare parts of a whole.

3.9.7 What is a Bubble Chart?

A bubble chart displays three dimensions of data. Each entity with its several versions (mostly three) of associated data is plotted as a disk. This disk shows two of the vi values through the disk's xy location and the third through its size.

3.9.8 What is a Thematic Map?

A thematic map focuses on a specific theme or subject area. It includes some locational or reference information and emphasizes spatial variation of one or a small number of geographic distributions. These distributions may be physical phenomena such as climate, population density, traffic congestion, and so on.

3.9.9 What is a Scatter Chart?

A scatter chart is a mathematical diagram that uses Cartesian coordinates to display values for multiple variables for a set of data. You can color code the points to display data for an additional variable. This chart shows how much one variable is affected by another. The relationship between two variables is called their correlation.

3.10 Understanding the Topology Viewer

Topology is a graphical representation and illustration of the connected entities and the dependencies between the artifacts.

3.10.1 What is Immediate Family?

Immediate Family context displays the dependencies between the selected entity and its child or parent.

The following figure illustrates how a topology looks in the Immediate Family.

Description of topology_viewer_immediate.png follows
Description of the illustration topology_viewer_immediate.png

3.10.2 What is Extended Family?

Extended Family context displays the dependencies between the entities in a full context, that is if an entity has a child entity and a parent entity, and the parent entity has other dependencies, all the dependencies are shown in the Full context.

The following figure illustrates how a topology looks in the Extended Family.

Description of topology_viewer_full.png follows
Description of the illustration topology_viewer_full.png

3.11 Understanding Expression Builder Functions

Only Oracle user-managed services This topic applies only to Oracle user-managed services.

Expression Builder is an editor that allows you to build expressions using various existing functions. The expressions help you in achieving the required results for your pipelines.

Topics:

3.11.1 What are Bessel Functions?

The mathematical cylinder functions for integers are known as Bessel functions.

The following Bessel functions are supported in this release:
Function Name Description

BesselI0(x)

Returns the modified Bessel function of order 0 of the double argument as a double

BesselI0_exp(x)

Returns the exponentially scaled modified Bessel function of order 0 of the double argument as a double

BesselI1(x)

Returns the modified Bessel function of order 1 of the double argument as a double

BesselI1_exp(x)

Returns the exponentially scaled modified Bessel function of order 1 of the double argument as a double

BesselJ(x,x)

Returns the Bessel function of the first kind of order n of the argument as a double

BesselK(x,x)

Returns the modified Bessel function of the third kind of order n of the argument as a double

BesselK0_exp(x)

Returns the exponentially scaled modified Bessel function of the third kind of order 0 of the double argument as a double

BesselK1_exp(x)

Returns the exponentially scaled modified Bessel function of the third kind of order 1 of the double argument as a double

BesselY(x)

Returns the Bessel function of the second kind of order n of the double argument as a double

3.11.2 What are Conversion Functions?

The conversion functions help in converting values from one data type to other.

The following conversion functions are supported in this release:

Function Name Description

bigdecimal(value1)

Converts the given value to bigdecimal

boolean(value1)

Converts the given value to logical

date(value1,value2)

Converts the given value to datetime

double(value1)

Converts the given value to double

float(value1)

Converts the given value to float

int(value1)

Converts the given value to integer

long(value1)

Converts the given value to long

string(value1,value2)

Converts the given value to string

3.11.3 What are Date Functions?

The following date functions are supported in this release:

Function Name Description

day(date)

Returns day of the date

eventtimestamp()

Returns event timestamp from stream

hour(date)

Returns hour of the date

minute(date)

Returns minute of the date

month(date)

Returns month of the date

nanosecond(date)

Returns nanosecond of the date

second(date)

Returns second of the date

systimestamp()

Returns the system’s timestamp on which the application is running

timeformat(value1,value2)

Returns the provided timestamp in required time format

timestamp()

Returns the current output time

year(date)

Returns year of the date

3.11.4 What are Geometry Functions?

The Geometry functions allow you to convert the given values into a geometrical shape.

The following interval functions are supported in this release:

Function Name Description

CreatePoint(lat,long,SRID)

Returns a 2–dimensional point type geometry from the given latitude and longitude. The default SRID is 8307.

The return value is of the datatype sdo geometry.

distance(lat1,long1,lat2,long2,SRID)

Returns distance between the first set of latitude, longitude and the second set of latitude, longitude values. The default SRID is 8307.

Note:

Only SRID 8307 is supported in the current release.

The return value is of the datatype double.

3.11.5 What are Interval Functions?

The Interval functions help you in calculating time interval from given values.

The following interval functions are supported in this release:

Function Name Description

dsintervaltonum (c1 INTERVAL DAY TO SECOND, c2 char)

Converts the given value to a numeric value. User must provide unit for the output numeric value as second argument to this function. Allowed values for the unit is: DAY,HOUR,MINUTE,SECOND

numtodsinterval(n,interval_unit)

Converts the given value to an INTERVAL DAY TO SECOND literal. The value of the interval_unit specifies the unit of n and must resolve to one of the string values: DAY, HOUR, MINUTE, or SECOND.

The return value is of the datatype interval.

numtoyminterval(n,interval_unit)

Converts the given value to an INTERVAL YEAR TO MONTHliteral. The value of the interval_unitspecifies the unit of nand must resolve to one of the following string values: YEAR, MONTH.

to_dsinterval(string)

Converts a string in format DD HH:MM:SS into a INTERVAL DAY TO SECOND data type. The DD indicates the number of days between 0 to 99. The HH:MM:SS indicates the number of hours, minutes and seconds in the interval from 0:0:0 to 23:59:59.999999. The seconds part can accept upto six decimal places.

The return value is of the datatype interval.

to_yminterval(string)

Converts a string in format YY-MM into a INTERVAL YEAR TO MONTH data type. The YYpart indicates the number of years between 0 to 99. The MMpart indicates the number of months between 0-11.

The return value is of the datatype interval.

ymintervaltonum(c1 INTERVAL YEAR TO MONTH, c2 char)

Converts the given value to a numeric value. User must provide unit for the output numeric value as second argument to this function. Allowed values for the unit is: YEAR,MONTH

3.11.6 The YM Interval Functions

The YM Interval functions help you in calculating time interval from year to month.

The following are the YM interval functions:

Function Name Description

to_yminterval (string)

TO_YMINTERVAL converts a character string of CHAR, VARCHAR2, NCHAR, or NVARCHAR2 datatype to an INTERVAL YEAR TO MONTH type. TO_YMINTERVAL accepts argument in one of the two formats:

  • SQL interval format compatible with the SQL standard (ISO/IEC 9075:2003)

  • ISO duration format compatible with the ISO 8601:2004 standard

In the SQL format, years is an integer between 0 and 999999999, and months is an integer between 0 and 11. Additional blanks are allowed between format elements.

In the ISO format, years and months are integers between 0 and 999999999. Days, hours, minutes, seconds, and frac_secs are non-negative integers, and are ignored, if specified. No blanks are allowed in the value.

numtoyminterval(n,interval_unit)

NUMTOYMINTERVAL converts number n to an INTERVAL YEAR TO MONTH literal. The argument n can be any NUMBER value or an expression that can be implicitly converted to a NUMBER value. The argument interval_unit can be of CHAR, VARCHAR2, NCHAR, or NVARCHAR2 datatype. The value for interval_unit specifies the unit of n and must resolve to one of the following string values: YEAR and MONTH

The return value is of the datatype interval.

3.11.7 What are Math Functions?

The math functions allow you to perform various mathematical operations and calculations ranging from simple to complex.

The following math functions are supported in this release:

Function Name Description

IEEEremainder(value1,value2)

Computes the remainder operation on two arguments as prescribed by the IEEE 754 standard

abs(value1)

Returns the absolute value of a number

acos(value1) 

Returns arc cosine of a value

asin(value1) 

Returns arc sine of a value

atan(value1) 

Returns arc tangent of a value

atan2(arg1,arg2) 

Returns polar angle of a point (arg2, arg1)

binomial(base,power) 

Returns binomial coefficient of the base raised to the specified power

bitMaskWithBitsSetFromTo(x) 

BitMask with BitsSet (From, To)

cbrt(value1) 

Returns cubic root of the specified value

ceil(value1) 

Rounds to ceiling

copySign(value1,value2)

Returns the first floating-point argument with the sign of the second floating-point argument

cos(value1) 

Returns cosine of a value

cosh(value1) 

Returns cosine hyperbolic of a value

exp(x) 

Returns exponent of a value

expm1(x) 

More precise equivalent of exp(x); Returns 1 when x is around zero

factorial(value1) 

Returns factorial of a natural number

floor(value1) 

Rounds to floor

getExponent(value1)

Returns the unbiased exponent used in the representation of a double

getSeedAtRowColumn(value1,value2) 

Returns a deterministic seed as an integer from a (seemingly gigantic) matrix of predefined seeds

hash(value1)

Returns an integer hashcode for the specified double value

hypot(value1,value2) 

Returns square root of sum of squares of the two arguments

leastSignificantBit(value1) 

Returns the least significant 64 bits of this UUID's 128 bit value

log(value1,value2) 

Calculates the log value of the given argument to the given base, where value 1 is the value and value 2 is the base

log1(value1)

Returns the natural logarithm of a number

log10(value1) 

Calculates the log value of the given argument to base 10

log2(value1) 

Calculates the log value of the given argument to base 2

logFactorial(value1) 

Returns the natural logarithm (base e) of the factorial of its integer argument as a double

longFactorial(value1) 

Returns the factorial of its integer argument (in the range k >= 0 && k < 21) as a long

maximum(value1,value2) 

Returns the maximum of 2 arguments

minimum(value1,value2) 

Returns the minimum of 2 arguments

mod(value1,value2) 

Returns modulo of a number

mosttSignificantBit(value1) 

Returns the most significant 64 bits of this UUID's 128 bit value

nextAfter(value1,value2)

Returns the floating-point number adjacent to the first argument in the direction of the second argument

nextDown(value1)

Returns the floating-point value adjacent to the input argument in the direction of negative infinity

nextUp(value1)

Returns the floating-point value adjacent to the input argument in the direction of positive infinity

Pow(m,n)

Returns m raised to the nth power

rint(value1) 

Returns the double value that is closest in value to the argument and is equal to a mathematical integer

round(value1) 

Rounds to the nearest integral value

Scalb(d,scaleFactor)

Returns d × 2scaleFactor rounded as if performed by a single correctly rounded floating-point multiply to a member of the double value set

signum(value1) 

Returns signum of an argument as a double value

sin(value1) 

Returns sine of a value

sinh(value1) 

Returns sine hyperbolic of a value

sqrt(value1) 

Returns square root of a value

stirlingCorrection(value1) 

Returns the correction term of the Stirling approximation of the natural logarithm (base e) of the factorial of the integer argument as a double

tan(value1) 

Returns tangent of a value

tanh(value1) 

Returns tangent hyperbolic of a value

toDegrees(value1) 

Converts the argument value to degrees 

toRadians(value1) 

Returns the measurement of the angle in radians

ulp(value1)

Returns the size of an ulp of the argument

3.11.8 What are Null-related Functions?

The following null-related functions are supported in this release:

Function Name Description

nvl(value1,value2)

Replaces null with a value of the same type

3.11.9 What are Statistical Functions?

Statistical functions help you in calculating the statistics of different values.

The following statistical functions are supported in this release:

Function Name Description

beta1(value1,value2,value3)

Returns the area from zero to value3 under the beta density function

betaComplemented(value1,value2,value3)

Returns the area under the right hand tail (from value3 to infinity) of the beta density function

binomial2(value1,value2,value3)

Returns the sum of the terms 0 through value1 of the Binomial probability density. All arguments must be positive.

binomialComplemented(value1,value2,value3)

Returns the sum of the terms value1+1 through value2 of the binomial probability density. All arguments must be positive.

chiSquare(value1,value2)

Returns the area under the left hand tail (from 0 to value2) of the chi square probability density function with value1 degrees of freedom. The arguments must both be positive.

chiSquareComplemented(value1,value2)

Returns the area under the right hand tail (from value2 to infinity) of the chi square probability density function with value1 degrees of freedom. The arguments must both be positive.

errorFunction(value1)

Returns the error function of the normal distribution

errorFunctionComplemented(value1)

Returns the complementary error function of the normal distribution

gamma(value1,value2,value3)

Returns the gamma function of the arguments

gammaComplemented(value1,value2,value3)

Returns the integral from value3 to infinity of the gamma probability density function

incompleteBeta(value1,value2,value3)

Returns the incomplete beta function evaluated from zero to value3

incompleteGamma(value1,value2)

Returns the incomplete gamma function

incompleteGammaComplement(value1,value2)

Returns the complemented incomplete gamma function

logGamma(value1)

Returns the natural logarithm of the gamma function

negativeBinomial(value1,value2,value3)

Returns the sum of the terms 0 through value1 of the negative binomial distribution. All arguments must be positive.

negativeBinomialComplemented(value1,value2,value3)

Returns the sum of the terms value1+1 to infinity of the negative binomial distribution. All arguments must be positive.

normal(value1,value2,value3)

Returns the area under the normal (Gaussian) probability density function, integrated from minus infinity to value1 (assumes mean is zero, variance is one)

normalInverse(value1)

Returns the value for which the area under the normal (Gaussian) probability density function is equal to the argument value1 (assumes mean is zero, variance is one)

poisson(value1,value2)

Returns the sum of the first value1 terms of the Poisson distribution. The arguments must both be positive.

poissonComplemented(value1,value2)

Returns the sum of the terms value1+1 to infinity of the poisson distribution

studentT(value1,value2)

Returns the integral from minus infinity to value2 of the Student-t distribution with value1 > 0 degrees of freedom

studentTInverse(value1,value2)

Returns the value, for which the area under the Student-t probability density function is equal to 1-value1/2. The function uses the studentT function to determine the return value iteratively.

3.11.10 What are String Functions?

The following String functions are supported in this release:

Function Name Description

coalesce(value1,...)

Returns the first non-null expression in the list. If all expressions evaluate to null, then the COALESCE function will return null

concat(value1,...)

Returns concatenation of values converted to strings

indexof(string,match)

Returns first index of \'match\' in \'string\'or 1 if not found 

initcap(value1)

Returns a specified text expression, with the first letter of each word in uppercase and all other letters in lowercase

length(value1)

Returns the length of the specified string

like(value1,value2)

Returns a matching pattern

lower(value1)

Converts the given string to lower case

lpad(value1,value2,value3)

Pads the left side of a string with a specific set of characters (when string1 is not null)

ltrim(value1,value2)

Removes all specified characters from the left hand side of a string

replace(string,match,replacement)

Replaces all \'match\' with \'replacement\' in \'string\'

rpad(value1,value2,value3)

Pads the right side of a string with a specific set of characters (when string1 is not null)

rtrim(value1,value2)

Removes all specified characters from the right hand side of a string

substr(string,from)

Returns substring of a 'string' when indices are between 'from' (inclusive) and up to the end of the string

substring(string,from,to)

Returns substring of a \'string\' when indices are between \'from\' (inclusive) and \'to\' (exclusive)

translate(value1,value2,value3)

Replaces a sequence of characters in a string with another set of characters. However, it replaces a single character at a time.

upper(value1)

Converts given string to uppercase