1. A method comprising: performing, with one or more processing devices, natural language processing and semantic processing on a natural language query to identify data sets relevant to the natural language query; grouping, with the one or more processing devices, the data sets into one or more query domains based at least in part on one or more relationships among the data sets, wherein each query domain includes a data set comprising a fact table that has one-to-many cardinality with a plurality of other data sets and no many-to-one cardinality with any data set, and one or more data sets each having a direct many-to-one cardinality relationship with the fact table; prioritizing, with the one or more processing devices, the one or more query domains; and loading, with the one or more processing devices, the one or more query domains in an order based on the prioritizing of the query domains.