code: def _do_query(self, path: str, params: dict) -> dict:
      resp = self.http.get(urljoin(self.api_url, path), params=params)
      if resp.status_code not in [400, 422, 503]:
          resp.raise_for_status()
  
      response = resp.json()
      if response["status"] != "success":
          invalidInputError(
              False,
              "Fail to collect data from Prometheus! "
              "{errorType}: {error}".format_map(response),
          )
  
      return response["data"]
  
file_path: BigDL/python/chronos/src/bigdl/chronos/data/utils/prometheus_df.py
imports: import datetime
  import json
  from typing import Optional, Union
  from urllib.parse import urljoin
  import numpy
  import pandas
  import requests
  from bigdl.nano.utils.common import invalidInputError
label_desc: Use image node_id 5 for calling the Prometheus obj's underlying member method code with example usage: obj._do_query(path, params) and returns: response