-- Copyright 2020 Josh Wills. All rights reserved. -- Copyright Materialize, Inc. and contributors. All rights reserved. -- -- Licensed under the Apache License, Version 2.0 (the "License"); -- you may not use this file except in compliance with the License. -- You may obtain a copy of the License in the LICENSE file at the -- root of this repository, or online at -- -- http://www.apache.org/licenses/LICENSE-2.0 -- -- Unless required by applicable law or agreed to in writing, software -- distributed under the License is distributed on an "AS IS" BASIS, -- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- See the License for the specific language governing permissions and -- limitations under the License. {% materialization table, adapter='materialize' %} {%- set identifier = model['alias'] -%} {%- set old_relation = adapter.get_relation(identifier=identifier, schema=schema, database=database) -%} {%- set target_relation = api.Relation.create(identifier=identifier, schema=schema, database=database, type='materialized_view') -%} {% if old_relation %} {{ adapter.drop_relation(old_relation) }} {% endif %} {{ run_hooks(pre_hooks, inside_transaction=False) }} {{ run_hooks(pre_hooks, inside_transaction=True) }} {% call statement('main') -%} -- Creates a materialized view, not a table, in Materialize {{ materialize__create_materialized_view_as(target_relation, sql) }} {%- endcall %} {{ create_indexes(target_relation) }} {% do persist_docs(target_relation, model) %} {{ run_hooks(post_hooks, inside_transaction=False) }} {{ run_hooks(post_hooks, inside_transaction=True) }} {{ return({'relations': [target_relation]}) }} {% endmaterialization %}