Building KPI Dashboards in Oracle APEX: Charts, Cards and Performance Tips
By AbairTech Solution · Practical guides for Oracle, ERP & business software
Published by AbairTech Solution · Reviewed November 2026 · Editorial policy
Owners and managers rarely want another report. They want to open one screen in the morning and know whether sales, cash, stock and production are on track. Oracle APEX has everything needed to build that screen – Cards regions, charts, faceted filters and drill-down links – but a dashboard that loads slowly or shows too many numbers quickly gets ignored. This guide covers how we design dashboards that people actually use.
1. Start with decisions, not data
Before building anything, ask each manager: what decision do you make every day or week, and which number tells you to act? That usually narrows a long wish list to five to eight KPIs per role. Examples:
Role
Useful KPIs
Owner / CEO
Today’s sales vs target, cash in hand and bank, receivables overdue, gross margin
Sales manager
Sales by salesperson, new customers, top products, orders pending delivery
Store / warehouse
Stock below reorder level, expiring stock, pending goods received notes
Production
Planned vs produced quantity, rejection rate, machine downtime
2. Build summary views first
Dashboards should not run heavy queries over millions of transaction lines every time someone opens the page. Create views or summary tables that already aggregate data by day, branch and product:
CREATE OR REPLACE VIEW v_daily_sales AS
SELECT TRUNC(i.invoice_date) AS sale_date,
i.branch_id,
SUM(l.qty * l.unit_price) AS gross_sales,
COUNT(DISTINCT i.invoice_id) AS invoice_count
FROM invoices i
JOIN invoice_lines l ON l.invoice_id = i.invoice_id
WHERE i.status = 'POSTED'
GROUP BY TRUNC(i.invoice_date), i.branch_id;
For very large data, refresh a materialized view or a summary table on a schedule instead of querying live. Make sure the underlying columns used for filtering, such as invoice date and branch, are indexed.
3. Use a Cards region for headline numbers
A Cards region is ideal for the top row of KPI tiles. Return one row per KPI with a title, value, comparison and icon:
SELECT 'Today''s Sales' AS title,
TO_CHAR(NVL(SUM(gross_sales),0), 'FM999,999,999') AS value,
'fa-line-chart' AS icon
FROM v_daily_sales
WHERE sale_date = TRUNC(SYSDATE)
UNION ALL
SELECT 'Overdue Receivables',
TO_CHAR(NVL(SUM(amount_due),0), 'FM999,999,999'),
'fa-exclamation-triangle'
FROM customer_invoices
WHERE due_date < TRUNC(SYSDATE) AND status = 'OPEN';
Show a comparison next to each number – vs yesterday, vs last month or vs target. A number on its own does not tell a manager whether to worry.
4. Pick the right chart for each question
Trend over time (daily sales for 30 days): line or area chart.
Comparison between categories (sales by branch): bar chart, sorted from highest to lowest.
Part of a whole with few categories: a donut chart can work, but a sorted bar chart is usually easier to read.
Progress against target: a gauge or a simple bar with the target line.
Limit each chart to one clear message, keep colours consistent across the dashboard, and label axes with units.
5. Add filters and drill-down
Add a date range and a branch selector at the top of the page, and refresh all regions when they change. Make every KPI clickable: a click on Overdue Receivables should open an Interactive Report of the overdue invoices, pre-filtered. Dashboards answer “what”, drill-down answers “why”.
6. Respect security
Use the same authorization schemes and row-level filters as the rest of the application. A branch manager should see their branch’s figures, not the whole company’s. Hide sensitive regions (for example profit margins) with authorization rather than CSS.
7. Performance tips
Use Lazy Loading on regions below the first screen so the top row appears immediately.
Cache slowly changing regions where appropriate using region caching settings.
Avoid one query per tile when a single query can return several values.
Check the APEX debug log for slow regions and tune their SQL first.
Target a page load of a few seconds or less; anything slower will not become a daily habit.
Checklist
KPIs agreed with each role, five to eight per dashboard
Summary views or tables built and indexed
Cards region for headline numbers with comparisons
Charts chosen by the question they answer
Global filters and drill-down to detail reports
Authorization and row-level security applied
Load time tested with production data volumes
Want a management dashboard for your business?
AbairTech builds Oracle APEX dashboards on top of ERP, POS, HR and production data. Try our live demos or discuss your KPIs with us.
This website uses cookies so that we can provide you with the best user experience possible. Cookie information is stored in your browser and performs functions such as recognising you when you return to our website and helping our team to understand which sections of the website you find most interesting and useful.
Strictly Necessary Cookies
Strictly Necessary Cookie should be enabled at all times so that we can save your preferences for cookie settings.
If you disable this cookie, we will not be able to save your preferences. This means that every time you visit this website you will need to enable or disable cookies again.