There are three parts to Sitecore’s reporting infrastructure:
The Reporting database, which is populated by the interaction aggregation pipeline.
A Reporting API, which is used by the Content Management server to populate Experience Analytics reports.
The Reporting Service, which is an optional but recommended core role that sits in between clients and the reporting database.
There are three ways to access the Reporting database:
Use T-SQL directly.
Use the Reporting API without a Reporting Service, in which case the request is sent directly to SQL via a provider
Use the Reporting API with a Reporting Service, in which case the request is sent over HTTPS
In a Sitecore context, it is strongly recommended that you use the Reporting API. Configuration determines whether the request is sent to a dedicated Reporting Service server or goes directly to the reporting database. Refer to the guide to see how reporting fits into the platform as a whole.
xConnect and reporting
Reporting is not a function of xConnect and reporting functionality is not part of the xConnect Client API. However, the xConnect Client API is used to populate parts of the Experience Profile.