Method: Egis::Client#execute_query

Defined in:
lib/egis/client.rb

#execute_query(query, work_group: nil, database: nil, output_location: nil, async: true, system_execution: false) ⇒ Egis::QueryStatus

Executes Athena query. By default, queries are being executed asynchronously.

Parameters:

  • query (String)

    SQL query to execute

  • async (Boolean) (defaults to: true)

    Decide whether you want to run query asynchronously or block execution until it finishes

  • work_group (String) (defaults to: nil)

    Change Athena work group the query will be executed in.

  • database (String) (defaults to: nil)

    Run query in the context of a specific database (implicit table references are expected to be in given database).

  • output_location (String) (defaults to: nil)

    S3 url of the desired output location. By default, Athena uses location defined in by workgroup.

Returns:

Raises:



74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
# File 'lib/egis/client.rb', line 74

def execute_query(query, work_group: nil, database: nil, output_location: nil, async: true, system_execution: false)
  query_id = aws_athena_client.start_query_execution(
    query_execution_params(query, work_group, database, output_location)
  ).query_execution_id

  log_query_execution(query, query_id, system_execution)

  return query_status(query_id) if Egis.mode.async(async)

  query_status = wait_for_query_to_finish(query_id)

  raise Egis::Errors::QueryExecutionError, query_status.message unless query_status.finished?

  query_status
end