code: func (d *Dataset) Distinct(name string, sortOption *SortOption) *Dataset {
  	ret := d.LocalSort(name, sortOption).LocalDistinct(name, sortOption)
  	if len(d.Shards) > 1 {
  		ret = ret.MergeSortedTo(name, 1).LocalDistinct(name, sortOption)
  	}
  	return ret
  }
docs: // Distinct sort on specific fields and pick the unique ones.
  // Required Memory: about same size as each partition.
  // example usage: Distinct(Field(1,2)) means
  // distinct on field 1 and 2.
  // TODO: optimize for low cardinality case.