When dealing with an enterprise application, I often heard the requirement of "reporting function" "run reports", "generate reports", etc. What is it referring to?
Business intelligence (BI) is a set of methodologies, processes, architectures, and technologies that transform raw data into meaningful and useful information. It allows business users to make informed business decisions with real-time data that can put a company ahead of its competitors. Traditionally, core features like reporting and analytics have been the focus of BI technology choices, but as those features get commoditized, a whole new set of possibilities has emerged. Forrester's BI research shows that the technology is evolving and that enterprises on the cutting edge of these new trends can gain competitive advantage in their industries.
So, reporting mostly refers to the visualization and quering of Business Intelligence data. From a technical perspective, enterprise reporting usually involves (but is not limited to):
- Data visualization,
- Analytics (General, Statistical and Predictive),
- Online analytical processing,
- Data mining,
- Process mining,
Apart for a few common reports that are relevant for almost every business (basic statistics, common ERP / CRM operational reports), it's impossible to predict what a client requires when asking for reports, as every business and market has quite different operations and needs. Reports may range from simple charts to extremely complex multi-dimensional queries.
Reporting is the activity of applying transformations to stored data so that the end user can get information or satisfy business needs such as invoicing, control, planning, etc.
Some examples of basic reports:
In a retail system, you get a receipt after making a payment. This recipt is a type of report.
In a retail system, the manager may want to pull all the items that will expire in a given data.
In an HR system, an HR manager may want to list people who's salaries > 100K
Stock items shortage report, shewing items that reached re-order level and must be ordered to satisfy expected customer demand.
System failure analysis reports showing time of system failure and associated messages
In a banking system, a monthly statement is a report.
The above reports are referred to as 'operational reports' - They are built and used to control the operation of day-to-day business operations. Another type of reports exist to better control the business and make decisions about performance of the business in general and in particular against per-defined KPIs. Such reports pull information from one or more system and produce a 360-view to the management about a subject area or more. These reports are usually refereed to as Business Intelligence Reports For example:
Inventory across Regions, states, stores
Sales of different goods across Regions, states, stores
Customer consumption of goods from organization
There are still more types of reports such as Data Mining reports, I will leave that for you to research if you want.
The report may be as simple as a list or as an aggrigated format with controls and calculations. See for example
Reports, as you can imagine, may be consumed by customer, end-user, analyst, manager, etc. The business analyst defines the suitability of each type of report to each type of users. Managers usually use high level views of information structured in an appealing visual display commonly referred to as Dash Boards.
See this for example:
Reports are not only text. A report can display information in both text and graphical format as a chart or maps.
Reports can be the result of a simple query or the result of a series of integration operations (as is the case of large BI and data warehousing environments).
Tools exist to generate reports using either programming language or specific reporting tools or languages.
End-user tools such as Excel can be used for reporting. In fact Excel provides an advanced type of reporting called pivot tables reports.
More advanced tools exist such as:
Reporting can be performed in an on-linen environment or in batch. The subject is so wide to cover here, but I think you get the picture.
Usually such requirements are about generating some sort of statistical report(s) from the data gathered in the DB. Such as
- hourly/daily/monthly sales volume
- most purchased goods during last day/week/...
- most active users during last day/week/...
- who modified a given contract, when and how
etc. The exact kind of report is largely dependent on the business domain and the type of application in question. Usually such reports are backed by (SQL) queries to the DB, but the source may also be server logs etc. The results may be generated as an Excel/CSV file, visualized as a diagram, etc.