You can create just one data sources and then generate an unlimited number of reports from that data source.

Programmers can re-use that data source to make new reports for users.

Users can make their own reports, at will and ad hoc, without burdening programmer resources