Skip to content
This repository was archived by the owner on May 17, 2024. It is now read-only.

Commit d5946a7

Browse files
authored
Merge pull request #652 from hivedspace/DATA-491
get prod alias from manifest file when provided
2 parents 52eac31 + c57bfed commit d5946a7

File tree

2 files changed

+17
-11
lines changed

2 files changed

+17
-11
lines changed

data_diff/dbt.py

+10-8
Original file line numberDiff line numberDiff line change
@@ -166,22 +166,22 @@ def _get_diff_vars(
166166
cli_columns = list(columns_flag) if columns_flag else []
167167
dev_database = model.database
168168
dev_schema = model.schema_
169-
169+
dev_alias = prod_alias = model.alias
170170
primary_keys = dbt_parser.get_pk_from_model(model, dbt_parser.unique_columns, "primary-key")
171171

172172
# prod path is constructed via configuration or the prod manifest via --state
173173
if dbt_parser.prod_manifest_obj:
174-
prod_database, prod_schema = _get_prod_path_from_manifest(model, dbt_parser.prod_manifest_obj)
174+
prod_database, prod_schema, prod_alias = _get_prod_path_from_manifest(model, dbt_parser.prod_manifest_obj)
175175
else:
176176
prod_database, prod_schema = _get_prod_path_from_config(config, model, dev_database, dev_schema)
177177

178178
if dbt_parser.requires_upper:
179-
dev_qualified_list = [x.upper() for x in [dev_database, dev_schema, model.alias] if x]
180-
prod_qualified_list = [x.upper() for x in [prod_database, prod_schema, model.alias] if x]
179+
dev_qualified_list = [x.upper() for x in [dev_database, dev_schema, dev_alias] if x]
180+
prod_qualified_list = [x.upper() for x in [prod_database, prod_schema, prod_alias] if x]
181181
primary_keys = [x.upper() for x in primary_keys]
182182
else:
183-
dev_qualified_list = [x for x in [dev_database, dev_schema, model.alias] if x]
184-
prod_qualified_list = [x for x in [prod_database, prod_schema, model.alias] if x]
183+
dev_qualified_list = [x for x in [dev_database, dev_schema, dev_alias] if x]
184+
prod_qualified_list = [x for x in [prod_database, prod_schema, prod_alias] if x]
185185

186186
datadiff_model_config = dbt_parser.get_datadiff_model_config(model.meta)
187187

@@ -228,14 +228,16 @@ def _get_prod_path_from_config(config, model, dev_database, dev_schema) -> Tuple
228228
return prod_database, prod_schema
229229

230230

231-
def _get_prod_path_from_manifest(model, prod_manifest) -> Union[Tuple[str, str], Tuple[None, None]]:
231+
def _get_prod_path_from_manifest(model, prod_manifest) -> Union[Tuple[str, str, str], Tuple[None, None, None]]:
232232
prod_database = None
233233
prod_schema = None
234+
prod_alias = None
234235
prod_model = prod_manifest.nodes.get(model.unique_id, None)
235236
if prod_model:
236237
prod_database = prod_model.database
237238
prod_schema = prod_model.schema_
238-
return prod_database, prod_schema
239+
prod_alias = prod_model.alias
240+
return prod_database, prod_schema, prod_alias
239241

240242

241243
def _local_diff(diff_vars: TDiffVars, json_output: bool = False) -> None:

tests/test_dbt.py

+7-3
Original file line numberDiff line numberDiff line change
@@ -685,9 +685,11 @@ def test_get_prod_path_from_manifest_model_exists(self):
685685
mock_prod_manifest.nodes.get.return_value = mock_prod_model
686686
mock_prod_model.database = "prod_db"
687687
mock_prod_model.schema_ = "prod_schema"
688-
prod_database, prod_schema = _get_prod_path_from_manifest(mock_model, mock_prod_manifest)
688+
mock_prod_model.alias = "prod_alias"
689+
prod_database, prod_schema, prod_alias = _get_prod_path_from_manifest(mock_model, mock_prod_manifest)
689690
self.assertEqual(prod_database, mock_prod_model.database)
690691
self.assertEqual(prod_schema, mock_prod_model.schema_)
692+
self.assertEqual(prod_alias, mock_prod_model.alias)
691693

692694
def test_get_prod_path_from_manifest_model_not_exists(self):
693695
mock_model = Mock()
@@ -697,9 +699,11 @@ def test_get_prod_path_from_manifest_model_not_exists(self):
697699
mock_prod_manifest.nodes.get.return_value = None
698700
mock_prod_model.database = "prod_db"
699701
mock_prod_model.schema_ = "prod_schema"
700-
prod_database, prod_schema = _get_prod_path_from_manifest(mock_model, mock_prod_manifest)
702+
mock_prod_model.alias = "prod_alias"
703+
prod_database, prod_schema, prod_alias = _get_prod_path_from_manifest(mock_model, mock_prod_manifest)
701704
self.assertEqual(prod_database, None)
702705
self.assertEqual(prod_schema, None)
706+
self.assertEqual(prod_alias, None)
703707

704708
def test_get_diff_custom_schema_no_config_exception(self):
705709
config = TDatadiffConfig(prod_database="prod_db", prod_schema="prod_schema")
@@ -927,7 +931,7 @@ def test_get_diff_vars_call_get_prod_path_from_manifest(
927931
mock_dbt_parser.requires_upper = False
928932
mock_model.meta = None
929933
mock_dbt_parser.prod_manifest_obj = {"manifest_key": "manifest_value"}
930-
mock_prod_path_from_manifest.return_value = ("prod_db", "prod_schema")
934+
mock_prod_path_from_manifest.return_value = ("prod_db", "prod_schema", "prod_alias")
931935

932936
diff_vars = _get_diff_vars(mock_dbt_parser, config, mock_model)
933937

0 commit comments

Comments
 (0)