1. A computer implemented method for processing data including: identifying a plurality of subsets of fields of data records of a data, each subset including at least a first field and a second field; partitioning data records into multiple parts independent of values occurring in the fields of those data records; for each part of the multiple parts, forming data elements from the data records in that part, each data element identifying the first field and the second field of a given subset and identifying corresponding values occurring in the first and second fields; for each part of the multiple parts, determining counts based on the values that occur in the first field and the values that occur in the second field of the data elements in that part; combining at least some of the counts from data elements of different parts to generate accumulated counts; for each of one or more of the plurality of subsets of fields, selecting a distribution of values that are most frequently occurring in the second field of a plurality of records based on the accumulated counts, the plurality of records having a common value occurring in the first field; identifying one or more of the plurality of subsets of fields as having a functional relationship, based at least in part on the selected distribution of values; and presenting the identified functional relationship to a user.