class_docstr: Interact with Amazon Athena.
  
  Provide thick wrapper around
  :external+boto3:py:class:`boto3.client("athena") <Athena.Client>`.
  
  :param sleep_time: obsolete, please use the parameter of `poll_query_status` method instead
  :param log_query: Whether to log athena query and other execution params
      when it's executed. Defaults to *True*.
  
  Additional arguments (such as ``aws_conn_id``) may be specified and
  are passed down to the underlying AwsBaseHook.
  
  .. seealso::
      - :class:`airflow.providers.amazon.aws.hooks.base_aws.AwsBaseHook`
class_docstr_tok: ["Interact","with","Amazon","Athena",".","Provide","thick","wrapper","around",":","external+boto3",":","py",":","class",":","`","boto3.client","(","``","athena","''",")","<","Athena.Client",">","`",".",":","param","sleep_time",":","obsolete",",","please","use","the","parameter","of","`","poll_query_status","`","method","instead",":","param","log_query",":","Whether","to","log","athena","query","and","other","execution","params","when","it","'s","executed",".","Defaults","to","*","True","*",".","Additional","arguments","(","such","as","``","aws_conn_id","``",")","may","be","specified","and","are","passed","down","to","the","underlying","AwsBaseHook",".","..","seealso",":",":","-",":","class",":","`","airflow.providers.amazon.aws.hooks.base_aws.AwsBaseHook","`"]
docstr: Get the output location of the query results in S3 URI format.
  
  .. seealso::
      - :external+boto3:py:meth:`Athena.Client.get_query_execution`
  
  :param query_execution_id: Id of submitted athena query
docstr_tok: ["Get","the","output","location","of","the","query","results","in","S3","URI","format",".","..","seealso",":",":","-",":","external+boto3",":","py",":","meth",":","`","Athena.Client.get_query_execution","`",":","param","query_execution_id",":","Id","of","submitted","athena","query"]
code: def get_output_location(self, query_execution_id: str) -> str:
      """Get the output location of the query results in S3 URI format.
  
      .. seealso::
          - :external+boto3:py:meth:`Athena.Client.get_query_execution`
  
      :param query_execution_id: Id of submitted athena query
      """
      if not query_execution_id:
          raise ValueError(
              f"Invalid Query execution id. Query execution id: {query_execution_id}"
          )
  
      if not (
          response := self.get_query_info(
              query_execution_id=query_execution_id, use_cache=True
          )
      ):
          raise ValueError(
              f"Unable to get query information for execution id: {query_execution_id}"
          )
  
      try:
          return response["QueryExecution"]["ResultConfiguration"][
              "OutputLocation"
          ]
      except KeyError:
          self.log.error(
              "Error retrieving OutputLocation. Query execution id: %s",
              query_execution_id,
          )
          raise
  
file_path: airflow/airflow/providers/amazon/aws/hooks/athena.py
imports: from __future__ import annotations
  import warnings
  from typing import TYPE_CHECKING, Any
  from airflow.exceptions import AirflowException, AirflowProviderDeprecationWarning
  from airflow.providers.amazon.aws.hooks.base_aws import AwsBaseHook
  from airflow.providers.amazon.aws.utils.waiter_with_logging import wait
label_desc: Use image node_id 9 for calling the AthenaHook obj's underlying member method code with example usage: obj.get_output_location(query_execution_id) and returns: response