Skip to content

Commit b2f0411

Browse files
fix: enforce BigQuery query contract (#137)
1 parent c1c97e0 commit b2f0411

11 files changed

Lines changed: 626 additions & 96 deletions

File tree

macro_agents/src/macro_agents/defs/analysis/data_points/data_point_finder.py

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,11 @@ def query_data_for_findings(
3838
pct_change_1y,
3939
date_grain
4040
FROM agent_fred_series_latest_aggregates
41-
WHERE month >= DATE_TRUNC('month', CAST(? AS DATE) - INTERVAL '12 months')
42-
AND month <= CAST(? AS DATE)
41+
WHERE month >= DATE_SUB(
42+
DATE_TRUNC(DATE(@week_start), MONTH),
43+
INTERVAL 12 MONTH
44+
)
45+
AND month <= DATE(@week_end)
4346
AND current_value IS NOT NULL
4447
ORDER BY series_code, month DESC
4548
"""
@@ -99,17 +102,18 @@ def query_data_for_findings(
99102
weekly_avg_score,
100103
score_momentum_pct
101104
FROM agent_reddit_sentiment_trends
102-
WHERE date >= CAST(? AS DATE) - INTERVAL '3 months'
103-
AND date <= CAST(? AS DATE)
105+
WHERE date >= DATE_SUB(DATE(@week_start), INTERVAL 3 MONTH)
106+
AND date <= DATE(@week_end)
104107
ORDER BY date DESC
105108
"""
106109

107110
# Execute queries
108-
economic_df = bq.execute_query(economic_query, params=[week_start, week_end])
111+
date_params = {"week_start": week_start, "week_end": week_end}
112+
economic_df = bq.execute_query(economic_query, params=date_params)
109113
market_df = bq.execute_query(market_query)
110114
commodity_df = bq.execute_query(commodity_query)
111115
correlation_df = bq.execute_query(correlation_query)
112-
sentiment_df = bq.execute_query(sentiment_query, params=[week_start, week_end])
116+
sentiment_df = bq.execute_query(sentiment_query, params=date_params)
113117

114118
return {
115119
"economic": economic_df,

macro_agents/src/macro_agents/defs/analysis/economy_state/economy_state_charts.py

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -446,11 +446,11 @@ def _fetch_analysis_row(
446446
analysis_content,
447447
chart_manifest
448448
FROM economy_state_analysis
449-
WHERE dagster_run_id = ?
449+
WHERE dagster_run_id = @run_id
450450
ORDER BY analysis_timestamp DESC
451451
LIMIT 1
452452
"""
453-
df = bq.execute_query(query, read_only=True, params=[run_id])
453+
df = bq.execute_query(query, read_only=True, params={"run_id": run_id})
454454
if df.is_empty():
455455
return None
456456
return df.to_dicts()[0]
@@ -558,14 +558,18 @@ def generate_economy_state_charts(
558558
if manifest:
559559
update_query = """
560560
UPDATE economy_state_analysis
561-
SET chart_manifest = CAST(? AS JSON),
562-
analysis_content = ?
563-
WHERE analysis_timestamp = ?
561+
SET chart_manifest = PARSE_JSON(@chart_manifest),
562+
analysis_content = @analysis_content
563+
WHERE analysis_timestamp = CAST(@analysis_timestamp AS TIMESTAMP)
564564
"""
565565
bq.execute_query(
566566
update_query,
567567
read_only=False,
568-
params=[json.dumps(manifest), updated_content, timestamp_str],
568+
params={
569+
"chart_manifest": json.dumps(manifest),
570+
"analysis_content": updated_content,
571+
"analysis_timestamp": timestamp_str,
572+
},
569573
)
570574

571575
return dg.MaterializeResult(

macro_agents/src/macro_agents/defs/analysis/investments/investment_recommendation_charts.py

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -461,11 +461,11 @@ def _fetch_recommendations_row(
461461
personality,
462462
recommendations_content
463463
FROM investment_recommendations
464-
WHERE dagster_run_id = ?
464+
WHERE dagster_run_id = @run_id
465465
ORDER BY analysis_timestamp DESC
466466
LIMIT 1
467467
"""
468-
df = bq.execute_query(query, read_only=True, params=[run_id])
468+
df = bq.execute_query(query, read_only=True, params={"run_id": run_id})
469469
if df.is_empty():
470470
return None
471471
return df.to_dicts()[0]
@@ -579,14 +579,18 @@ def generate_investment_recommendation_charts(
579579
)
580580
update_query = """
581581
UPDATE investment_recommendations
582-
SET chart_manifest = CAST(? AS JSON),
583-
recommendations_content = ?
584-
WHERE analysis_timestamp = ?
582+
SET chart_manifest = PARSE_JSON(@chart_manifest),
583+
recommendations_content = @recommendations_content
584+
WHERE analysis_timestamp = CAST(@analysis_timestamp AS TIMESTAMP)
585585
"""
586586
bq.execute_query(
587587
update_query,
588588
read_only=False,
589-
params=[json.dumps(manifest), updated_content, timestamp_str],
589+
params={
590+
"chart_manifest": json.dumps(manifest),
591+
"recommendations_content": updated_content,
592+
"analysis_timestamp": timestamp_str,
593+
},
590594
)
591595

592596
return dg.MaterializeResult(

0 commit comments

Comments
 (0)