Hi,
GeoPosition is indeed slower than DateObject, but not as much as you seem to find. For example here we find a factor five:
In[1]:= AbsoluteTiming[DateObject /@ RandomInteger[10, {42000, 3}];]
Out[1]= {0.096223, Null}
In[2]:= AbsoluteTiming[GeoPosition /@ RandomInteger[90, {42000, 2}];]
Out[2]= {0.461047, Null}
In Dataset:
In[3]:= ds = Dataset[AssociationThread[{"Year", "Month", "Day", "Latitude", "Longitude"}, #] & /@ RandomInteger[10, {42000, 5}]];
In[4]:= AbsoluteTiming[Query[All, DateObject[{#Year, #Month, #Day}] &]@ds;]
Out[4]= {0.135063, Null}
In[5]:= AbsoluteTiming[Query[All, GeoPosition[{#Latitude, #Longitude}] &]@ds;]
Out[5]= {0.501642, Null}
In[6]:= AbsoluteTiming[Query[All, GeoPosition[N@ {#Latitude, #Longitude}] &]@ds;]
Out[6]= {0.196471, Null}
Note that working with reals brings the difference down to a factor two.
Is there anything special in your data that could slow down the processing?
Jose.