1. A computer-implemented method, comprising: receiving 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 syntax tree comprising a format that is abstracted from a particular one of at least two different storage formats of at least two datastores; normalizing 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; receiving storage metadata describing at least one of the at least two 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 at least two datastores; providing, 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; receiving 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; generating a query plan comprising one or more queries to retrieve data from one or more datastores using the one or more data attributes obtained from the syntax tree of the report identified by the normalized attribute identifiers and the description of the one or more data attributes from the received storage metadata, individual ones of the one or more queries to retrieve at least one of the one or more data attributes from the at least two datastores, the generating of the query plan including modifying the individual ones of the one or more queries to determine a datastore of the at least two datastores based on the selection of the datastore by the at least one data consumer and to access the datastore of the at least two datastores having the determined lower of the data retrieval latency based on the selection of the datastore by the at least one data consumer; and executing the modified one or more queries of the query plan to generate the report, the report including data resulting from the executing of the one or more queries.
1. A computer-implemented method, comprising: receiving 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 syntax tree comprising a format that is abstracted from a particular one of at least two different storage formats of at least two datastores; normalizing 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; receiving storage metadata describing at least one of the at least two 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 at least two datastores; providing, 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; receiving 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; generating a query plan comprising one or more queries to retrieve data from one or more datastores using the one or more data attributes obtained from the syntax tree of the report identified by the normalized attribute identifiers and the description of the one or more data attributes from the received storage metadata, individual ones of the one or more queries to retrieve at least one of the one or more data attributes from the at least two datastores, the generating of the query plan including modifying the individual ones of the one or more queries to determine a datastore of the at least two datastores based on the selection of the datastore by the at least one data consumer and to access the datastore of the at least two datastores having the determined lower of the data retrieval latency based on the selection of the datastore by the at least one data consumer; and executing the modified one or more queries of the query plan to generate the report, the report including data resulting from the executing of the one or more queries. 3. The method of claim 1 , wherein the storage metadata further includes information indicative of a storage format supported by at least one of the at least two datastores.