11import dagster as dg
2+ from dagster import RetryPolicy , Backoff
23from sqlalchemy .exc import OperationalError
34from ..extract .extract_data import (
45 extract_series_data ,
1112from pathlib import Path
1213
1314
14- @dg .asset (deps = [extract_series_data ], kinds = {"Supabase" , "Postgres" })
15+ @dg .asset (
16+ deps = [extract_series_data ],
17+ kinds = {"Supabase" , "Postgres" },
18+ name = "load_series_data" ,
19+ retry_policy = RetryPolicy (max_retries = 3 , delay = 2 , backoff = Backoff .EXPONENTIAL )
20+ )
1521def load_series_data () -> None :
1622 database_url : str = fetch_secret ()
1723 table_name : str = "staging.series"
@@ -23,12 +29,16 @@ def load_series_data() -> None:
2329 )
2430 print (colored (" ✓" , "green" ), f"Data loaded into { table_name } " )
2531 except OperationalError as e :
26- print (colored (" ✖" , "red" ), "Error:" , e )
32+ print (colored (" ✖" , "red" ), "Connection error in load_series_data():" , e )
33+ raise
2734
2835
29- @dg .asset (deps = [load_series_data ], kinds = {"Soda" }, key_prefix = ["staging" ], name = "series" )
36+ @dg .asset (
37+ deps = [load_series_data ],
38+ kinds = {"Soda" },
39+ name = "quality_checks_series"
40+ )
3041def data_quality_check_on_series () -> None :
31- # Set working directory to where this file is located
3242 current_file_dir = Path (__file__ ).parent
3343 print (f"Setting cwd to: { current_file_dir } " )
3444
@@ -53,8 +63,16 @@ def data_quality_check_on_series() -> None:
5363 if result .stderr :
5464 print (result .stderr )
5565
66+ if result .returncode != 0 :
67+ raise Exception (f"Soda data quality checks failed with return code { result .returncode } " )
68+
5669
57- @dg .asset (deps = [extract_set_data ], kinds = {"Supabase" , "Postgres" }, key_prefix = ["staging" ], name = "sets" )
70+ @dg .asset (
71+ deps = [extract_set_data ],
72+ kinds = {"Supabase" , "Postgres" },
73+ name = "load_set_data" ,
74+ retry_policy = RetryPolicy (max_retries = 3 , delay = 2 , backoff = Backoff .EXPONENTIAL )
75+ )
5876def load_set_data () -> None :
5977 database_url : str = fetch_secret ()
6078 table_name : str = "staging.sets"
@@ -66,10 +84,16 @@ def load_set_data() -> None:
6684 )
6785 print (colored (" ✓" , "green" ), f"Data loaded into { table_name } " )
6886 except OperationalError as e :
69- print (colored (" ✖" , "red" ), "Error:" , e )
87+ print (colored (" ✖" , "red" ), "Connection error in load_set_data():" , e )
88+ raise
7089
7190
72- @dg .asset (deps = [create_card_dataframe ], kinds = {"Supabase" , "Postgres" }, key_prefix = ["staging" ], name = "cards" )
91+ @dg .asset (
92+ deps = [create_card_dataframe ],
93+ kinds = {"Supabase" , "Postgres" },
94+ name = "load_card_data" ,
95+ retry_policy = RetryPolicy (max_retries = 3 , delay = 2 , backoff = Backoff .EXPONENTIAL )
96+ )
7397def load_card_data () -> None :
7498 database_url : str = fetch_secret ()
7599 table_name : str = "staging.cards"
@@ -81,4 +105,5 @@ def load_card_data() -> None:
81105 )
82106 print (colored (" ✓" , "green" ), f"Data loaded into { table_name } " )
83107 except OperationalError as e :
84- print (colored (" ✖" , "red" ), "Error:" , e )
108+ print (colored (" ✖" , "red" ), "Connection error in load_card_data():" , e )
109+ raise
0 commit comments