|
1 | | -{% macro engine_clause(label) %} |
2 | | - {%- set engine = config.get('engine', validator=validation.any[basestring]) -%} |
3 | | - {%- if engine is not none %} |
4 | | - {{ label }} = {{ engine }} |
5 | | - {%- else %} |
6 | | - {{ label }} = MergeTree() |
7 | | - {%- endif %} |
8 | | -{%- endmacro -%} |
9 | | - |
10 | | -{% macro partition_cols(label) %} |
11 | | - {%- set cols = config.get('partition_by', validator=validation.any[list, basestring]) -%} |
12 | | - {%- if cols is not none %} |
13 | | - {%- if cols is string -%} |
14 | | - {%- set cols = [cols] -%} |
15 | | - {%- endif -%} |
16 | | - {{ label }} ( |
17 | | - {%- for item in cols -%} |
18 | | - {{ item }} |
19 | | - {%- if not loop.last -%},{%- endif -%} |
20 | | - {%- endfor -%} |
21 | | - ) |
22 | | - {%- endif %} |
23 | | -{%- endmacro -%} |
24 | | - |
25 | | -{% macro primary_key_clause(label) %} |
26 | | - {%- set primary_key = config.get('primary_key', validator=validation.any[basestring]) -%} |
27 | | - |
28 | | - {%- if primary_key is not none %} |
29 | | - {{ label }} {{ primary_key }} |
30 | | - {%- endif %} |
31 | | -{%- endmacro -%} |
32 | | - |
33 | | -{% macro order_cols(label) %} |
34 | | - {%- set cols = config.get('order_by', validator=validation.any[list, basestring]) -%} |
35 | | - {%- set engine = config.get('engine', validator=validation.any[basestring]) -%} |
36 | | - {%- set supported = [ |
37 | | - 'HDFS', |
38 | | - 'MaterializedPostgreSQL', |
39 | | - 'S3', |
40 | | - 'EmbeddedRocksDB', |
41 | | - 'Hive' |
42 | | - ] -%} |
43 | | - |
44 | | - {%- if engine is none or 'MergeTree' in engine or engine in supported %} |
45 | | - {%- if cols is not none %} |
46 | | - {%- if cols is string -%} |
47 | | - {%- set cols = [cols] -%} |
48 | | - {%- endif -%} |
49 | | - {{ label }} ( |
50 | | - {%- for item in cols -%} |
51 | | - {{ item }} |
52 | | - {%- if not loop.last -%},{%- endif -%} |
53 | | - {%- endfor -%} |
54 | | - ) |
55 | | - {%- else %} |
56 | | - {{ label }} (tuple()) |
57 | | - {%- endif %} |
58 | | - {%- endif %} |
59 | | -{%- endmacro -%} |
60 | | - |
61 | | -{% macro on_cluster_clause(label) %} |
62 | | - {% set on_cluster = adapter.get_clickhouse_cluster_name() %} |
63 | | - {%- if on_cluster is not none %} |
64 | | - {{ label }} {{ on_cluster }} |
65 | | - {%- endif %} |
66 | | -{%- endmacro -%} |
67 | | - |
68 | | -{% macro clickhouse__create_table_as(temporary, relation, sql) -%} |
69 | | - {% set create_table = create_table_or_empty(temporary, relation, sql) %} |
70 | | - {% if adapter.is_before_version('22.7.1') -%} |
71 | | - {{ create_table }} |
72 | | - {%- else %} |
73 | | - {% call statement('create_table_empty') %} |
74 | | - {{ create_table }} |
75 | | - {% endcall %} |
76 | | - {{ clickhouse__insert_into(relation.include(database=False), sql) }} |
77 | | - {%- endif %} |
78 | | -{%- endmacro %} |
79 | | - |
80 | | -{% macro create_table_or_empty(temporary, relation, sql) -%} |
81 | | - {%- set sql_header = config.get('sql_header', none) -%} |
82 | | - |
83 | | - {{ sql_header if sql_header is not none }} |
84 | | - |
85 | | - {% if temporary -%} |
86 | | - create temporary table {{ relation.name }} |
87 | | - engine Memory |
88 | | - {{ order_cols(label="order by") }} |
89 | | - {{ partition_cols(label="partition by") }} |
90 | | - {{ adapter.get_model_settings(model) }} |
91 | | - {%- else %} |
92 | | - create table {{ relation.include(database=False) }} |
93 | | - {{ on_cluster_clause(label="on cluster") }} |
94 | | - {{ engine_clause(label="engine") }} |
95 | | - {{ order_cols(label="order by") }} |
96 | | - {{ primary_key_clause(label="primary key") }} |
97 | | - {{ partition_cols(label="partition by") }} |
98 | | - {{ adapter.get_model_settings(model) }} |
99 | | - {% if not adapter.is_before_version('22.7.1') -%} |
100 | | - empty |
101 | | - {%- endif %} |
102 | | - {%- endif %} |
103 | | - as ( |
104 | | - {{ sql }} |
105 | | - ) |
106 | | -{%- endmacro %} |
107 | | - |
108 | 1 | {% macro clickhouse__create_view_as(relation, sql) -%} |
109 | 2 | {%- set sql_header = config.get('sql_header', none) -%} |
110 | 3 |
|
|
221 | 114 | {% endcall %} |
222 | 115 | {% endmacro %} |
223 | 116 |
|
224 | | -{% macro clickhouse__insert_into(target_relation, sql) %} |
225 | | - {%- set dest_columns = adapter.get_columns_in_relation(target_relation) -%} |
226 | | - {%- set dest_cols_csv = dest_columns | map(attribute='quoted') | join(', ') -%} |
227 | | - |
228 | | - insert into {{ target_relation }} ({{ dest_cols_csv }}) |
229 | | - {{ sql }} |
230 | | -{%- endmacro %} |
231 | | - |
232 | 117 | {% macro exchange_tables_atomic(old_relation, target_relation) %} |
233 | 118 | {%- call statement('exchange_tables_atomic') -%} |
234 | 119 | EXCHANGE TABLES {{ old_relation }} AND {{ target_relation }} |
235 | 120 | {% endcall %} |
236 | 121 | {% endmacro %} |
| 122 | + |
0 commit comments