Skip to content
This repository was archived by the owner on Sep 2, 2025. It is now read-only.

Commit 0d37ba6

Browse files
salimmouloueldbeatty10colin-rogers-dbt
authored
implement choice of delimiter for seed files (#1122)
* implement choice of delimiter for seed files * adding change log entry * implementation of test of TestBigQuerySeedWithUniqueDelimiter * Update dbt/adapters/bigquery/impl.py Co-authored-by: Doug Beatty <[email protected]> * Update dbt/include/bigquery/macros/materializations/seed.sql Co-authored-by: Doug Beatty <[email protected]> * Update dbt/include/bigquery/macros/materializations/seed.sql Co-authored-by: Doug Beatty <[email protected]> * Update dbt/adapters/bigquery/impl.py Co-authored-by: Doug Beatty <[email protected]> * Update .changes/unreleased/Fixes-20240226-233024.yaml --------- Co-authored-by: Doug Beatty <[email protected]> Co-authored-by: Colin Rogers <[email protected]>
1 parent edf3344 commit 0d37ba6

File tree

4 files changed

+46
-4
lines changed

4 files changed

+46
-4
lines changed
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
kind: Fixes
2+
body: make seed delimiter configurable via `field_delimeter` in model config
3+
time: 2024-02-26T23:30:24.141213+01:00
4+
custom:
5+
Author: salimmoulouel
6+
Issue: "1119"

dbt/adapters/bigquery/impl.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -654,7 +654,9 @@ def alter_table_add_columns(self, relation, columns):
654654
client.update_table(new_table, ["schema"])
655655

656656
@available.parse_none
657-
def load_dataframe(self, database, schema, table_name, agate_table, column_override):
657+
def load_dataframe(
658+
self, database, schema, table_name, agate_table, column_override, field_delimiter
659+
):
658660
bq_schema = self._agate_to_schema(agate_table, column_override)
659661
conn = self.connections.get_thread_connection()
660662
client = conn.handle
@@ -664,7 +666,7 @@ def load_dataframe(self, database, schema, table_name, agate_table, column_overr
664666
load_config = google.cloud.bigquery.LoadJobConfig()
665667
load_config.skip_leading_rows = 1
666668
load_config.schema = bq_schema
667-
669+
load_config.field_delimiter = field_delimiter
668670
with open(agate_table.original_abspath, "rb") as f:
669671
job = client.load_table_from_file(f, table_ref, rewind=True, job_config=load_config)
670672

dbt/include/bigquery/macros/materializations/seed.sql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
{%- set column_override = model['config'].get('column_types', {}) -%}
1313
{{ adapter.load_dataframe(model['database'], model['schema'], model['alias'],
14-
agate_table, column_override) }}
14+
agate_table, column_override, model['config']['delimiter']) }}
1515

1616
{% call statement() %}
1717
alter table {{ this.render() }} set {{ bigquery_table_options(config, model) }}

tests/functional/adapter/test_simple_seed.py

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
from dbt.tests.adapter.simple_seed.test_seed import BaseTestEmptySeed
66
from dbt.tests.adapter.utils.base_utils import run_dbt
77

8-
98
_SEED_CONFIGS_CSV = """
109
seed_id,stuff
1110
1,a
@@ -156,3 +155,38 @@ def test__bigquery_seed_table_with_labels_config_bigquery(self, project):
156155

157156
class TestBigQueryEmptySeed(BaseTestEmptySeed):
158157
pass
158+
159+
160+
class TestBigQuerySeedWithUniqueDelimiter(TestSimpleSeedConfigs):
161+
@pytest.fixture(scope="class")
162+
def seeds(self):
163+
return {
164+
"seed_enabled.csv": seeds__enabled_in_config_csv.replace(",", "|"),
165+
"seed_tricky.csv": seeds__tricky_csv.replace(",", "\t"),
166+
"seed_configs.csv": _SEED_CONFIGS_CSV,
167+
}
168+
169+
@pytest.fixture(scope="class")
170+
def project_config_update(self):
171+
return {
172+
"config-version": 2,
173+
"seeds": {
174+
"test": {
175+
"enabled": False,
176+
"quote_columns": True,
177+
"seed_enabled": {
178+
"enabled": True,
179+
"+column_types": self.seed_enabled_types(),
180+
"delimiter": "|",
181+
},
182+
"seed_tricky": {
183+
"enabled": True,
184+
"+column_types": self.seed_tricky_types(),
185+
"delimiter": "\t",
186+
},
187+
"seed_configs": {
188+
"enabled": True,
189+
},
190+
},
191+
},
192+
}

0 commit comments

Comments
 (0)