Skip to main content
Solved

Studio View: Missing Categories on NULL Values, Incorrect X-Axis Sorting in Charts & Equivalent to "Explicit boundaries"

  • September 24, 2026
  • 3 replies
  • 90 views

lukashlr
Level 3
Forum|alt.badge.img+1

Problem Description: In a Celonis Studio View, I am creating a column chart to display process cycle times, which are categorized into different intervals (buckets) using a CASE WHEN statement. During this process, two main issues occur:

Missing Columns/Categories for Empty Data (NULL / No Data): If no records exist for a specific interval within the current filter context, the corresponding interval is not displayed as an empty category (a bar with value 0) on the X-axis; instead, it is simply omitted from the chart. This results in missing segments along the axis labels, making interpretation difficult.

Incorrect/Alphabetical Sorting of the X-Axis: Since the CASE WHEN statement returns text labels for the intervals (e.g., '-15 - 0', '0', '1 - 9'), Celonis defaults to sorting the X-axis alphabetically rather than logically/numerically. Manually overriding this via the Sorting field with a separate numeric PQL formula (CASE WHEN ... THEN 1 ... THEN 2) does not yield the desired result, as dynamic sorting expressions are restricted within the View component editor or fail to update the layout as expected.

In the old Process Analytics views, the Advanced Component Options included the setting "Partition rule (integer) = Explicit boundaries". This allowed fixed boundaries (e.g., -45, -30, -15, 0, 1, 9, 29, 59) to be defined directly within the component settings. This automatically rendered empty categories and ensured correct numerical sorting.

X-Axis PQL Example (Current Approach):

CASE
    WHEN "TABLE"."cycletime" < -45 THEN '< -45'
    WHEN "TABLE"."cycletime" < -30 THEN '-45 - -30'
    WHEN "TABLE"."cycletime" < -15 THEN '-30 - -15'
    WHEN "TABLE"."cycletime" < 0   THEN '-15 - 0'
    WHEN "TABLE"."cycletime" < 1   THEN '0'
    WHEN "TABLE"."cycletime" < 9   THEN '1 - 9'
    WHEN "TABLE"."cycletime" < 29  THEN '9 - 29'
    WHEN "TABLE"."cycletime" < 59  THEN '29 - 59'
    ELSE '≥ 59'
END

Question 1: Is there an equivalent to the old "Explicit boundaries" feature in the new Celonis Studio Views (e.g., via Visual Editor or YAML/JSON configuration) to bind numeric intervals directly within the component configuration?

 

Question 2: If there is no direct UI equivalent: How can we force all defined interval categories to be rendered on the X-axis in Views, even when the metric evaluates to 0 or NULL (e.g., by overriding automatic NULL stripping)?

Question 3: What is the best practice in Celonis Views for sorting custom text categories logically/numerically on the X-axis without having to prefix the label text with leading numbers (like 1., 2.)?

Note: We would prefer not to resolve this issue on the backend side (Data Model transformations). Are there purely frontend-based alternatives available?

Best answer by abhishek.chatu14

Let me try to answer your questions one by one.

Question 1: Is there an equivalent to the old “Explicit Boundaries” feature in the new Celonis Studio Views?
 

Based on the current evidence, there does not appear to be a true equivalent in the new Studio Views, either through the Visual Editor or YAML/JSON configuration, that allows exact numeric intervals to be directly bound within the component configuration, as was possible with the old Analysis “Explicit Boundaries” feature.

Best practice workaround when exact bins are required:

Define the intervals explicitly in PQL using CASE WHEN or appropriate bucket functions.

Use these explicitly defined categories as the dimension in a Bar Chart rather than relying on the Histogram component's automatic bucketing.
 

Question 2: If there is no direct UI equivalent, how can we force all defined interval categories to appear on the X axis, even when the metric evaluates to 0 or NULL?
 

For fixed, named categories, one approach is to create a synthetic category domain and use COALESCE to ensure the expected categories are returned.

For example:

COALESCE(
CASE
WHEN <value> < 0 THEN '< 0'
WHEN <value> < 10 THEN '0-9'
WHEN <value> < 20 THEN '10-19'
ELSE '20+'
END,
CASE
WHEN RANGE_APPEND(BIND("YourTable", 1), 1, 1, 4) = 1 THEN '< 0'
WHEN RANGE_APPEND(BIND("YourTable", 1), 1, 1, 4) = 2 THEN '0-9'
WHEN RANGE_APPEND(BIND("YourTable", 1), 1, 1, 4) = 3 THEN '10-19'
WHEN RANGE_APPEND(BIND("YourTable", 1), 1, 1, 4) = 4 THEN '20+'
END
)

This provides a fallback category domain so that the predefined intervals can still be represented even when the underlying metric has no corresponding value.
 

Question 3: What is the best practice for sorting custom text categories logically or numerically on the X axis without prefixing the labels with numbers?
 

The recommended approach is to separate the display label from the sort order.

For example, keep the user facing dimension as:

0-30 Days

31-60 Days

61-90 Days

Then create a separate numeric field that defines the desired sort order:

1

2

3

For example, in PQL:

Label field:

CASE
...
THEN '0-30 Days'
...
THEN '31-60 Days'
...
THEN '61-90 Days'
END

Sort field:

CASE
...
THEN 1
...
THEN 2
...
THEN 3
END

The sort field should be included in the chart query and used to control the ordering, while the label field remains the dimension displayed to the user.

View original

3 replies

abhishek.chatu14
Level 12
Forum|alt.badge.img+8

Let me try to answer your questions one by one.

Question 1: Is there an equivalent to the old “Explicit Boundaries” feature in the new Celonis Studio Views?
 

Based on the current evidence, there does not appear to be a true equivalent in the new Studio Views, either through the Visual Editor or YAML/JSON configuration, that allows exact numeric intervals to be directly bound within the component configuration, as was possible with the old Analysis “Explicit Boundaries” feature.

Best practice workaround when exact bins are required:

Define the intervals explicitly in PQL using CASE WHEN or appropriate bucket functions.

Use these explicitly defined categories as the dimension in a Bar Chart rather than relying on the Histogram component's automatic bucketing.
 

Question 2: If there is no direct UI equivalent, how can we force all defined interval categories to appear on the X axis, even when the metric evaluates to 0 or NULL?
 

For fixed, named categories, one approach is to create a synthetic category domain and use COALESCE to ensure the expected categories are returned.

For example:

COALESCE(
CASE
WHEN <value> < 0 THEN '< 0'
WHEN <value> < 10 THEN '0-9'
WHEN <value> < 20 THEN '10-19'
ELSE '20+'
END,
CASE
WHEN RANGE_APPEND(BIND("YourTable", 1), 1, 1, 4) = 1 THEN '< 0'
WHEN RANGE_APPEND(BIND("YourTable", 1), 1, 1, 4) = 2 THEN '0-9'
WHEN RANGE_APPEND(BIND("YourTable", 1), 1, 1, 4) = 3 THEN '10-19'
WHEN RANGE_APPEND(BIND("YourTable", 1), 1, 1, 4) = 4 THEN '20+'
END
)

This provides a fallback category domain so that the predefined intervals can still be represented even when the underlying metric has no corresponding value.
 

Question 3: What is the best practice for sorting custom text categories logically or numerically on the X axis without prefixing the labels with numbers?
 

The recommended approach is to separate the display label from the sort order.

For example, keep the user facing dimension as:

0-30 Days

31-60 Days

61-90 Days

Then create a separate numeric field that defines the desired sort order:

1

2

3

For example, in PQL:

Label field:

CASE
...
THEN '0-30 Days'
...
THEN '31-60 Days'
...
THEN '61-90 Days'
END

Sort field:

CASE
...
THEN 1
...
THEN 2
...
THEN 3
END

The sort field should be included in the chart query and used to control the ordering, while the label field remains the dimension displayed to the user.


Chitra
Celonaut
Forum|alt.badge.img+2
  • Celonaut
  • September 28, 2026

Hello ​@lukashlr 

Following up on the above issue posted by you. Our community champion ​@abhishek.chatu14 has provided a detail answer for it.

Did the response provided by him help resolve your issue?

If it worked for you, please take a moment to click "Best Answer" . This gives credit to the expert and helps other community members with the same question find the answer faster.

If you're still running into trouble, let us know so we can continue to assist!

Best regards,

Chitra HL


lukashlr
Level 3
Forum|alt.badge.img+1
  • Author
  • Level 3
  • September 28, 2026

Hi ​@abhishek.chatu14 , hi ​@Chitra ,

Thanks a lot for the detailed breakdown and the helpful pointers! We were able to solve our issues based on your input, but we had to tweak two key details in the Studio View setup to get it fully working, thought I'd share them in case anyone else stumbles upon this:

Handling the ELSE branch in the Dimension PQL:

In our original CASE WHEN statement for the dimension, we had a catch-all ELSE branch. This caused any records with NULL values to be categorized into that fallback bucket. As a result, the COALESCE logic with RANGE_APPEND was never triggered properly for the empty buckets. Adjusting the CASE WHEN to explicitly handle NULLs (avoiding a catch-all ELSE assigning them to a valid category) fixed the fallback domain behavior.

 

COALESCE(
    CASE
        WHEN <value> < 0 THEN '< 0'
        WHEN <value> < 10 THEN '0-9'
        WHEN <value> < 20 THEN '10-19'
        WHEN <value> > 20 THEN '20+'
    END,
    CASE
        WHEN RANGE_APPEND(BIND("YourTable", 1), 1, 1, 4) = 1 THEN '< 0'
        WHEN RANGE_APPEND(BIND("YourTable", 1), 1, 1, 4) = 2 THEN '0-9'
        WHEN RANGE_APPEND(BIND("YourTable", 1), 1, 1, 4) = 3 THEN '10-19'
        WHEN RANGE_APPEND(BIND("YourTable", 1), 1, 1, 4) = 4 THEN '20+'
    END
)

 

Fixing the Custom Sorting Persistence:

When we added our custom numeric sorting expression, it worked while configured in the column settings, but as soon as we hid/removed the sort dimension from the visual layout, Studio Views stopped applying the order. Enabling "ENABLE DIMENSION SWITCHING" was the trick here. It creates the dropdown in the UI, but more importantly, it forces the View to reliably apply the custom sorting logic in the background.

Regarding Question 3 / Sorting: Did you mean adding the custom numeric sorting PQL directly via the "ENABLE DIMENSION SWITCHING" option, or is there another way to bind a secondary sorting dimension silently without enabling dimension switching in the component frontend?

Thanks again for steering us in the right direction!