1. A method for collecting data, comprising: collecting a first batch of data having a first plurality of data elements by a server from one or more tenant applications and associated with a first period of time; storing the first batch of data in a first location in memory, wherein the data is stored using a star schema; updating a batch log with information pertaining to the first batch of data, wherein the information includes a first batch identification (ID); collecting a second batch of data with a second plurality of data elements by the server from the one or more tenant applications and associated with a second period of time subsequent to the first period of time, the first plurality of data elements and the second plurality of elements having a set of intersecting data elements, at least a portion of the set of intersecting data elements having an updated value in the second plurality of elements; storing the second batch of data in a second location in memory, wherein the second batch of data is stored using a star schema, and wherein the first location and the second location are distinct; updating a batch log with information pertaining to the second batch of data, wherein the information includes a second batch identification (ID); receiving a request for the first batch of data initiated by a first tenant of one or more tenants, wherein the request includes the first batch ID; retrieving the first batch of data stored in memory; and reporting the first batch of data to the first tenant.