1. A system comprising: at least two processors; and a memory storing an application wherein the application directs the at least two processors to: receive raw data that has a plurality of dimensions; generate one or more partitions of a dictionary for each dimension of the plurality of dimensions of the raw data, wherein each of the one or more partitions includes an entry for at least one dimension of the plurality of dimensions, wherein the entry at least includes a corresponding dictionary identifier and a corresponding value; determine a number of entries in each of the one or more partitions; determine whether the number of entries in a partition of the one or more partitions is greater than a threshold value; in the event the number of entries for the partition of the one or more partitions is greater than the threshold value, store the partition in a common memory; in the event the number of entries for the partition of the one or more partitions is not greater than the threshold number: combine the partition with another partition having the number of entries less than the threshold value into a single partition in which the number of entries is greater than the threshold value; and store the single partition in the common memory.