dbt-firebolt 1.6.2__py3-none-any.whl → 1.6.4__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -7,7 +7,7 @@ from dbt.adapters.firebolt.connections import (
7
7
  from dbt.adapters.firebolt.impl import FireboltAdapter
8
8
  from dbt.include import firebolt
9
9
 
10
- __version__ = "1.6.2"
10
+ __version__ = "1.6.4"
11
11
 
12
12
  Plugin = AdapterPlugin(
13
13
  adapter=FireboltAdapter, # type: ignore
@@ -168,17 +168,16 @@
168
168
  #}
169
169
  {% call statement('list_tables_without_caching', fetch_result=True) %}
170
170
 
171
- SELECT '{{ relation.database }}' AS "database",
172
- table_name AS "name",
173
- '{{ relation.schema }}' AS "schema",
174
- 'table' AS type
175
- FROM information_schema.tables
176
- UNION ALL
177
- SELECT '{{ relation.database }}' AS "database",
178
- table_name AS "name",
179
- '{{ relation.schema }}' AS "schema",
180
- 'view' AS type
181
- FROM information_schema.views
171
+ SELECT
172
+ table_catalog AS "database",
173
+ table_name AS "name",
174
+ '{{ relation.schema }}' AS "schema",
175
+ CASE
176
+ WHEN table_type = 'VIEW' THEN 'view'
177
+ ELSE 'table'
178
+ END AS "type"
179
+ FROM
180
+ information_schema.tables
182
181
  {% endcall %}
183
182
  {% set info_table = load_result('list_tables_without_caching').table %}
184
183
  {{ return(info_table) }}
@@ -3,31 +3,21 @@ the columns (for instance, `is_nullable` is missing) but more could be added lat
3
3
 
4
4
  {% macro firebolt__get_catalog(information_schemas, schemas) -%}
5
5
  {%- call statement('catalog', fetch_result=True) %}
6
- SELECT tbls.table_catalog AS table_database
7
- , tbls.table_schema as table_schema
8
- , table_type
9
- , tbls.table_name as table_name
10
- , cols.column_name as column_name
11
- , cols.data_type AS column_type
12
- , UPPER(tbls.table_type) as relation_type
13
- , cols.ordinal_position as column_index
14
- FROM information_schema.tables tbls
15
- JOIN information_schema.columns cols
16
- USING(table_name)
17
-
18
- UNION ALL
19
-
20
- SELECT views.table_catalog AS table_database
21
- , views.table_schema as table_schema
22
- , 'VIEW' AS table_type
23
- , views.table_name as table_name
24
- , cols.column_name AS column_name
25
- , cols.data_type AS column_type
26
- , 'VIEW' as relation_type
27
- , cols.ordinal_position as column_index
28
- FROM information_schema.views views
29
- JOIN information_schema.columns cols
30
- USING(table_name)
6
+ SELECT
7
+ tbls.table_catalog AS table_database,
8
+ tbls.table_schema as table_schema,
9
+ table_type,
10
+ tbls.table_name as table_name,
11
+ cols.column_name as column_name,
12
+ cols.data_type AS column_type,
13
+ CASE
14
+ WHEN table_type = 'VIEW' THEN 'VIEW'
15
+ ELSE 'TABLE'
16
+ END AS relation_type,
17
+ cols.ordinal_position as column_index
18
+ FROM
19
+ information_schema.tables tbls
20
+ JOIN information_schema.columns cols USING (table_name)
31
21
  {% endcall -%}
32
22
  {{ return(load_result('catalog').table) }}
33
23
  {%- endmacro %}
@@ -1,4 +1,12 @@
1
1
  {% macro firebolt__create_external_table(source_node) %}
2
+ {% if source_node.external.strategy == 'copy' %}
3
+ {{ firebolt__create_with_copy_from(source_node) }}
4
+ {% else %}
5
+ {{ firebolt__create_with_external_table(source_node) }}
6
+ {% endif %}
7
+ {% endmacro %}
8
+
9
+ {% macro firebolt__create_with_external_table(source_node) %}
2
10
  {%- set external = source_node.external -%}
3
11
  {%- if 'partitions' in external -%}
4
12
  {%- set columns = adapter.make_field_partition_pairs(source_node.columns.values(),
@@ -7,7 +15,6 @@
7
15
  {%- set columns = adapter.make_field_partition_pairs(source_node.columns.values(),
8
16
  []) -%}
9
17
  {%- endif -%}
10
- -- {%- set partitions = external.partitions -%}
11
18
  {%- set credentials = external.credentials -%}
12
19
  {# Leaving out "IF NOT EXISTS" because this should only be called by
13
20
  if no DROP IF is necessary. #}
@@ -18,10 +25,16 @@
18
25
  {% endfor -%}
19
26
  )
20
27
  {% if external.url %} URL = '{{external.url}}' {%- endif %}
21
- {%- if credentials %}
28
+ {%- if credentials and credentials.internal_role_arn %}
22
29
  CREDENTIALS = (AWS_ROLE_ARN = '{{credentials.internal_role_arn}}'
23
- AWS_ROLE_EXTERNAL_ID = '{{credentials.external_role_id}}')
24
- {% endif %}
30
+ {%- if credentials.external_role_id %}
31
+ AWS_ROLE_EXTERNAL_ID = '{{credentials.external_role_id}}'
32
+ {%- endif -%}
33
+ )
34
+ {% elif credentials and credentials.aws_key_id %}
35
+ CREDENTIALS = (AWS_KEY_ID = '{{credentials.aws_key_id}}'
36
+ AWS_SECRET_KEY = '{{credentials.aws_secret_key}}')
37
+ {%- endif %}
25
38
  {%- if external.object_pattern -%} OBJECT_PATTERN = '{{external.object_pattern}}' {%- endif %}
26
39
  {% if external.object_patterns -%}
27
40
  OBJECT_PATTERN =
@@ -30,6 +43,95 @@
30
43
  {{- ',' if not loop.last }}
31
44
  {%- endfor %}
32
45
  {%- endif %}
33
- {%- if external.compression -%} COMPRESSION = {{external.compression}} {%- endif -%}
46
+ {%- if external.compression -%} COMPRESSION = {{external.compression}} {%- endif %}
34
47
  TYPE = {{ external.type }}
35
48
  {% endmacro %}
49
+
50
+ {% macro firebolt__create_with_copy_from(source_node) %}
51
+ {# COPY FROM is only available in Firebolt 2.0. #}
52
+ {%- set external = source_node.external -%}
53
+ {%- set credentials = external.credentials -%}
54
+ {%- set options = external.options -%}
55
+ {%- set csv_options = options.csv_options -%}
56
+ {%- set error_file_credentials = options.error_file_credentials -%}
57
+
58
+ {# There are no partitions, but this formats the columns correctly. #}
59
+ {%- if 'partitions' in external -%}
60
+ {%- set columns = adapter.make_field_partition_pairs(source_node.columns.values(),
61
+ external.partitions) -%}
62
+ {%- else -%}
63
+ {%- set columns = adapter.make_field_partition_pairs(source_node.columns.values(),
64
+ []) -%}
65
+ {%- endif -%}
66
+ COPY INTO {{source(source_node.source_name, source_node.name)}}
67
+ {%- if columns and columns | length > 0 %}
68
+ (
69
+ {%- for column in columns -%}
70
+ {{ column.name }}
71
+ {%- if column.default is not none %} DEFAULT {{ column.default }}{% endif %}
72
+ {%- if column.source_column_name is not none %} {{ '$' ~ loop.index0 }}{% endif %}
73
+ {{- ',' if not loop.last }}
74
+ {%- endfor -%}
75
+ )
76
+ {%- endif %}
77
+ FROM '{{external.url}}'
78
+ {%- if options %}
79
+ WITH
80
+ {%- if options.object_pattern %}
81
+ PATTERN = '{{options.object_pattern}}'
82
+ {%- endif %}
83
+ {%- if options.type %}
84
+ TYPE = {{ options.type }}
85
+ {%- endif %}
86
+ {%- if options.auto_create is not none %}
87
+ AUTO_CREATE = {{ options.auto_create | upper }}
88
+ {%- endif %}
89
+ {%- if options.allow_column_mismatch is not none %}
90
+ ALLOW_COLUMN_MISMATCH = {{ options.allow_column_mismatch | upper }}
91
+ {%- endif %}
92
+ {%- if options.error_file %}
93
+ ERROR_FILE = '{{ options.error_file }}'
94
+ {%- endif %}
95
+ {%- if error_file_credentials %}
96
+ ERROR_FILE_CREDENTIALS = (AWS_KEY_ID = '{{ error_file_credentials.aws_key_id }}' AWS_SECRET_KEY = '{{ error_file_credentials.aws_secret_key }}')
97
+ {%- endif %}
98
+ {%- if options.max_errors_per_file %}
99
+ MAX_ERRORS_PER_FILE = {{ options.max_errors_per_file }}
100
+ {%- endif %}
101
+ {%- if csv_options %}
102
+ {%- if csv_options.header is not none %}
103
+ HEADER = {{ csv_options.header | upper }}
104
+ {%- endif %}
105
+ {%- if csv_options.delimiter %}
106
+ DELIMITER = '{{ csv_options.delimiter }}'
107
+ {%- endif %}
108
+ {%- if csv_options.newline %}
109
+ NEWLINE = '{{ csv_options.newline }}'
110
+ {%- endif %}
111
+ {%- if csv_options.quote %}
112
+ QUOTE = {{ csv_options.quote }}
113
+ {%- endif %}
114
+ {%- if csv_options.escape %}
115
+ ESCAPE = '{{ csv_options.escape }}'
116
+ {%- endif %}
117
+ {%- if csv_options.null_string %}
118
+ NULL_STRING = '{{ csv_options.null_string }}'
119
+ {%- endif %}
120
+ {%- if csv_options.empty_field_as_null is not none %}
121
+ EMPTY_FIELD_AS_NULL = {{ csv_options.empty_field_as_null | upper }}
122
+ {%- endif %}
123
+ {%- if csv_options.skip_blank_lines is not none %}
124
+ SKIP_BLANK_LINES = {{ csv_options.skip_blank_lines | upper }}
125
+ {%- endif %}
126
+ {%- if csv_options.date_format %}
127
+ DATE_FORMAT = '{{ csv_options.date_format }}'
128
+ {%- endif %}
129
+ {%- if csv_options.timestamp_format %}
130
+ TIMESTAMP_FORMAT = '{{ csv_options.timestamp_format }}'
131
+ {%- endif %}
132
+ {%- endif %}
133
+ {%- endif %}
134
+ {%- if credentials %}
135
+ CREDENTIALS = (AWS_KEY_ID = '{{credentials.aws_key_id}}' AWS_SECRET_KEY = '{{credentials.aws_secret_key}}')
136
+ {%- endif %}
137
+ {% endmacro %}
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: dbt-firebolt
3
- Version: 1.6.2
3
+ Version: 1.6.4
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
@@ -1,4 +1,4 @@
1
- dbt/adapters/firebolt/__init__.py,sha256=JTtsgQvtntausVLJXwrfGprJ94XEjeFBzAaPWV9NnQY,411
1
+ dbt/adapters/firebolt/__init__.py,sha256=abhy1JQv7eRFwdEtR9pWsB6kYfmZMobu6HweuUPtpeQ,411
2
2
  dbt/adapters/firebolt/__version__.py,sha256=zRlZGglif76ZVuWWSjsH_MMPgtVQqmj-SryYJW25FL4,69
3
3
  dbt/adapters/firebolt/column.py,sha256=COo_wjhCFgS3GFcPIPcoq7WAWgzN6DB2XqG-gk51WBc,539
4
4
  dbt/adapters/firebolt/connections.py,sha256=Sp2C03ynSqmRIQO9z2YGfVIimWZrygST7uKT0t5_RwU,7880
@@ -6,11 +6,11 @@ dbt/adapters/firebolt/impl.py,sha256=0Zn058iDxT6eVAP77vGC1sIyOYuW5FDALNns1ErPl_4
6
6
  dbt/adapters/firebolt/relation.py,sha256=z-yv_ICJPZB33IIpnr3o_jusoULlKANLj6BlkaudQQ0,1152
7
7
  dbt/include/firebolt/__init__.py,sha256=vBGWeG-dHHkimfnX8axBJ4IgAowFw8xADmo6Auzn2xc,52
8
8
  dbt/include/firebolt/dbt_project.yml,sha256=uHJ-i0wD1D74DWSSSzsFKoKbAN1w4LBgVpnkm8e-M1g,76
9
- dbt/include/firebolt/macros/adapters.sql,sha256=L6AVtG03-JByYyb5JwIdWTYII8H2SStCquqF_le5PdA,9800
10
- dbt/include/firebolt/macros/catalog.sql,sha256=Ung5LZF3Usm_xIrrTRs6sBP0LiPbGH4aQ99cC-6ol4M,1312
9
+ dbt/include/firebolt/macros/adapters.sql,sha256=btDFso1_NJzHc7_RiuuDKVOmhsafFt0Ng3HuI0R6mhU,9663
10
+ dbt/include/firebolt/macros/catalog.sql,sha256=YCsHQEqA1-bo_expaF_pMorINhKAXOYs73Lj8Mf1GDY,843
11
11
  dbt/include/firebolt/macros/adapters/apply_grants.sql,sha256=nEmyDs0K0HENxxMaY8v-5oifIXDMrysmuUb_bo9bCuY,1095
12
12
  dbt/include/firebolt/macros/adapters/relation.sql,sha256=1nQZg_vwpGYwFI2EQvHJA5CqFWk7h3w3Yq2uvYXNR5E,2017
13
- dbt/include/firebolt/macros/dbt_external_tables/create_external_table.sql,sha256=Cs8E0MnHQnKvEshck6RrV0F6pGjOAZTbtq_UsZb2YSQ,1669
13
+ dbt/include/firebolt/macros/dbt_external_tables/create_external_table.sql,sha256=x7awixF-k8neugbKp7_QVb7PhBlQnsaIvvdBtJEeJqE,6153
14
14
  dbt/include/firebolt/macros/dbt_external_tables/dropif.sql,sha256=-kZzUVgC6Bcof7tZ9VcDK427agylMHeG-yA8NqSeWkw,167
15
15
  dbt/include/firebolt/macros/dbt_external_tables/get_external_build_plan.sql,sha256=BWNSuqB9t0hxbxL9CbIc0UFTBBarQMtGfHv9LLAbqSI,894
16
16
  dbt/include/firebolt/macros/materializations/clone.sql,sha256=SKPc_tG0tF2HRKlo1-CQPvxVWGKHpXDwxvubsCwKTG8,79
@@ -39,8 +39,8 @@ dbt/include/firebolt/macros/utils/position.sql,sha256=WPo9_bhvNYJooEAsHC9OcnNAwU
39
39
  dbt/include/firebolt/macros/utils/right.sql,sha256=_mm1_2MvlOH4O6CmYhgvVxMLfDxAvgv-EMwZ8OBOq-I,254
40
40
  dbt/include/firebolt/macros/utils/split_part.sql,sha256=5dUlbx3Pt1iWWaIlxiXyYUwUqzXuLLXMB-1aGJHNk4o,464
41
41
  dbt/include/firebolt/macros/utils/timestamps.sql,sha256=22g-QpJjBuBUQOHNpQ_TuMRa-cHxaxXPv8ItEUo-vEk,397
42
- dbt_firebolt-1.6.2.dist-info/LICENSE,sha256=Nn0EGvW3qmoZpBV_JVM3iPukFf3RiNCIizrWe_2oTHk,11354
43
- dbt_firebolt-1.6.2.dist-info/METADATA,sha256=_IwRzSa7I4jV0DYj5PfbQ_3OZbBTQ6YPRrGEIo0kAZ4,5034
44
- dbt_firebolt-1.6.2.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
45
- dbt_firebolt-1.6.2.dist-info/top_level.txt,sha256=B2YH4he17ajilEWOGCKHbRcEJlCuZKwCcgFcLPntLsE,4
46
- dbt_firebolt-1.6.2.dist-info/RECORD,,
42
+ dbt_firebolt-1.6.4.dist-info/LICENSE,sha256=Nn0EGvW3qmoZpBV_JVM3iPukFf3RiNCIizrWe_2oTHk,11354
43
+ dbt_firebolt-1.6.4.dist-info/METADATA,sha256=P9bgeX1hBKX9qJbfs6eaTAFPt-0nvfupj07nZO90I6A,5034
44
+ dbt_firebolt-1.6.4.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
45
+ dbt_firebolt-1.6.4.dist-info/top_level.txt,sha256=B2YH4he17ajilEWOGCKHbRcEJlCuZKwCcgFcLPntLsE,4
46
+ dbt_firebolt-1.6.4.dist-info/RECORD,,