|
def execution_agent(state): |
|
"""Executes the optimized SQL query against BigQuery.""" |
|
query = state.get("optimized_sql", "").strip() |
|
client = state["client"] |
|
|
|
if not query: |
|
return {"execution_result": {"error": "No SQL query to execute."}} |
|
|
|
print(f"DEBUG: Final SQL Query before execution:\n{query}") |
|
|
|
if client is None: |
|
return {"execution_result": {"error": "Failed to connect to BigQuery."}} |
|
|
|
try: |
|
|
|
query_job = client.query(query) |
|
results = query_job.result() |
|
|
|
|
|
rows = [] |
|
for row in results: |
|
|
|
row_values = tuple(row.values()) |
|
rows.append(row_values) |
|
|
|
if not rows: |
|
return {"execution_result": {"error": "Query executed successfully but returned no results."}} |
|
|
|
return {"execution_result": rows} |
|
except Exception as e: |
|
return {"execution_result": {"error": str(e)}} |