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

Commit 2fbca42

Browse files
author
Sung Won Chung
committed
Merge branch 'update-dbt-artifact-versions' of https://github.com/datafold/data-diff into update-dbt-artifact-versions
2 parents d169432 + 0213ba2 commit 2fbca42

File tree

6 files changed

+54
-5
lines changed

6 files changed

+54
-5
lines changed

.github/workflows/formatter.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,3 +21,6 @@ jobs:
2121
uses: reviewdog/action-suggester@v1
2222
with:
2323
tool_name: blackfmt
24+
- name: Fail if there are formatting suggestions
25+
if: steps.black_formatter.outputs.is_formatted == 'true'
26+
run: exit 1

data_diff/__main__.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -267,6 +267,20 @@ def write_usage(self, prog: str, args: str = "", prefix: Optional[str] = None) -
267267
metavar="PATH",
268268
help="Specify manifest to utilize for 'prod' comparison paths instead of using configuration.",
269269
)
270+
@click.option(
271+
"-pd",
272+
"--prod-database",
273+
"prod_database",
274+
default=None,
275+
help="Override the dbt production database configuration within dbt_project.yml",
276+
)
277+
@click.option(
278+
"-ps",
279+
"--prod-schema",
280+
"prod_schema",
281+
default=None,
282+
help="Override the dbt production schema configuration within dbt_project.yml",
283+
)
270284
def main(conf, run, **kw):
271285
log_handlers = _get_log_handlers(kw["dbt"])
272286
if kw["table2"] is None and kw["database2"]:
@@ -323,6 +337,8 @@ def main(conf, run, **kw):
323337
where_flag=kw["where"],
324338
stats_flag=kw["stats"],
325339
columns_flag=kw["columns"],
340+
production_database_flag=kw["prod_database"],
341+
production_schema_flag=kw["prod_schema"],
326342
)
327343
else:
328344
return _data_diff(
@@ -366,6 +382,8 @@ def _data_diff(
366382
cloud,
367383
dbt_profiles_dir,
368384
dbt_project_dir,
385+
prod_database,
386+
prod_schema,
369387
select,
370388
state,
371389
threads1=None,

data_diff/dbt.py

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,8 @@ def dbt_diff(
7676
where_flag: Optional[str] = None,
7777
stats_flag: bool = False,
7878
columns_flag: Optional[Tuple[str]] = None,
79+
production_database_flag: Optional[str] = None,
80+
production_schema_flag: Optional[str] = None,
7981
) -> None:
8082
print_version_info()
8183
diff_threads = []
@@ -115,7 +117,16 @@ def dbt_diff(
115117
if log_status_handler:
116118
log_status_handler.set_prefix(f"Diffing {model.alias} \n")
117119

118-
diff_vars = _get_diff_vars(dbt_parser, config, model, where_flag, stats_flag, columns_flag)
120+
diff_vars = _get_diff_vars(
121+
dbt_parser,
122+
config,
123+
model,
124+
where_flag,
125+
stats_flag,
126+
columns_flag,
127+
production_database_flag,
128+
production_schema_flag,
129+
)
119130

120131
# we won't always have a prod path when using state
121132
# when the model DNE in prod manifest, skip the model diff
@@ -169,6 +180,8 @@ def _get_diff_vars(
169180
where_flag: Optional[str] = None,
170181
stats_flag: bool = False,
171182
columns_flag: Optional[Tuple[str]] = None,
183+
production_database_flag: Optional[str] = None,
184+
production_schema_flag: Optional[str] = None,
172185
) -> TDiffVars:
173186
cli_columns = list(columns_flag) if columns_flag else []
174187
dev_database = model.database
@@ -182,6 +195,10 @@ def _get_diff_vars(
182195
else:
183196
prod_database, prod_schema = _get_prod_path_from_config(config, model, dev_database, dev_schema)
184197

198+
# cli flags take precedence over any project level config
199+
prod_database = production_database_flag or prod_database
200+
prod_schema = production_schema_flag or prod_schema
201+
185202
if dbt_parser.requires_upper:
186203
dev_qualified_list = [x.upper() for x in [dev_database, dev_schema, dev_alias] if x]
187204
prod_qualified_list = [x.upper() for x in [prod_database, prod_schema, prod_alias] if x]

pyproject.toml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ authors = ["Datafold <data-diff@datafold.com>"]
66
license = "MIT"
77
readme = "README.md"
88
repository = "https://github.com/datafold/data-diff"
9-
documentation = ""
109
classifiers = [
1110
"Intended Audience :: Developers",
1211
"Intended Audience :: Information Technology",

tests/test_dbt.py

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -964,11 +964,23 @@ def test_get_diff_vars_cli_columns(self, mock_prod_path_from_manifest, mock_prod
964964
mock_dbt_parser.prod_manifest_obj = None
965965
mock_prod_path_from_config.return_value = ("prod_db", "prod_schema")
966966
cli_columns = ("col1", "col2")
967-
968-
diff_vars = _get_diff_vars(mock_dbt_parser, config, mock_model, where_flag=None, columns_flag=cli_columns)
967+
production_database_flag_override = "prod_db_override"
968+
production_schema_flag_override = "prod_schema_override"
969+
970+
diff_vars = _get_diff_vars(
971+
mock_dbt_parser,
972+
config,
973+
mock_model,
974+
where_flag=None,
975+
columns_flag=cli_columns,
976+
production_database_flag=production_database_flag_override,
977+
production_schema_flag=production_schema_flag_override,
978+
)
969979

970980
mock_dbt_parser.get_pk_from_model.assert_called_once()
971981
mock_prod_path_from_config.assert_called_once_with(config, mock_model, mock_model.database, mock_model.schema_)
972982
mock_prod_path_from_manifest.assert_not_called()
973983
self.assertEqual(diff_vars.include_columns, list(cli_columns))
974984
self.assertEqual(diff_vars.exclude_columns, [])
985+
self.assertEqual(diff_vars.prod_path[0], production_database_flag_override)
986+
self.assertEqual(diff_vars.prod_path[1], production_schema_flag_override)

tests/test_dbt_config_validators.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
class TestRunResultsJsonConfig(unittest.TestCase):
1616
def test_run_results(self):
1717
# https://docs.getdbt.com/reference/artifacts/run-results-json
18-
versions = ["v4","v5"]
18+
versions = ["v4", "v5"]
1919

2020
for version in versions:
2121
with self.subTest(version=version):

0 commit comments

Comments
 (0)