code: def where(self, **kwargs):
          
          clauses = copy(self.clauses)
          for dimension, condition in kwargs.items():
              if dimension in self.clauses:
                  raise Exception('There should be only one clause for {}'.format(dimension))
              if dimension not in self.schema:
                  raise Exception('The dimension {} doesn\'t exist'.format(dimension))
              if isfunction(condition) or isinstance(condition, functools.partial):
                  clauses[dimension] = condition
              else:
                  clauses[dimension] = functools.partial((lambda x, y: x == y), self._sanitize_dimension(str(condition)))
          return self._copy(clauses=clauses)
docs: Return a new Dataset refined using the given condition
  
          :param kwargs: a map of `dimension` => `condition` to filter the elements
              of the dataset. `condition` can either be an exact value or a
              callable returning a boolean value. If `condition` is a value, it is
              converted to a string, then sanitized. If `condition` is a callable, note that it will
              be passed sanitized values -- i.e., characters outside [a-zA-Z0-9_.] are converted
              to `_`.