Hi @vaisu_Raj ,
Great questions. This is a common issue when working with custom dimensions in Apigee Analytics. Let’s get this sorted out for you.
To answer your first query directly: No, Apigee Analytics does not have a strict, documented hierarchy that dimensions must follow. The system is designed to be flexible. However, the way data is collected can create relationships that cause errors like the one you’re seeing.
What’s Causing the “Error Occurred while plotting the chart”?
The root cause of this error is almost always data sparsity. Here’s what that means in your situation:
Your custom dimension (let’s call it custom_error_message
) is likely being set by a policy only when an error occurs. Your other dimension, HTTP Status Code
, exists for every single transaction, whether it’s a success (200) or an error (4xx, 5xx).
Think of your analytics data like a spreadsheet:
Transaction ID | API Proxy | HTTP Status Code | custom_error_message |
1 | products-v1 | 200 | (not set) |
2 | products-v1 | 500 | “Backend Timeout” |
3 | users-v1 | 200 | (not set) |
4 | users-v1 | 404 | “User Not Found” |
When you create a report that starts with your custom_error_message
dimension, Apigee first gathers all the transactions where that dimension exists (rows 2 and 4). When you then try to “drill down” and view this data by HTTP Status Code
, the analytics system gets confused trying to re-process this pre-filtered, sparse dataset, and the query fails, leading to the plotting error.
Recommended Solution: How to Monitor Your Errors 
Instead of relying on a complex drill-down, the best practice is to create a dedicated custom report specifically for monitoring your errors. This approach is more reliable and gives you the exact view you need.
Here’s how to set it up:
-
Navigate to Analyze → Custom Reports → Reports.
-
Click + Custom Report to create a new one.
-
Give it a clear name, like “Backend Error Analysis”.
-
Set the Metric: Choose a metric like Traffic
or Policy Errors
.
-
Set the Dimensions: This is the key step. Add both dimensions you care about.
-
Create a Filter: This is what makes the report powerful. You need to tell it to only look at error traffic from the start.
- Create a filter where
HTTP Status Code
greater than or equal to 400
.
Now, when you run this report, it will correctly show you a breakdown of your custom error messages and the corresponding status codes, because it was designed from the beginning to only look at relevant error data.
Once this report is working, you can easily add it to your main dashboard for at-a-glance monitoring. This will solve the plotting error and allow you to effectively monitor your custom error messages.
Let me know if that helps!