Skip to content

Commit 989cd48

Browse files
committed
Add compiler error for materialized views
1 parent acc48a1 commit 989cd48

2 files changed

Lines changed: 17 additions & 1 deletion

File tree

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,10 @@
11
{% macro databricks__get_create_materialized_view_as_sql(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 materialized views. Column '" ~ column_name ~ "' has a mask defined.") %}
6+
{% endif %}
7+
{% endfor %}
28
{%- set materialized_view = adapter.get_config_from_model(config.model) -%}
39
{%- set partition_by = materialized_view.config["partition_by"].partition_by -%}
410
{%- set tblproperties = materialized_view.config["tblproperties"].tblproperties -%}

tests/functional/adapter/column_masks/test_column_mask.py

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,4 +66,14 @@ def models(self):
6666

6767
def test_view_column_mask_failure(self, project):
6868
result = run_dbt(["run"], expect_pass=False)
69-
assert "Column masks are not supported for views" in result.results[0].message
69+
assert "Column masks are not supported" in result.results[0].message
70+
71+
72+
@pytest.mark.skip_profile("databricks_cluster")
73+
class TestMaterializedViewColumnMaskFailure(TestViewColumnMaskFailure):
74+
@pytest.fixture(scope="class")
75+
def models(self):
76+
return {
77+
"base_model.sql": base_model_sql.replace("table", "materialized_view"),
78+
"schema.yml": model,
79+
}

0 commit comments

Comments
 (0)