Reference Updated April 8, 2026

FILLMISSING

Category: Filtering & data shaping

Overview

The FILLMISSING function fills missing level values of a specified dimension into the input node’s data. The input node must already contain the levels of that dimension. FILLMISSING does not add new levels; it only fills missing level values of levels already present.

Use this function when you want to fill structurally missing level values in an existing dimension with a constant value.

Syntax

FILLMISSING('Node' [, "Dimension" [, Value [, "Behavior"]]])

Example usage: FILLMISSING('Revenue')

Parameters

ParameterDescriptionTypeRequiredDefault
NodeInput node with potentially missing level values, specified in single quotes (e.g.'Revenue')Node referenceYes
DimensionName of the dimension whose level values will be used to fill the input node, specified in double quotes (e.g."ProductDimension")Dimension nameNoFinest time level
ValueValue written into newly filled rowsNumberNo0
BehaviorControls which missing entries are filled. Available values:"All", "StartAtFirst", "FinishAtLast", "Interval"KeywordNo"All"

Behavior options:

  • "All": Fills all missing values across the full project horizon.
  • "StartAtFirst": Fills missing entries after the first present value per partition, through the end of the horizon.
  • "FinishAtLast": Fills missing entries from the start of the horizon until the last present value per partition.
  • "Interval": Fills missing entries only between the first and last present values per partition.

Output Shape

AspectBehavior
DimensionalityUnchanged (no levels added or removed)
ValuesExisting rows are preserved unchanged. New rows are added with the specified fill value.
Row countIncreases to include filled missing level values

Watch Out

  • The input node must already contain levels of the specified dimension. FILLMISSING does not add new levels to the node.
  • If the node has linked levels, you cannot fill values of the linked-to dimension. Fill the source dimension instead to get all valid values.
  • This function enforces level links from dimension management. Do not use this function if you want the node to have different level links than the dimensions.
  • The fill behavior operates per partition: for example, with "StartAtFirst", the start point is determined separately for each product.

Examples

Fill missing values across the time horizon

This example fills missing year and product values with a constant. The project time horizon is 2025-2028.

The dimension "ProductDimension" consists of the level "Product" and the level values "Car", "Van", and "Truck".

The input node features the level values "2025", "2027" and "Car", "Van".

Input node: Input node

YearProductValue
2025Car100
2027Van90

Formula: FILLMISSING('Input node')

YearProduct→ FILLMISSING Result
2025Car100
2025Van0
2026Car0
2026Van0
2027Car0
2027Van90
2028Car0
2028Van0

With no arguments, the input node is filled with the missing time level values (2026, 2028) using the default value 0.

Formula: FILLMISSING('Input node', "ProductDimension", 1)

YearProduct→ FILLMISSING Result
2025Car100
2025Van1
2025Truck1
2027Car1
2027Van90
2027Truck1

Here, the input node is filled with the missing level values of "ProductDimension" (e.g. "Truck"). The fill value is 1.

Fill missing values with different behaviors

This example uses the same input with different behavior settings to show how the fill range changes.

Input node: Input node

YearProductValue
2026Car100
2027Van200
2028Car300

Formula: FILLMISSING('Input node', "Time", "1", "All")

YearProduct→ FILLMISSING Result
2025Car1
2026Car100
2027Car1
2028Car300
2025Van1
2026Van1
2027Van200
2028Van1

"All" fills empty values over the entire project horizon.

Formula: FILLMISSING('Input node', "Time", "1", "StartAtFirst")

YearProduct→ FILLMISSING Result
2026Car100
2027Car1
2028Car300
2027Van200
2028Van1

"StartAtFirst" fills after the first value present for each product through the end of the horizon.

Formula: FILLMISSING('Input node', "Time", "1", "FinishAtLast")

YearProduct→ FILLMISSING Result
2025Car1
2026Car100
2027Car1
2028Car300
2025Van1
2026Van1
2027Van200

"FinishAtLast" fills from the start of the horizon until the last value present for each product.

Formula: FILLMISSING('Input node', "Time", "1", "Interval")

YearProduct→ FILLMISSING Result
2026Car100
2027Car1
2028Car300
2027Van200

"Interval" fills only between the first and last present values for each product.

Fill missing values with linked levels

Keep in mind that this function might change existing level values if the levels are linked. The result of this function always follows the links in the dimension table.

Input node: Input

MonthCalendarMonthValue
2025-0206100
2025-0306105
2025-0411110
2025-0505115
2025-0606120
2025-0702125

Formula: FILLMISSING('Input', "TimeDimension", 15)

MonthCalendarMonth→ FILLMISSING Result
2025-010115
2025-0202100
2025-0303105
2025-0404110
2025-0505115
2025-0606120
2025-0707125
2025-080815
2025-090915
2025-101015
2025-111115
2025-121215

Notice that the CalendarMonth values in the input (06, 06, 11, 05, 06, 02) were corrected to match the dimension management links (01, 02, 03, …, 12). FILLMISSING enforces the linked level values.


FunctionWhen to use instead
FILLMISSING_LASTWhen you want missing values filled using the last available value instead of a constant.
FILL_NAWhen you want to fill N/A values on existing level combinations after pivoting instead of adding missing level values for a dimension.
Was this page helpful?