Skip to content

Commit ef90eba

Browse files
committed
Add custom error for view column masks
1 parent 9832511 commit ef90eba

2 files changed

Lines changed: 19 additions & 0 deletions

File tree

dbt/include/databricks/macros/relations/view/create.sql

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,10 @@
11
{% macro databricks__create_view_as(relation, sql) %}
2+
{# Column masks result in silent failure for views, so throw custom compiler error #}
3+
{% for column_name, column in model.columns.items() %}
4+
{% if column is mapping and column.get('column_mask') %}
5+
{% do exceptions.raise_compiler_error("Column masks are not supported for views. Column '" ~ column_name ~ "' has a mask defined.") %}
6+
{% endif %}
7+
{% endfor %}
28
{{ log("Creating view " ~ relation) }}
39
create or replace view {{ relation.render() }}
410
{%- if config.persist_column_docs() -%}

tests/functional/adapter/column_masks/test_column_mask.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,3 +51,16 @@ def models(self):
5151
"base_model.sql": base_model_sql.replace("table", "incremental"),
5252
"schema.yml": model,
5353
}
54+
55+
56+
class TestViewColumnMaskFailure(MaterializationV2Mixin):
57+
@pytest.fixture(scope="class")
58+
def models(self):
59+
return {
60+
"base_model.sql": base_model_sql.replace("table", "view"),
61+
"schema.yml": model,
62+
}
63+
64+
def test_view_column_mask_failure(self, project):
65+
result = run_dbt(["run"], expect_pass=False)
66+
assert "Column masks are not supported for views" in result.results[0].message

0 commit comments

Comments
 (0)