Fetches existing prepared query

        Parameters:
            query (ObjectID): Query ID
            dc (str): Specify datacenter that will be used.
                      Defaults to the agent's local datacenter.
            watch (Blocking): Do a blocking query
            consistency (Consistency): Force consistency
        Returns:
            Object: the query
        Raises:
            NotFound: the query does not exist

async def explain(self, query, *, dc=None, consistency=None):
        """Fetches existing prepared query

        Parameters:
            query (ObjectID): Query ID
            dc (str): Specify datacenter that will be used.
                      Defaults to the agent's local datacenter.
            watch (Blocking): Do a blocking query
            consistency (Consistency): Force consistency
        Returns:
            Object: the query
        Raises:
            NotFound: the query does not exist
        """
        query_id = extract_attr(query, keys=["ID"])
        path = "/v1/query/%s/explain" % query_id
        response = await self._api.get(path, consistency=consistency, params={
            "dc": dc})
        result = response.body
        return result