Handling of NULL Values in Jedox Integrator

This article explains the handling of NULL values in different parts and components of Jedox Integrator. NULL values generally represent the absence of an object or a value. It is especially important to clarify how they are handled differently than an empty string ("") or the numerical value 0.

Data Preview

NULL values are represented in a Data Preview for any extract or transform as "«null»". Note that this is only a representation; the value used in subsequent Integrator components is the NULL value.

Extracts

The following extract types can result in rows containing NULL values: Relational, Relational Table, Constant Table, Excel, XML, JSON, and File (for missing columns at the end of a row). To convert a NULL (or space value) directly in the extract, a default value can be defined for each column in the field structure (Alias Map).

Cube Extract

The behavior depends on the "Empty cells" option that is selected:

includeEmpty The extract returns a NULL in the value column for empty cube cells.
includeEmptyDefaultMapping The extract returns "0" (for numerical cells) and "" (for string cells) for empty cube cells.
excludeEmpty Empty cube cells are not returned from the extract.
excludeEmptyAndZero If the option "store zero values" is set for the cube, all "0" (for numerical cells) and "" (for string cells) values are not returned. Otherwise the option is identical to "excludeEmpty".

For the dimension columns, NULL values are not possible as a result.

Tree-based extracts

In all tree-based extracts, NULL values (and also empty values) cannot occur as the name of the element.

Transforms

TableView

Filtering of NULL values in a TableView transform for the different operators:

equal, inRange, inAlphaRange The condition is never fulfilled for a NULL value.
like NULL values are represented as empty strings, the condition is fulfilled (e.g. for this Regular Expression: ^$).
isEmpty The condition is true for NULL values and for (possibly trimmed) empty strings.
isNull The condition is true for NULL values but not for (possibly trimmed) empty strings.


TableJoin

A join condition on two columns. For a join condition between a NULL value in one column and an empty value in the other column, the behavior depends on the setting "Persisted Join":

set NULL and empty values are distinguished; i.e., the condition is not fulfilled (as in a SQL JOIN).
not set NULL and empty values are NOT distinguished; i.e., the condition is fulfilled (as in Lookup function).


TableAggregation, TableNormalization, TableDenormalization

NULL and empty values in target/key columns are distinguished; i.e., corresponding values in the measures are aggregated separately.

RScript

A NULL value in an input column is transferred as NA value to the R Script engine. Note that this is not the same as a NULL value in R.

Tree-based transforms

In all tree-based transforms, NULL values (and also empty values) are not allowed as the name of the element.

Fieldtransform functions

In Fieldtransform functions, NULL values are generally handled as an empty string. For example, the UpperCase function returns "" for an input column value of NULL. Exceptions are the functions listed explicitly below. For Fieldtransform columns without a function, the NULL value remains.

Map function

A static mapping can be defined for NULL values as a map condition or map result by using the keyword #null. For empty values, use the keyword #.

Examples:

From To
#null A null value
0 #null
#space #null


Groovy/JavaScript function

If the input of a script-based Groovy or Java function is a NULL value, then it is also transferred as a NULL to the script engine; i.e., it has to be handled as NULL inside of the script. This is valid for all input column types (object, string, double,...).

OlapData function

For empty cube cells a NULL value is returned by this function.

Loads

Cube load

NULL values in columns corresponding to dimensions are not allowed. The behavior concerning NULL values in the value column are outlined below:

  • For numerical base cells in CREATE, UPDATE, or ADD modes, the NULL values can be ignored and the rows are omitted.
  • For all other cases, already-existing values in the OLAP cube will be removed.

For cubes that do not support storing 0 values, all 0 or empty values are handled as NULL values.

Note: if rows with 0 or empty values are loaded in a Cube Load with persisted drillthrough and no cube cell is created in the cube, those rows won't be returned in a Drillthrough request on this cube.

Dimension load

For element names, NULL values (and also empty values) are not allowed.

In ADD mode, the zero/empty string values can be ignored and the rows are omitted. In CREATE, INSERT, and UPDATE modes, already-existing attribute values are removed. Note that attribute cubes can never store 0 values.

File load

NULL values are written by default as empty strings to the CSV files. With the "defaultValue" option, you can define any other representation of the NULL value, e.g. «null» as used in Data Preview.

JSON load

NULL values are written to a JSON file in this way: "Column1":null.

XML load

The following behavior can be configured with the skipNull option:

  • set: for null values, no XML nodes or attributes are created.
  • not set: for null values, empty XML nodes or attributes are created.

Updated January 31, 2024