diff --git a/core/dbt/context/runtime.py b/core/dbt/context/runtime.py index 58072c241a2..22e5dd8f087 100644 --- a/core/dbt/context/runtime.py +++ b/core/dbt/context/runtime.py @@ -1,4 +1,4 @@ -from dbt.utils import get_materialization, add_ephemeral_model_prefix +from dbt.utils import get_materialization, get_ephemeral_type, add_ephemeral_model_prefix import dbt.clients.jinja import dbt.context.common @@ -35,6 +35,10 @@ def resolve(self, args): return target_model, name def create_ephemeral_relation(self, target_model, name): + is_subquery = (get_ephemeral_type(target_model) == 'subquery') + if is_subquery: + return '(\n{}\n)'.format(target_model.compiled_sql) + self.model.set_cte(target_model.unique_id, None) return self.Relation.create( type=self.Relation.CTE, diff --git a/core/dbt/parser/source_config.py b/core/dbt/parser/source_config.py index 070e6b7ff4e..ca36c79f7c9 100644 --- a/core/dbt/parser/source_config.py +++ b/core/dbt/parser/source_config.py @@ -16,7 +16,7 @@ class SourceConfig(object): 'unique_key', 'database', 'severity', - + 'ephemeral_type', 'incremental_strategy' } diff --git a/core/dbt/utils.py b/core/dbt/utils.py index b194f0aa5db..2a5f03c255f 100644 --- a/core/dbt/utils.py +++ b/core/dbt/utils.py @@ -292,6 +292,10 @@ def get_materialization(node): return node.get('config', {}).get('materialized') +def get_ephemeral_type(node): + return node.get('config', {}).get('ephemeral_type') + + def is_enabled(node): return node.get('config', {}).get('enabled') is True