code: def reduce(self, cross_series_reducer, *group_by_fields):
          
          new_query = copy.deepcopy(self)
          new_query._cross_series_reducer = cross_series_reducer
          new_query._group_by_fields = group_by_fields
          return new_query
docs: Copy the query and add cross-series reduction.
  
          Cross-series reduction combines time series by aggregating their
          data points.
  
          For example, you could request an aggregated time series for each
          combination of project and zone as follows::
  
              from google.cloud.monitoring import enums
              query = query.reduce(enums.Aggregation.Reducer.REDUCE_MEAN,
                                   'resource.project_id', 'resource.zone')
  
          :type cross_series_reducer: str or
              :class:`~google.cloud.monitoring_v3.gapic.enums.Aggregation.Reducer`
          :param cross_series_reducer:
              The approach to be used to combine time series. For example:
              :data:`Reducer.REDUCE_MEAN`. See
              :class:`~google.cloud.monitoring_v3.gapic.enums.Aggregation.Reducer`
              and the descriptions of the `supported reducers`_.
  
          :type group_by_fields: strs
          :param group_by_fields:
              Fields to be preserved by the reduction. For example, specifying
              just ``"resource.zone"`` will result in one time series per zone.
              The default is to aggregate all of the time series into just one.
  
          :rtype: :class:`Query`
          :returns: The new query object.
  
          .. _supported reducers:
              https://cloud.google.com/monitoring/api/ref_v3/rest/v3/\
              projects.timeSeries/list#Reducer