All projects

Cloud & Automation

Modern Report Engine

A planned reference implementation for secure, tenant-aware analytical requests, cache decisions, Fabric queries, exports and operational monitoring.

Status
Planned
Level
Advanced

Planned project: this page describes the intended design. No code, repository or demo has been published yet.

Project overview

Who this is for

  • Engineers building analytical APIs, report downloads, or application data access
  • Architects designing tenant isolation, caching, and Fabric query boundaries

What you will learn

  • Define a secure report request and API contract
  • Choose synchronous, asynchronous, cached, and live execution paths
  • Enforce tenant isolation from authentication through result storage
  • Monitor request cost, cache behavior, query duration, and failures

Tech stack

  • .NET
  • Python
  • Azure App Service
  • Azure Functions
  • Azure API Management
  • Microsoft Fabric
  • Fabric Warehouse
  • Fabric Lakehouse
  • Azure Storage
On this page
  1. Problem
  2. Architecture
  3. API contract
  4. Cache model
  5. Multi-tenancy and query layer
  6. Monitoring
  7. Future custom reports

Problem

Applications often grow separate query logic in a web frontend, API controller, export job, and support script. Validation drifts, tenant rules become inconsistent, and expensive requests reach the analytical platform without a shared workload policy. This planned project will demonstrate one report engine that accepts intent and owns the governed path to results.

Architecture

Web, mobile, and external API clients call Azure API Management or another gateway. A report-engine service may be implemented with .NET or Python after the project evaluates team skills and runtime constraints. Azure App Service and Azure Functions remain deployment options rather than a premature final choice.

The engine authenticates and authorizes, derives tenant identity from trusted claims, validates the report model, applies rate and concurrency limits, and performs a tenant-aware cache lookup. Cache misses use approved parameterized queries against Fabric Warehouse or a Lakehouse SQL endpoint. A result builder produces paged JSON or stored CSV, Parquet, and other allowed formats.

API contract

The planned contract distinguishes small synchronous requests from large asynchronous work. Typed parameters cover report name, date range, allowed dimensions such as Date, Site, or Merchant, approved filters, format, paging, and version. The engine rejects raw SQL, query fragments, excessive ranges, unsupported dimensions, and tenant identifiers that conflict with authenticated identity.

Large requests can use POST /reports, status polling by reportRequestId, and an authorized download endpoint. Idempotency prevents duplicate submissions from creating duplicate work.

Cache model

The cache key will include tenant, report type, normalized date range, dimensions, filters, format, and report definition version. Entries carry creation time, source freshness, expiration, size, and access scope. The reference will demonstrate time-based and refresh-driven invalidation while documenting cases where live execution is safer.

Multi-tenancy and query layer

Tenant identity flows from authentication into authorization, cache keys, query parameters, result storage paths, and audit events. The browser is never the sole authority for tenant_id. Query templates are allow-listed and parameterized. Row and byte limits protect both Fabric and the application process.

Monitoring

Every request records request and correlation IDs, tenant and client identifiers, report name, timestamps, total and query duration, cache outcome, rows, bytes, status, and error code. Dashboards will separate interactive and export workloads and connect to the Data Platform Monitoring and Observability series.

Future custom reports

A metadata model may allow versioned custom report definitions without granting arbitrary SQL. Future work includes approval workflow, safe dimensions and measures, schema compatibility, definition testing, auditing, and migration. No repository, demo URL, or implementation language is claimed until those choices and artifacts exist.

Tags

  • Data Architecture
  • API
  • Reporting
  • Caching
  • Multi-Tenancy
  • Microsoft Fabric
  • Observability