Monitoring how your Jedox reports are used is one of the quickest ways to understand adoption, improve usability, and spot training needs. With the new Jedox Logs API, you can finally extract clean, structured data on which reports are opened, by whom, and when, all without digging through raw log files.
In this beginner‑friendly guide, we’ll walk through how to capture report‑opening statistics and store them inside your Jedox database for analysis.
Our goal is simple – Track report openings.
For each date, list which user opened which report and how many times.
To make this analysis possible, we prepare a small collection of dimensions:
- Day – Template
- User – via ETL
- Report – via ETL
- Counter (the number of times the report was opened) – Just simple dimension
…and we store everything in a cube called:
Report_Statistics
You’ve already created these objects in your database — great! Now let’s look at how the Logs API helps us fill them automatically.
Step 1: Getting Data from the Jedox Logs API
The new Logs API provides structured events for almost everything that happens inside Jedox.
The Logs API delivers events in JSON format — meaning almost every integration tool can read it directly.
You can call the API from:
- Integrator JSON Extract
- REST client
- External ETL tools
- Even your own scripts
Inside Integrator, this typically means creating a REST connection + JSON extract. We already talked about it before so in order to know how to set up connection and where you can find your token this post is prerequisite. After connection is set we continue with our data.
For our use case we need to filter data related to Spreadsheet, timestamp and message.

Step 2: Transforming Logs into Your Reporting Cube

You already set up an Integrator job to map Logs API data into the Report_Statistics cube. A typical transformation step looks like this:
Day → Convert timestamp to date
User → Logs API userName
Report → Logs API reportName or filePath
Counter → Always set to 1
This means each “report opened” event becomes one record, and your cube can aggregate it easily.
Step 3: Analyzing the Data in Jedox
Once your Integrator job runs (e.g., every hour or nightly), your cube fills up and you can build views like:

Real‑World Use Case: Identifying Underused Reports
Imagine you run a set of 25 planning reports for your finance team, but only half of them are actively used. Without usage statistics, you might assume everything is fine.
But with the Logs API + your Report_Statistics cube, you can immediately see:
- 5 reports are opened daily
- 7 are opened weekly
- 13 have not been opened in 90+ days
This insight allows you to:
- Remove outdated reports
- Simplify navigation
- Reduce maintenance
- Focus development time where it matters
Keep in mind that the Logs API can support many other use cases as well. If you’d like me to document additional scenarios, just let me know in the comments.
Project can be found here. If you think this helped you in your projects and saved you some time don’t hesitate to support our blog at https://buymeacoffee.com/stefanvelickovic33. It helps us to run and host the website.

Hi, thank you for sharing this set-up! Could you explain how you exactly use the Counter dimension to “keep each record”?
In my set-up I have an TAggregation to aggregate the number of logins per user per day.
Found out that the very first day in the logs is usually exactly 30×24 hours ago, so you might have only half of the log activities of that first day.
Therefore, I kick out the the very first day encountered in the logs, otherwise it would always negatively alter the past.
Hi Bart,
In my example, I’m not tracking every individual count, just whether a user opened a report on a given day. TAggregation would indeed capture all openings, but for my use case it becomes misleading, because people often enter and exit reports repeatedly while editing. Those numbers wouldn’t tell the real story.
My goal here was simply to show how to capture daily usage, and over time you can easily see whether a report is still actively being used or not.
Hope it has sense!