code: def _multiple_steps_reduce(self, step, vars):
      if step.reduce != "union":
          raise LogicError(f"Unknown MultipleSteps type: {step.reduce}")
  
      data = ResultSet()
  
      # mark vars
      steps = []
      for substep in step.steps:
          if isinstance(substep, FetchDataframeStep) is False:
              raise LogicError(
                  f"Wrong step type for MultipleSteps: {step}"
              )
          substep = copy.deepcopy(substep)
          markQueryVar(substep.query.where)
          steps.append(substep)
  
      for var_group in vars:
          steps2 = copy.deepcopy(steps)
          for name, value in var_group.items():
              for substep in steps2:
                  replaceQueryVar(substep.query.where, value, name)
          sub_data = self._multiple_steps(steps2)
          data = join_query_data(data, sub_data)
  
      return data
  
file_path: mindsdb/mindsdb/api/executor/sql_query/steps/map_reduce_step.py
imports: import copy
  from mindsdb_sql.parser.ast import BinaryOperation, UnaryOperation, Constant
  from mindsdb_sql.planner.steps import MapReduceStep, FetchDataframeStep, MultipleSteps
  from mindsdb.api.executor.sql_query.result_set import ResultSet
  from mindsdb.api.executor.exceptions import LogicError
  from .base import BaseStepCall
  from .fetch_dataframe import FetchDataframeStepCall
label_desc: Use image node_id 2 for calling the MapReduceStepCall obj's underlying member method code with example usage: obj._multiple_steps_reduce(step, vars) and returns: data