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
Parameter | Description | Type | Required | Default |
|---|---|---|---|---|
Node | Input node with potentially missing level values, specified in single quotes (e.g. | Node reference | Yes | -- |
Dimension | Name of the dimension whose level values will be used to fill the input node, specified in double quotes (e.g. | Dimension name | No | Finest time level |
Value | Value written into newly filled rows | Number | No |
|
Behavior | Controls which missing entries are filled. Available values: | Keyword | No |
|
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
Aspect | Behavior |
|---|---|
Dimensionality | Unchanged (no levels added or removed) |
Values | Existing rows are preserved unchanged. New rows are added with the specified fill value. |
Row count | Increases 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
Year | Product | Value |
|---|---|---|
2025 | Car | 100 |
2027 | Van | 90 |
Formula: FILLMISSING('Input node')
Year | Product | → FILLMISSING Result |
|---|---|---|
2025 | Car | 100 |
2025 | Van | 0 |
2026 | Car | 0 |
2026 | Van | 0 |
2027 | Car | 0 |
2027 | Van | 90 |
2028 | Car | 0 |
2028 | Van | 0 |
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)
Year | Product | → FILLMISSING Result |
|---|---|---|
2025 | Car | 100 |
2025 | Van | 1 |
2025 | Truck | 1 |
2027 | Car | 1 |
2027 | Van | 90 |
2027 | Truck | 1 |
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
Year | Product | Value |
|---|---|---|
2026 | Car | 100 |
2027 | Van | 200 |
2028 | Car | 300 |
Formula: FILLMISSING('Input node', "Time", "1", "All")
Year | Product | → FILLMISSING Result |
|---|---|---|
2025 | Car | 1 |
2026 | Car | 100 |
2027 | Car | 1 |
2028 | Car | 300 |
2025 | Van | 1 |
2026 | Van | 1 |
2027 | Van | 200 |
2028 | Van | 1 |
"All" fills empty values over the entire project horizon.
Formula: FILLMISSING('Input node', "Time", "1", "StartAtFirst")
Year | Product | → FILLMISSING Result |
|---|---|---|
2026 | Car | 100 |
2027 | Car | 1 |
2028 | Car | 300 |
2027 | Van | 200 |
2028 | Van | 1 |
"StartAtFirst" fills after the first value present for each product through the end of the horizon.
Formula: FILLMISSING('Input node', "Time", "1", "FinishAtLast")
Year | Product | → FILLMISSING Result |
|---|---|---|
2025 | Car | 1 |
2026 | Car | 100 |
2027 | Car | 1 |
2028 | Car | 300 |
2025 | Van | 1 |
2026 | Van | 1 |
2027 | Van | 200 |
"FinishAtLast" fills from the start of the horizon until the last value present for each product.
Formula: FILLMISSING('Input node', "Time", "1", "Interval")
Year | Product | → FILLMISSING Result |
|---|---|---|
2026 | Car | 100 |
2027 | Car | 1 |
2028 | Car | 300 |
2027 | Van | 200 |
"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
Month | CalendarMonth | Value |
|---|---|---|
2025-02 | 06 | 100 |
2025-03 | 06 | 105 |
2025-04 | 11 | 110 |
2025-05 | 05 | 115 |
2025-06 | 06 | 120 |
2025-07 | 02 | 125 |
Formula: FILLMISSING('Input', "TimeDimension", 15)
Month | CalendarMonth | → FILLMISSING Result |
|---|---|---|
2025-01 | 01 | 15 |
2025-02 | 02 | 100 |
2025-03 | 03 | 105 |
2025-04 | 04 | 110 |
2025-05 | 05 | 115 |
2025-06 | 06 | 120 |
2025-07 | 07 | 125 |
2025-08 | 08 | 15 |
2025-09 | 09 | 15 |
2025-10 | 10 | 15 |
2025-11 | 11 | 15 |
2025-12 | 12 | 15 |
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.
Related Functions
Function | When to use instead |
|---|---|
When you want missing values filled using the last available value instead of a constant. | |
When you want to fill N/A values on existing level combinations after pivoting instead of adding missing level values for a dimension. |