15. The system of claim 14 , wherein the plurality of datastores includes at least one datastore that employs a non-relational storage format and at least one datastore that employs a relational storage format.
14. A system, comprising: at least one data warehouse comprising a plurality of datastores supporting at least two different storage formats; at least one memory storing computer-executable instructions; and at least one processor in communication with the at least one data warehouse, the at least one processor configured to access the at least one memory and execute the computer-executable instructions to: receive a request for a report comprising a syntax tree that includes one or more data attributes identified by an attribute identifier and one or more conditions on the one or more data attributes, the report to be generated by querying the at least one data warehouse, the syntax tree comprising a format that is abstracted from a particular one of the at least two different storage formats of the plurality of datastores; normalize the attribute identifiers to generate normalized attribute identifiers for the one or more data attributes to provide a consistent attribute identifier across the at least two datastores; receive storage metadata describing at least one of the plurality of datastores storing data for the normalized attribute identifiers, the metadata including a description of the one or more data attributes and data retrieval latency for the plurality of datastores; generate at least one query to retrieve data from one or more datastores using the description of the one or more data attributes from the storage metadata and the one or more data attributes obtained from the syntax tree of the request for the report to retrieve data for at least one data attribute identified by the normalized attribute identifiers from the plurality of datastores; provide, to at least one data consumer associated with the report, at least one time estimate for generating the report based on retrieving the data for the one or more data attributes identified by the normalized attribute identifiers from individual ones of the at least two datastores, the at least one time estimate based at least partly on the data retrieval latency for the individual ones of the at least two datastores; receive a selection of a datastore by the at least one data consumer, the selection provided by the at least one data consumer based on the at least one time estimate; modify the at least one query to access the datastore of the plurality of datastores based on the selection of the datastore by the at least one data consumer; and generate the report including the data for the at least one data attribute identified by the normalized attribute identifiers, retrieved from the datastore based on an execution of the at least one modified query.