class_docstr: The DaskInterface allows a Dataset objects to wrap a dask
  DataFrame object. Using dask allows loading data lazily
  and performing out-of-core operations on the data, making
  it possible to work on datasets larger than memory.
  
  The DaskInterface covers almost the complete API exposed
  by the PandasInterface with two notable exceptions:
  
  1) Sorting is not supported and any attempt at sorting will
     be ignored with an warning.
  2) Dask does not easily support adding a new column to an existing
     dataframe unless it is a scalar, add_dimension will therefore
     error when supplied a non-scalar value.
  4) Not all functions can be easily applied to a dask dataframe so
     some functions applied with aggregate and reduce will not work.
code: def aggregate(cls, dataset, dimensions, function, **kwargs):
      data = dataset.data
      cols = [d.name for d in dataset.kdims if d in dimensions]
      vdims = dataset.dimensions("value", label="name")
      dtypes = data.dtypes
      numeric = [
          c
          for c, dtype in zip(dtypes.index, dtypes.values)
          if dtype.kind in "iufc" and c in vdims
      ]
      reindexed = data[cols + numeric]
  
      inbuilts = {
          "amin": "min",
          "amax": "max",
          "mean": "mean",
          "std": "std",
          "sum": "sum",
          "var": "var",
      }
      if len(dimensions):
          groups = reindexed.groupby(cols)
          if function.__name__ in inbuilts:
              agg = getattr(groups, inbuilts[function.__name__])()
          else:
              agg = groups.apply(function)
          df = agg.reset_index()
      else:
          if function.__name__ in inbuilts:
              agg = getattr(reindexed, inbuilts[function.__name__])()
          else:
              raise NotImplementedError
          df = pd.DataFrame(agg.compute()).T
  
      dropped = []
      for vd in vdims:
          if vd not in df.columns:
              dropped.append(vd)
      return df, dropped
  
imports: import sys
  import numpy
  import pandas
  from ..None import util
  from ..dimension import Dimension
  from ..element import Element
  from ..ndmapping import NdMapping, item_check, sorted_context
  from .interface import Interface
  from .pandas import PandasInterface
label_desc: Use image node_id 13 for calling the DaskInterface obj's underlying member method code with example usage: obj.aggregate(cls, dataset, dimensions, function) and returns: df,  dropped