diff --git a/src/preset_cli/api/clients/dbt.py b/src/preset_cli/api/clients/dbt.py index a3b3059f..9a48982b 100644 --- a/src/preset_cli/api/clients/dbt.py +++ b/src/preset_cli/api/clients/dbt.py @@ -791,6 +791,7 @@ def get_models(self, job_id: int) -> List[ModelSchema]: name description type + meta } } } diff --git a/src/preset_cli/cli/superset/sync/dbt/command.py b/src/preset_cli/cli/superset/sync/dbt/command.py index 88ee445e..1156e53d 100644 --- a/src/preset_cli/cli/superset/sync/dbt/command.py +++ b/src/preset_cli/cli/superset/sync/dbt/command.py @@ -394,7 +394,7 @@ def get_sl_metric( sql = output[start:] models = get_models_from_sql(sql, dialect, model_map) - if len(models) > 1: + if not models or len(models) > 1: return None model = models[0] @@ -427,7 +427,7 @@ def fetch_sl_metrics( continue models = get_models_from_sql(sql, dialect, model_map) - if len(models) > 1: + if not models or len(models) > 1: continue model = models[0] diff --git a/src/preset_cli/cli/superset/sync/dbt/metrics.py b/src/preset_cli/cli/superset/sync/dbt/metrics.py index d82a0cd9..0c8a7a00 100644 --- a/src/preset_cli/cli/superset/sync/dbt/metrics.py +++ b/src/preset_cli/cli/superset/sync/dbt/metrics.py @@ -381,7 +381,7 @@ def get_models_from_sql( sql: str, dialect: MFSQLEngine, model_map: Dict[ModelKey, ModelSchema], -) -> List[ModelSchema]: +) -> Optional[List[ModelSchema]]: """ Return the model associated with a SQL query. """ @@ -390,7 +390,7 @@ def get_models_from_sql( for table in sources: if ModelKey(table.db, table.name) not in model_map: - raise ValueError(f"Unable to find model for SQL source {table}") + return None return [model_map[ModelKey(table.db, table.name)] for table in sources] diff --git a/tests/cli/superset/sync/dbt/metrics_test.py b/tests/cli/superset/sync/dbt/metrics_test.py index 3ea099db..34bfc771 100644 --- a/tests/cli/superset/sync/dbt/metrics_test.py +++ b/tests/cli/superset/sync/dbt/metrics_test.py @@ -811,9 +811,9 @@ def test_get_models_from_sql() -> None: model_map, # type: ignore ) == [{"name": "a"}, {"name": "b"}] - with pytest.raises(ValueError) as excinfo: - get_models_from_sql("SELECT 1 FROM schema.c", MFSQLEngine.BIGQUERY, {}) - assert str(excinfo.value) == "Unable to find model for SQL source schema.c" + assert ( + get_models_from_sql("SELECT 1 FROM schema.c", MFSQLEngine.BIGQUERY, {}) is None + ) def test_get_superset_metrics_per_model() -> None: