dbt-firebolt 1.8.3__tar.gz → 1.9.1__tar.gz
Sign up to get free protection for your applications and to get access to all the features.
- {dbt_firebolt-1.8.3 → dbt_firebolt-1.9.1}/PKG-INFO +12 -3
- {dbt_firebolt-1.8.3 → dbt_firebolt-1.9.1}/README.md +1 -1
- {dbt_firebolt-1.8.3 → dbt_firebolt-1.9.1}/dbt/adapters/firebolt/__init__.py +1 -1
- {dbt_firebolt-1.8.3 → dbt_firebolt-1.9.1}/dbt/adapters/firebolt/connections.py +4 -2
- {dbt_firebolt-1.8.3 → dbt_firebolt-1.9.1}/dbt/adapters/firebolt/impl.py +38 -8
- {dbt_firebolt-1.8.3 → dbt_firebolt-1.9.1}/dbt/include/firebolt/macros/adapters.sql +8 -6
- {dbt_firebolt-1.8.3 → dbt_firebolt-1.9.1}/dbt/include/firebolt/macros/dbt_external_tables/create_external_table.sql +7 -3
- dbt_firebolt-1.9.1/dbt/include/firebolt/macros/materializations/snapshot_merge.sql +19 -0
- {dbt_firebolt-1.8.3 → dbt_firebolt-1.9.1}/dbt/include/firebolt/macros/relations/table/create.sql +6 -2
- {dbt_firebolt-1.8.3 → dbt_firebolt-1.9.1}/dbt_firebolt.egg-info/PKG-INFO +13 -4
- dbt_firebolt-1.9.1/dbt_firebolt.egg-info/SOURCES.txt +74 -0
- dbt_firebolt-1.8.3/dbt_firebolt.egg-info/SOURCES.txt +0 -65
- {dbt_firebolt-1.8.3 → dbt_firebolt-1.9.1}/LICENSE +0 -0
- {dbt_firebolt-1.8.3 → dbt_firebolt-1.9.1}/MANIFEST.in +0 -0
- {dbt_firebolt-1.8.3 → dbt_firebolt-1.9.1}/dbt/adapters/firebolt/__version__.py +0 -0
- {dbt_firebolt-1.8.3 → dbt_firebolt-1.9.1}/dbt/adapters/firebolt/column.py +0 -0
- {dbt_firebolt-1.8.3 → dbt_firebolt-1.9.1}/dbt/adapters/firebolt/relation.py +0 -0
- {dbt_firebolt-1.8.3 → dbt_firebolt-1.9.1}/dbt/adapters/firebolt/relation_configs/__init__.py +0 -0
- {dbt_firebolt-1.8.3 → dbt_firebolt-1.9.1}/dbt/include/firebolt/__init__.py +0 -0
- {dbt_firebolt-1.8.3 → dbt_firebolt-1.9.1}/dbt/include/firebolt/dbt_project.yml +0 -0
- {dbt_firebolt-1.8.3 → dbt_firebolt-1.9.1}/dbt/include/firebolt/macros/adapters/apply_grants.sql +0 -0
- {dbt_firebolt-1.8.3 → dbt_firebolt-1.9.1}/dbt/include/firebolt/macros/adapters/relation.sql +0 -0
- {dbt_firebolt-1.8.3 → dbt_firebolt-1.9.1}/dbt/include/firebolt/macros/catalog.sql +0 -0
- {dbt_firebolt-1.8.3 → dbt_firebolt-1.9.1}/dbt/include/firebolt/macros/dbt_external_tables/dropif.sql +0 -0
- {dbt_firebolt-1.8.3 → dbt_firebolt-1.9.1}/dbt/include/firebolt/macros/dbt_external_tables/get_external_build_plan.sql +0 -0
- {dbt_firebolt-1.8.3 → dbt_firebolt-1.9.1}/dbt/include/firebolt/macros/materializations/clone.sql +0 -0
- {dbt_firebolt-1.8.3 → dbt_firebolt-1.9.1}/dbt/include/firebolt/macros/materializations/materialized_view.sql +0 -0
- {dbt_firebolt-1.8.3 → dbt_firebolt-1.9.1}/dbt/include/firebolt/macros/materializations/models/incremental/column_helpers.sql +0 -0
- {dbt_firebolt-1.8.3 → dbt_firebolt-1.9.1}/dbt/include/firebolt/macros/materializations/models/incremental/incremental.sql +0 -0
- {dbt_firebolt-1.8.3 → dbt_firebolt-1.9.1}/dbt/include/firebolt/macros/materializations/models/incremental/is_incremental.sql +0 -0
- {dbt_firebolt-1.8.3 → dbt_firebolt-1.9.1}/dbt/include/firebolt/macros/materializations/models/incremental/merge.sql +0 -0
- {dbt_firebolt-1.8.3 → dbt_firebolt-1.9.1}/dbt/include/firebolt/macros/materializations/models/incremental/on_schema_change.sql +0 -0
- {dbt_firebolt-1.8.3 → dbt_firebolt-1.9.1}/dbt/include/firebolt/macros/materializations/models/incremental/strategies.sql +0 -0
- {dbt_firebolt-1.8.3 → dbt_firebolt-1.9.1}/dbt/include/firebolt/macros/materializations/seed.sql +0 -0
- {dbt_firebolt-1.8.3 → dbt_firebolt-1.9.1}/dbt/include/firebolt/macros/materializations/table.sql +0 -0
- {dbt_firebolt-1.8.3 → dbt_firebolt-1.9.1}/dbt/include/firebolt/macros/materializations/test.sql +0 -0
- {dbt_firebolt-1.8.3 → dbt_firebolt-1.9.1}/dbt/include/firebolt/macros/materializations/view.sql +0 -0
- {dbt_firebolt-1.8.3 → dbt_firebolt-1.9.1}/dbt/include/firebolt/macros/relations/materialized_view/alter.sql +0 -0
- {dbt_firebolt-1.8.3 → dbt_firebolt-1.9.1}/dbt/include/firebolt/macros/relations/materialized_view/create.sql +0 -0
- {dbt_firebolt-1.8.3 → dbt_firebolt-1.9.1}/dbt/include/firebolt/macros/relations/materialized_view/describe.sql +0 -0
- {dbt_firebolt-1.8.3 → dbt_firebolt-1.9.1}/dbt/include/firebolt/macros/relations/materialized_view/drop.sql +0 -0
- {dbt_firebolt-1.8.3 → dbt_firebolt-1.9.1}/dbt/include/firebolt/macros/relations/materialized_view/refresh.sql +0 -0
- {dbt_firebolt-1.8.3 → dbt_firebolt-1.9.1}/dbt/include/firebolt/macros/relations/table/drop.sql +0 -0
- {dbt_firebolt-1.8.3 → dbt_firebolt-1.9.1}/dbt/include/firebolt/macros/relations/table/rename.sql +0 -0
- {dbt_firebolt-1.8.3 → dbt_firebolt-1.9.1}/dbt/include/firebolt/macros/relations/table/replace.sql +0 -0
- {dbt_firebolt-1.8.3 → dbt_firebolt-1.9.1}/dbt/include/firebolt/macros/relations/view/create.sql +0 -0
- {dbt_firebolt-1.8.3 → dbt_firebolt-1.9.1}/dbt/include/firebolt/macros/relations/view/drop.sql +0 -0
- {dbt_firebolt-1.8.3 → dbt_firebolt-1.9.1}/dbt/include/firebolt/macros/relations/view/rename.sql +0 -0
- {dbt_firebolt-1.8.3 → dbt_firebolt-1.9.1}/dbt/include/firebolt/macros/relations/view/replace.sql +0 -0
- {dbt_firebolt-1.8.3 → dbt_firebolt-1.9.1}/dbt/include/firebolt/macros/utils/array_append.sql +0 -0
- {dbt_firebolt-1.8.3 → dbt_firebolt-1.9.1}/dbt/include/firebolt/macros/utils/array_concat.sql +0 -0
- {dbt_firebolt-1.8.3 → dbt_firebolt-1.9.1}/dbt/include/firebolt/macros/utils/array_construct.sql +0 -0
- {dbt_firebolt-1.8.3 → dbt_firebolt-1.9.1}/dbt/include/firebolt/macros/utils/bool_or.sql +0 -0
- {dbt_firebolt-1.8.3 → dbt_firebolt-1.9.1}/dbt/include/firebolt/macros/utils/cast_bool_to_text.sql +0 -0
- {dbt_firebolt-1.8.3 → dbt_firebolt-1.9.1}/dbt/include/firebolt/macros/utils/dateadd.sql +0 -0
- {dbt_firebolt-1.8.3 → dbt_firebolt-1.9.1}/dbt/include/firebolt/macros/utils/datediff.sql +0 -0
- {dbt_firebolt-1.8.3 → dbt_firebolt-1.9.1}/dbt/include/firebolt/macros/utils/except.sql +0 -0
- {dbt_firebolt-1.8.3 → dbt_firebolt-1.9.1}/dbt/include/firebolt/macros/utils/intersect.sql +0 -0
- {dbt_firebolt-1.8.3 → dbt_firebolt-1.9.1}/dbt/include/firebolt/macros/utils/listagg.sql +0 -0
- {dbt_firebolt-1.8.3 → dbt_firebolt-1.9.1}/dbt/include/firebolt/macros/utils/position.sql +0 -0
- {dbt_firebolt-1.8.3 → dbt_firebolt-1.9.1}/dbt/include/firebolt/macros/utils/right.sql +0 -0
- {dbt_firebolt-1.8.3 → dbt_firebolt-1.9.1}/dbt/include/firebolt/macros/utils/split_part.sql +0 -0
- {dbt_firebolt-1.8.3 → dbt_firebolt-1.9.1}/dbt/include/firebolt/macros/utils/timestamps.sql +0 -0
- {dbt_firebolt-1.8.3 → dbt_firebolt-1.9.1}/dbt_firebolt.egg-info/dependency_links.txt +0 -0
- {dbt_firebolt-1.8.3 → dbt_firebolt-1.9.1}/dbt_firebolt.egg-info/requires.txt +0 -0
- {dbt_firebolt-1.8.3 → dbt_firebolt-1.9.1}/dbt_firebolt.egg-info/top_level.txt +0 -0
- {dbt_firebolt-1.8.3 → dbt_firebolt-1.9.1}/pyproject.toml +0 -0
- {dbt_firebolt-1.8.3 → dbt_firebolt-1.9.1}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: dbt_firebolt
|
3
|
-
Version: 1.
|
3
|
+
Version: 1.9.1
|
4
4
|
Summary: The Firebolt adapter plugin for dbt (data build tool)
|
5
5
|
Home-page: https://github.com/firebolt-db/dbt-firebolt
|
6
6
|
Author: Firebolt
|
@@ -18,8 +18,17 @@ Classifier: Programming Language :: Python :: 3.11
|
|
18
18
|
Classifier: Programming Language :: Python :: 3.12
|
19
19
|
Requires-Python: >=3.8
|
20
20
|
Description-Content-Type: text/markdown
|
21
|
-
Provides-Extra: dev
|
22
21
|
License-File: LICENSE
|
22
|
+
Requires-Dist: dbt-adapters<2.0,>=1.0
|
23
|
+
Requires-Dist: dbt-core>=1.8.0
|
24
|
+
Requires-Dist: firebolt-sdk>=1.5.0
|
25
|
+
Requires-Dist: pydantic>=0.23
|
26
|
+
Provides-Extra: dev
|
27
|
+
Requires-Dist: allure-pytest==2.*; extra == "dev"
|
28
|
+
Requires-Dist: dbt-tests-adapter~=1.6; extra == "dev"
|
29
|
+
Requires-Dist: mypy==1.4.1; extra == "dev"
|
30
|
+
Requires-Dist: pre-commit==3.5.0; extra == "dev"
|
31
|
+
Requires-Dist: pytest==7.*; extra == "dev"
|
23
32
|
|
24
33
|
<img width="1113" alt="Screen Shot 2021-12-10 at 1 09 09 PM" src="https://user-images.githubusercontent.com/7674553/145641621-a7dabe78-da92-4f0a-bbd2-54ccf7f34b57.png">
|
25
34
|
|
@@ -69,7 +78,7 @@ The table below shows which dbt and Firebolt features are supported by the adapt
|
|
69
78
|
| Incremental materializations - insert_overwrite | :white_check_mark: |
|
70
79
|
| Incremental materializations - delete+insert | :white_check_mark: |
|
71
80
|
| Incremental materializations - merge | :x: |
|
72
|
-
| Snapshots | :
|
81
|
+
| Snapshots | :white_check_mark: |
|
73
82
|
| Seeds | :white_check_mark: |
|
74
83
|
| Tests | :white_check_mark: |
|
75
84
|
| Documentation | :white_check_mark: |
|
@@ -46,7 +46,7 @@ The table below shows which dbt and Firebolt features are supported by the adapt
|
|
46
46
|
| Incremental materializations - insert_overwrite | :white_check_mark: |
|
47
47
|
| Incremental materializations - delete+insert | :white_check_mark: |
|
48
48
|
| Incremental materializations - merge | :x: |
|
49
|
-
| Snapshots | :
|
49
|
+
| Snapshots | :white_check_mark: |
|
50
50
|
| Seeds | :white_check_mark: |
|
51
51
|
| Tests | :white_check_mark: |
|
52
52
|
| Documentation | :white_check_mark: |
|
@@ -20,6 +20,7 @@ from dbt_common.exceptions import (
|
|
20
20
|
)
|
21
21
|
from firebolt.client import DEFAULT_API_URL
|
22
22
|
from firebolt.client.auth import Auth, ClientCredentials, UsernamePassword
|
23
|
+
from firebolt.common._types import ExtendedType
|
23
24
|
from firebolt.db import ARRAY, DECIMAL
|
24
25
|
from firebolt.db import connect as sdk_connect
|
25
26
|
from firebolt.db.connection import Connection as SDKConnection
|
@@ -191,8 +192,8 @@ class FireboltConnectionManager(SQLConnectionManager):
|
|
191
192
|
raise NotImplementedError('`cancel` is not implemented for this adapter!')
|
192
193
|
|
193
194
|
@classmethod
|
194
|
-
def data_type_code_to_name(
|
195
|
-
cls, type_code: Union[type,
|
195
|
+
def data_type_code_to_name(
|
196
|
+
cls, type_code: Union[type, ExtendedType] # type: ignore[override] # FIR-29423
|
196
197
|
) -> str:
|
197
198
|
"""
|
198
199
|
Convert a Firebolt data type code to a string representing the data type.
|
@@ -218,6 +219,7 @@ class FireboltConnectionManager(SQLConnectionManager):
|
|
218
219
|
return 'bytea'
|
219
220
|
else:
|
220
221
|
return 'text'
|
222
|
+
return 'text'
|
221
223
|
|
222
224
|
|
223
225
|
def _determine_auth(credentials: FireboltCredentials) -> Auth:
|
@@ -1,7 +1,6 @@
|
|
1
1
|
import re
|
2
2
|
import time
|
3
3
|
from dataclasses import dataclass
|
4
|
-
from datetime import datetime
|
5
4
|
from typing import Any, List, Mapping, Optional, Union
|
6
5
|
|
7
6
|
import agate
|
@@ -29,21 +28,45 @@ from dbt.adapters.firebolt.connections import FireboltConnectionManager
|
|
29
28
|
from dbt.adapters.firebolt.relation import FireboltRelation
|
30
29
|
|
31
30
|
|
31
|
+
def quote_columns(columns: Union[str, List[str]]) -> Union[str, List[str]]:
|
32
|
+
if isinstance(columns, str):
|
33
|
+
return f'"{columns}"'
|
34
|
+
quoted_columns = []
|
35
|
+
for col in columns:
|
36
|
+
if col.startswith('"') and col.endswith('"'):
|
37
|
+
quoted_columns.append(col)
|
38
|
+
else:
|
39
|
+
quoted_columns.append(f'"{col}"')
|
40
|
+
return quoted_columns
|
41
|
+
|
42
|
+
|
32
43
|
@dataclass
|
33
44
|
class FireboltIndexConfig(dbtClassMixin):
|
34
45
|
index_type: str
|
46
|
+
index_name: Optional[str] = None
|
35
47
|
join_columns: Optional[Union[str, List[str]]] = None
|
36
48
|
key_columns: Optional[Union[str, List[str]]] = None
|
37
49
|
dimension_column: Optional[Union[str, List[str]]] = None
|
38
50
|
aggregation: Optional[Union[str, List[str]]] = None
|
39
51
|
|
52
|
+
def __post_init__(self) -> None:
|
53
|
+
# quote unquoted columns
|
54
|
+
if self.join_columns:
|
55
|
+
self.join_columns = quote_columns(self.join_columns)
|
56
|
+
if self.key_columns:
|
57
|
+
self.key_columns = quote_columns(self.key_columns)
|
58
|
+
if self.dimension_column:
|
59
|
+
self.dimension_column = quote_columns(self.dimension_column)
|
60
|
+
|
40
61
|
def render_name(self, relation: FireboltRelation) -> str:
|
41
62
|
"""
|
42
63
|
Name an index according to the following format, joined by `_`:
|
43
64
|
index type, relation name, key/join columns, timestamp (unix & UTC)
|
44
65
|
example index name: join_my_model_customer_id_1633504263.
|
45
66
|
"""
|
46
|
-
|
67
|
+
if self.index_name:
|
68
|
+
return self.index_name
|
69
|
+
now_unix = str(int(time.time()))
|
47
70
|
# If column_names is a list with > 1 members, join with _,
|
48
71
|
# otherwise do not. We were getting index names like
|
49
72
|
# join__idx__emf_customers__f_i_r_s_t___n_a_m_e__165093112.
|
@@ -51,14 +74,23 @@ class FireboltIndexConfig(dbtClassMixin):
|
|
51
74
|
spine_col = (
|
52
75
|
'_'.join(column_names) if isinstance(column_names, list) else column_names
|
53
76
|
)
|
77
|
+
# Additional hash to ensure uniqueness after spaces are removed
|
78
|
+
column_hash = str(hash(spine_col))[:5]
|
54
79
|
inputs = [
|
55
80
|
f'{self.index_type}_idx',
|
56
81
|
relation.identifier,
|
57
82
|
spine_col,
|
83
|
+
column_hash,
|
58
84
|
now_unix,
|
59
85
|
]
|
60
|
-
|
61
|
-
|
86
|
+
index_name = '__'.join([x for x in inputs if x is not None])
|
87
|
+
if len(index_name) > 255:
|
88
|
+
# Firebolt index names must be <= 255 characters.
|
89
|
+
# If the index name is too long, hash it.
|
90
|
+
return f'{self.index_type}_idx_{hash(index_name)}'
|
91
|
+
# Remove any spaces or quotes from the index name.
|
92
|
+
index_name = index_name.replace(' ', '_').replace('"', '')
|
93
|
+
return index_name
|
62
94
|
|
63
95
|
@classmethod
|
64
96
|
def parse(cls, raw_index: Optional[Mapping]) -> Optional['FireboltIndexConfig']:
|
@@ -88,13 +120,12 @@ class FireboltIndexConfig(dbtClassMixin):
|
|
88
120
|
'for join indexes.'
|
89
121
|
)
|
90
122
|
if index_config.index_type.upper() == 'AGGREGATING' and not (
|
91
|
-
index_config.
|
123
|
+
index_config.aggregation
|
92
124
|
):
|
93
125
|
raise CompilationError(
|
94
126
|
'Invalid aggregating index definition:\n'
|
95
127
|
f' Got: {index_config}.\n'
|
96
|
-
'
|
97
|
-
'for aggregating indexes.'
|
128
|
+
' aggregation must be specified for aggregating indexes.'
|
98
129
|
)
|
99
130
|
return index_config
|
100
131
|
except ValidationError as exc:
|
@@ -274,7 +305,6 @@ class FireboltAdapter(SQLAdapter):
|
|
274
305
|
columns: the number of rows that are different between the two
|
275
306
|
relations and the number of mismatched rows.
|
276
307
|
"""
|
277
|
-
# This method only really exists for test reasons.
|
278
308
|
names: List[str]
|
279
309
|
if column_names is None:
|
280
310
|
columns = self.get_columns_in_relation(relation_a)
|
@@ -75,18 +75,20 @@
|
|
75
75
|
create_statement (str): either "CREATE JOIN INDEX" or
|
76
76
|
"CREATE AND GENERATE AGGREGATING INDEX"
|
77
77
|
spine_col ([str]):
|
78
|
-
if agg index, key columns
|
78
|
+
if agg index, key columns - can be none
|
79
79
|
if join index, join column
|
80
80
|
other_col ([str]):
|
81
81
|
if agg index, aggregating columns
|
82
82
|
if join index, dimension column
|
83
83
|
#}
|
84
84
|
{{ create_statement }} "{{ index_name }}" ON {{ relation }} (
|
85
|
-
{% if spine_col
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
85
|
+
{% if spine_col -%}
|
86
|
+
{% if spine_col is iterable and spine_col is not string -%}
|
87
|
+
{{ spine_col | join(', ') }},
|
88
|
+
{% else -%}
|
89
|
+
{{ spine_col }},
|
90
|
+
{% endif -%}
|
91
|
+
{%- endif -%}
|
90
92
|
{% if other_col is iterable and other_col is not string -%}
|
91
93
|
{{ other_col | join(', ') }}
|
92
94
|
{%- else -%}
|
@@ -51,6 +51,7 @@
|
|
51
51
|
{# COPY FROM is only available in Firebolt 2.0. #}
|
52
52
|
{%- set external = source_node.external -%}
|
53
53
|
{%- set credentials = external.credentials -%}
|
54
|
+
{%- set where_clause = external.where -%}
|
54
55
|
{%- set options = external.options -%}
|
55
56
|
{%- set csv_options = options.csv_options -%}
|
56
57
|
{%- set error_file_credentials = options.error_file_credentials -%}
|
@@ -75,7 +76,7 @@
|
|
75
76
|
)
|
76
77
|
{%- endif %}
|
77
78
|
FROM '{{external.url}}'
|
78
|
-
{%- if options %}
|
79
|
+
{%- if options or credentials %}
|
79
80
|
WITH
|
80
81
|
{%- if options.object_pattern %}
|
81
82
|
PATTERN = '{{options.object_pattern}}'
|
@@ -130,8 +131,11 @@
|
|
130
131
|
TIMESTAMP_FORMAT = '{{ csv_options.timestamp_format }}'
|
131
132
|
{%- endif %}
|
132
133
|
{%- endif %}
|
134
|
+
{%- if credentials %}
|
135
|
+
CREDENTIALS = (AWS_KEY_ID = '{{credentials.aws_key_id}}' AWS_SECRET_KEY = '{{credentials.aws_secret_key}}')
|
136
|
+
{%- endif %}
|
133
137
|
{%- endif %}
|
134
|
-
{%- if
|
135
|
-
|
138
|
+
{%- if where_clause %}
|
139
|
+
WHERE {{ where_clause }}
|
136
140
|
{%- endif %}
|
137
141
|
{% endmacro %}
|
@@ -0,0 +1,19 @@
|
|
1
|
+
{% macro firebolt__snapshot_merge_sql(target, source, insert_cols) -%}
|
2
|
+
{%- set insert_cols_csv = insert_cols | join(', ') -%}
|
3
|
+
|
4
|
+
UPDATE {{ target.render() }} AS DBT_INTERNAL_DEST
|
5
|
+
SET dbt_valid_to = DBT_INTERNAL_SOURCE.dbt_valid_to
|
6
|
+
FROM {{ source }} AS DBT_INTERNAL_SOURCE
|
7
|
+
WHERE DBT_INTERNAL_SOURCE.dbt_scd_id = DBT_INTERNAL_DEST.dbt_scd_id
|
8
|
+
AND DBT_INTERNAL_DEST.dbt_valid_to IS NULL
|
9
|
+
AND DBT_INTERNAL_SOURCE.dbt_change_type IN ('update', 'delete');
|
10
|
+
|
11
|
+
INSERT INTO {{ target.render() }} ({{ insert_cols_csv }})
|
12
|
+
SELECT {{ insert_cols_csv }}
|
13
|
+
FROM {{ source }} AS DBT_INTERNAL_SOURCE
|
14
|
+
WHERE DBT_INTERNAL_SOURCE.dbt_scd_id NOT IN (
|
15
|
+
SELECT dbt_scd_id FROM {{ target.render() }}
|
16
|
+
)
|
17
|
+
AND DBT_INTERNAL_SOURCE.dbt_change_type = 'insert';
|
18
|
+
|
19
|
+
{% endmacro %}
|
{dbt_firebolt-1.8.3 → dbt_firebolt-1.9.1}/dbt/include/firebolt/macros/relations/table/create.sql
RENAMED
@@ -24,6 +24,10 @@
|
|
24
24
|
) }}
|
25
25
|
{%- endif -%}
|
26
26
|
|
27
|
+
{%- if temporary -%}
|
28
|
+
{%- do adapter.drop_relation(relation) -%}
|
29
|
+
{%- endif -%}
|
30
|
+
|
27
31
|
{%- set table_type = config.get(
|
28
32
|
'table_type',
|
29
33
|
default = 'dimension'
|
@@ -49,9 +53,9 @@
|
|
49
53
|
|
50
54
|
{%- if primary_index %}
|
51
55
|
primary INDEX {% if primary_index is iterable and primary_index is not string %}
|
52
|
-
{{ primary_index | join(', ') }}
|
56
|
+
"{{ primary_index | join('", "') }}"
|
53
57
|
{%- else -%}
|
54
|
-
{{ primary_index }}
|
58
|
+
"{{ primary_index }}"
|
55
59
|
{%- endif -%}
|
56
60
|
{%- endif -%}
|
57
61
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
|
-
Name:
|
3
|
-
Version: 1.
|
2
|
+
Name: dbt_firebolt
|
3
|
+
Version: 1.9.1
|
4
4
|
Summary: The Firebolt adapter plugin for dbt (data build tool)
|
5
5
|
Home-page: https://github.com/firebolt-db/dbt-firebolt
|
6
6
|
Author: Firebolt
|
@@ -18,8 +18,17 @@ Classifier: Programming Language :: Python :: 3.11
|
|
18
18
|
Classifier: Programming Language :: Python :: 3.12
|
19
19
|
Requires-Python: >=3.8
|
20
20
|
Description-Content-Type: text/markdown
|
21
|
-
Provides-Extra: dev
|
22
21
|
License-File: LICENSE
|
22
|
+
Requires-Dist: dbt-adapters<2.0,>=1.0
|
23
|
+
Requires-Dist: dbt-core>=1.8.0
|
24
|
+
Requires-Dist: firebolt-sdk>=1.5.0
|
25
|
+
Requires-Dist: pydantic>=0.23
|
26
|
+
Provides-Extra: dev
|
27
|
+
Requires-Dist: allure-pytest==2.*; extra == "dev"
|
28
|
+
Requires-Dist: dbt-tests-adapter~=1.6; extra == "dev"
|
29
|
+
Requires-Dist: mypy==1.4.1; extra == "dev"
|
30
|
+
Requires-Dist: pre-commit==3.5.0; extra == "dev"
|
31
|
+
Requires-Dist: pytest==7.*; extra == "dev"
|
23
32
|
|
24
33
|
<img width="1113" alt="Screen Shot 2021-12-10 at 1 09 09 PM" src="https://user-images.githubusercontent.com/7674553/145641621-a7dabe78-da92-4f0a-bbd2-54ccf7f34b57.png">
|
25
34
|
|
@@ -69,7 +78,7 @@ The table below shows which dbt and Firebolt features are supported by the adapt
|
|
69
78
|
| Incremental materializations - insert_overwrite | :white_check_mark: |
|
70
79
|
| Incremental materializations - delete+insert | :white_check_mark: |
|
71
80
|
| Incremental materializations - merge | :x: |
|
72
|
-
| Snapshots | :
|
81
|
+
| Snapshots | :white_check_mark: |
|
73
82
|
| Seeds | :white_check_mark: |
|
74
83
|
| Tests | :white_check_mark: |
|
75
84
|
| Documentation | :white_check_mark: |
|
@@ -0,0 +1,74 @@
|
|
1
|
+
LICENSE
|
2
|
+
MANIFEST.in
|
3
|
+
README.md
|
4
|
+
pyproject.toml
|
5
|
+
setup.cfg
|
6
|
+
./dbt/adapters/firebolt/__init__.py
|
7
|
+
./dbt/adapters/firebolt/__version__.py
|
8
|
+
./dbt/adapters/firebolt/column.py
|
9
|
+
./dbt/adapters/firebolt/connections.py
|
10
|
+
./dbt/adapters/firebolt/impl.py
|
11
|
+
./dbt/adapters/firebolt/relation.py
|
12
|
+
./dbt/adapters/firebolt/relation_configs/__init__.py
|
13
|
+
./dbt/include/firebolt/__init__.py
|
14
|
+
dbt/adapters/firebolt/__init__.py
|
15
|
+
dbt/adapters/firebolt/__version__.py
|
16
|
+
dbt/adapters/firebolt/column.py
|
17
|
+
dbt/adapters/firebolt/connections.py
|
18
|
+
dbt/adapters/firebolt/impl.py
|
19
|
+
dbt/adapters/firebolt/relation.py
|
20
|
+
dbt/adapters/firebolt/relation_configs/__init__.py
|
21
|
+
dbt/include/firebolt/__init__.py
|
22
|
+
dbt/include/firebolt/dbt_project.yml
|
23
|
+
dbt/include/firebolt/macros/adapters.sql
|
24
|
+
dbt/include/firebolt/macros/catalog.sql
|
25
|
+
dbt/include/firebolt/macros/adapters/apply_grants.sql
|
26
|
+
dbt/include/firebolt/macros/adapters/relation.sql
|
27
|
+
dbt/include/firebolt/macros/dbt_external_tables/create_external_table.sql
|
28
|
+
dbt/include/firebolt/macros/dbt_external_tables/dropif.sql
|
29
|
+
dbt/include/firebolt/macros/dbt_external_tables/get_external_build_plan.sql
|
30
|
+
dbt/include/firebolt/macros/materializations/clone.sql
|
31
|
+
dbt/include/firebolt/macros/materializations/materialized_view.sql
|
32
|
+
dbt/include/firebolt/macros/materializations/seed.sql
|
33
|
+
dbt/include/firebolt/macros/materializations/snapshot_merge.sql
|
34
|
+
dbt/include/firebolt/macros/materializations/table.sql
|
35
|
+
dbt/include/firebolt/macros/materializations/test.sql
|
36
|
+
dbt/include/firebolt/macros/materializations/view.sql
|
37
|
+
dbt/include/firebolt/macros/materializations/models/incremental/column_helpers.sql
|
38
|
+
dbt/include/firebolt/macros/materializations/models/incremental/incremental.sql
|
39
|
+
dbt/include/firebolt/macros/materializations/models/incremental/is_incremental.sql
|
40
|
+
dbt/include/firebolt/macros/materializations/models/incremental/merge.sql
|
41
|
+
dbt/include/firebolt/macros/materializations/models/incremental/on_schema_change.sql
|
42
|
+
dbt/include/firebolt/macros/materializations/models/incremental/strategies.sql
|
43
|
+
dbt/include/firebolt/macros/relations/materialized_view/alter.sql
|
44
|
+
dbt/include/firebolt/macros/relations/materialized_view/create.sql
|
45
|
+
dbt/include/firebolt/macros/relations/materialized_view/describe.sql
|
46
|
+
dbt/include/firebolt/macros/relations/materialized_view/drop.sql
|
47
|
+
dbt/include/firebolt/macros/relations/materialized_view/refresh.sql
|
48
|
+
dbt/include/firebolt/macros/relations/table/create.sql
|
49
|
+
dbt/include/firebolt/macros/relations/table/drop.sql
|
50
|
+
dbt/include/firebolt/macros/relations/table/rename.sql
|
51
|
+
dbt/include/firebolt/macros/relations/table/replace.sql
|
52
|
+
dbt/include/firebolt/macros/relations/view/create.sql
|
53
|
+
dbt/include/firebolt/macros/relations/view/drop.sql
|
54
|
+
dbt/include/firebolt/macros/relations/view/rename.sql
|
55
|
+
dbt/include/firebolt/macros/relations/view/replace.sql
|
56
|
+
dbt/include/firebolt/macros/utils/array_append.sql
|
57
|
+
dbt/include/firebolt/macros/utils/array_concat.sql
|
58
|
+
dbt/include/firebolt/macros/utils/array_construct.sql
|
59
|
+
dbt/include/firebolt/macros/utils/bool_or.sql
|
60
|
+
dbt/include/firebolt/macros/utils/cast_bool_to_text.sql
|
61
|
+
dbt/include/firebolt/macros/utils/dateadd.sql
|
62
|
+
dbt/include/firebolt/macros/utils/datediff.sql
|
63
|
+
dbt/include/firebolt/macros/utils/except.sql
|
64
|
+
dbt/include/firebolt/macros/utils/intersect.sql
|
65
|
+
dbt/include/firebolt/macros/utils/listagg.sql
|
66
|
+
dbt/include/firebolt/macros/utils/position.sql
|
67
|
+
dbt/include/firebolt/macros/utils/right.sql
|
68
|
+
dbt/include/firebolt/macros/utils/split_part.sql
|
69
|
+
dbt/include/firebolt/macros/utils/timestamps.sql
|
70
|
+
dbt_firebolt.egg-info/PKG-INFO
|
71
|
+
dbt_firebolt.egg-info/SOURCES.txt
|
72
|
+
dbt_firebolt.egg-info/dependency_links.txt
|
73
|
+
dbt_firebolt.egg-info/requires.txt
|
74
|
+
dbt_firebolt.egg-info/top_level.txt
|
@@ -1,65 +0,0 @@
|
|
1
|
-
LICENSE
|
2
|
-
MANIFEST.in
|
3
|
-
README.md
|
4
|
-
pyproject.toml
|
5
|
-
setup.cfg
|
6
|
-
./dbt/adapters/firebolt/__init__.py
|
7
|
-
./dbt/adapters/firebolt/__version__.py
|
8
|
-
./dbt/adapters/firebolt/column.py
|
9
|
-
./dbt/adapters/firebolt/connections.py
|
10
|
-
./dbt/adapters/firebolt/impl.py
|
11
|
-
./dbt/adapters/firebolt/relation.py
|
12
|
-
./dbt/adapters/firebolt/relation_configs/__init__.py
|
13
|
-
./dbt/include/firebolt/__init__.py
|
14
|
-
./dbt/include/firebolt/dbt_project.yml
|
15
|
-
./dbt/include/firebolt/macros/adapters.sql
|
16
|
-
./dbt/include/firebolt/macros/catalog.sql
|
17
|
-
./dbt/include/firebolt/macros/adapters/apply_grants.sql
|
18
|
-
./dbt/include/firebolt/macros/adapters/relation.sql
|
19
|
-
./dbt/include/firebolt/macros/dbt_external_tables/create_external_table.sql
|
20
|
-
./dbt/include/firebolt/macros/dbt_external_tables/dropif.sql
|
21
|
-
./dbt/include/firebolt/macros/dbt_external_tables/get_external_build_plan.sql
|
22
|
-
./dbt/include/firebolt/macros/materializations/clone.sql
|
23
|
-
./dbt/include/firebolt/macros/materializations/materialized_view.sql
|
24
|
-
./dbt/include/firebolt/macros/materializations/seed.sql
|
25
|
-
./dbt/include/firebolt/macros/materializations/table.sql
|
26
|
-
./dbt/include/firebolt/macros/materializations/test.sql
|
27
|
-
./dbt/include/firebolt/macros/materializations/view.sql
|
28
|
-
./dbt/include/firebolt/macros/materializations/models/incremental/column_helpers.sql
|
29
|
-
./dbt/include/firebolt/macros/materializations/models/incremental/incremental.sql
|
30
|
-
./dbt/include/firebolt/macros/materializations/models/incremental/is_incremental.sql
|
31
|
-
./dbt/include/firebolt/macros/materializations/models/incremental/merge.sql
|
32
|
-
./dbt/include/firebolt/macros/materializations/models/incremental/on_schema_change.sql
|
33
|
-
./dbt/include/firebolt/macros/materializations/models/incremental/strategies.sql
|
34
|
-
./dbt/include/firebolt/macros/relations/materialized_view/alter.sql
|
35
|
-
./dbt/include/firebolt/macros/relations/materialized_view/create.sql
|
36
|
-
./dbt/include/firebolt/macros/relations/materialized_view/describe.sql
|
37
|
-
./dbt/include/firebolt/macros/relations/materialized_view/drop.sql
|
38
|
-
./dbt/include/firebolt/macros/relations/materialized_view/refresh.sql
|
39
|
-
./dbt/include/firebolt/macros/relations/table/create.sql
|
40
|
-
./dbt/include/firebolt/macros/relations/table/drop.sql
|
41
|
-
./dbt/include/firebolt/macros/relations/table/rename.sql
|
42
|
-
./dbt/include/firebolt/macros/relations/table/replace.sql
|
43
|
-
./dbt/include/firebolt/macros/relations/view/create.sql
|
44
|
-
./dbt/include/firebolt/macros/relations/view/drop.sql
|
45
|
-
./dbt/include/firebolt/macros/relations/view/rename.sql
|
46
|
-
./dbt/include/firebolt/macros/relations/view/replace.sql
|
47
|
-
./dbt/include/firebolt/macros/utils/array_append.sql
|
48
|
-
./dbt/include/firebolt/macros/utils/array_concat.sql
|
49
|
-
./dbt/include/firebolt/macros/utils/array_construct.sql
|
50
|
-
./dbt/include/firebolt/macros/utils/bool_or.sql
|
51
|
-
./dbt/include/firebolt/macros/utils/cast_bool_to_text.sql
|
52
|
-
./dbt/include/firebolt/macros/utils/dateadd.sql
|
53
|
-
./dbt/include/firebolt/macros/utils/datediff.sql
|
54
|
-
./dbt/include/firebolt/macros/utils/except.sql
|
55
|
-
./dbt/include/firebolt/macros/utils/intersect.sql
|
56
|
-
./dbt/include/firebolt/macros/utils/listagg.sql
|
57
|
-
./dbt/include/firebolt/macros/utils/position.sql
|
58
|
-
./dbt/include/firebolt/macros/utils/right.sql
|
59
|
-
./dbt/include/firebolt/macros/utils/split_part.sql
|
60
|
-
./dbt/include/firebolt/macros/utils/timestamps.sql
|
61
|
-
dbt_firebolt.egg-info/PKG-INFO
|
62
|
-
dbt_firebolt.egg-info/SOURCES.txt
|
63
|
-
dbt_firebolt.egg-info/dependency_links.txt
|
64
|
-
dbt_firebolt.egg-info/requires.txt
|
65
|
-
dbt_firebolt.egg-info/top_level.txt
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{dbt_firebolt-1.8.3 → dbt_firebolt-1.9.1}/dbt/adapters/firebolt/relation_configs/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{dbt_firebolt-1.8.3 → dbt_firebolt-1.9.1}/dbt/include/firebolt/macros/adapters/apply_grants.sql
RENAMED
File without changes
|
File without changes
|
File without changes
|
{dbt_firebolt-1.8.3 → dbt_firebolt-1.9.1}/dbt/include/firebolt/macros/dbt_external_tables/dropif.sql
RENAMED
File without changes
|
File without changes
|
{dbt_firebolt-1.8.3 → dbt_firebolt-1.9.1}/dbt/include/firebolt/macros/materializations/clone.sql
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{dbt_firebolt-1.8.3 → dbt_firebolt-1.9.1}/dbt/include/firebolt/macros/materializations/seed.sql
RENAMED
File without changes
|
{dbt_firebolt-1.8.3 → dbt_firebolt-1.9.1}/dbt/include/firebolt/macros/materializations/table.sql
RENAMED
File without changes
|
{dbt_firebolt-1.8.3 → dbt_firebolt-1.9.1}/dbt/include/firebolt/macros/materializations/test.sql
RENAMED
File without changes
|
{dbt_firebolt-1.8.3 → dbt_firebolt-1.9.1}/dbt/include/firebolt/macros/materializations/view.sql
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{dbt_firebolt-1.8.3 → dbt_firebolt-1.9.1}/dbt/include/firebolt/macros/relations/table/drop.sql
RENAMED
File without changes
|
{dbt_firebolt-1.8.3 → dbt_firebolt-1.9.1}/dbt/include/firebolt/macros/relations/table/rename.sql
RENAMED
File without changes
|
{dbt_firebolt-1.8.3 → dbt_firebolt-1.9.1}/dbt/include/firebolt/macros/relations/table/replace.sql
RENAMED
File without changes
|
{dbt_firebolt-1.8.3 → dbt_firebolt-1.9.1}/dbt/include/firebolt/macros/relations/view/create.sql
RENAMED
File without changes
|
{dbt_firebolt-1.8.3 → dbt_firebolt-1.9.1}/dbt/include/firebolt/macros/relations/view/drop.sql
RENAMED
File without changes
|
{dbt_firebolt-1.8.3 → dbt_firebolt-1.9.1}/dbt/include/firebolt/macros/relations/view/rename.sql
RENAMED
File without changes
|
{dbt_firebolt-1.8.3 → dbt_firebolt-1.9.1}/dbt/include/firebolt/macros/relations/view/replace.sql
RENAMED
File without changes
|
{dbt_firebolt-1.8.3 → dbt_firebolt-1.9.1}/dbt/include/firebolt/macros/utils/array_append.sql
RENAMED
File without changes
|
{dbt_firebolt-1.8.3 → dbt_firebolt-1.9.1}/dbt/include/firebolt/macros/utils/array_concat.sql
RENAMED
File without changes
|
{dbt_firebolt-1.8.3 → dbt_firebolt-1.9.1}/dbt/include/firebolt/macros/utils/array_construct.sql
RENAMED
File without changes
|
File without changes
|
{dbt_firebolt-1.8.3 → dbt_firebolt-1.9.1}/dbt/include/firebolt/macros/utils/cast_bool_to_text.sql
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|