Skip to content

Commit 3a3e739

Browse files
owlphimiqoti
andauthored
Fix insert_all method of BigQueryHook to support tables without schema (#13138)
Fixes the insert_all method of BigQueryHook to support tables that does not have provided schema. Co-authored-by: Manuel Bordes <manuel.bordes@gamesys.co.uk>
1 parent 35e4a3b commit 3a3e739

File tree

2 files changed

+8
-9
lines changed

2 files changed

+8
-9
lines changed

β€Žairflow/providers/google/cloud/hooks/bigquery.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -876,11 +876,11 @@ def insert_all(
876876
"""
877877
self.log.info('Inserting %s row(s) into table %s:%s.%s', len(rows), project_id, dataset_id, table_id)
878878

879-
table = self._resolve_table_reference(
880-
table_resource={}, project_id=project_id, dataset_id=dataset_id, table_id=table_id
881-
)
882-
errors = self.get_client().insert_rows(
883-
table=Table.from_api_repr(table),
879+
table_ref = TableReference(dataset_ref=DatasetReference(project_id, dataset_id), table_id=table_id)
880+
bq_client = self.get_client(project_id=project_id)
881+
table = bq_client.get_table(table_ref)
882+
errors = bq_client.insert_rows(
883+
table=table,
884884
rows=rows,
885885
ignore_unknown_values=ignore_unknown_values,
886886
skip_invalid_rows=skip_invalid_rows,

β€Žtests/providers/google/cloud/hooks/test_bigquery.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -677,9 +677,8 @@ def test_invalid_source_format(self, mock_get_service):
677677
):
678678
self.hook.run_load("test.test", "test_schema.json", ["test_data.json"], source_format="json")
679679

680-
@mock.patch("airflow.providers.google.cloud.hooks.bigquery.Table")
681680
@mock.patch("airflow.providers.google.cloud.hooks.bigquery.Client")
682-
def test_insert_all_succeed(self, mock_client, mock_table):
681+
def test_insert_all_succeed(self, mock_client):
683682
rows = [{"json": {"a_key": "a_value_0"}}]
684683

685684
self.hook.insert_all(
@@ -690,9 +689,9 @@ def test_insert_all_succeed(self, mock_client, mock_table):
690689
ignore_unknown_values=True,
691690
skip_invalid_rows=True,
692691
)
693-
mock_table.from_api_repr.assert_called_once_with({"tableReference": TABLE_REFERENCE_REPR})
692+
mock_client.return_value.get_table.assert_called_once_with(TABLE_REFERENCE)
694693
mock_client.return_value.insert_rows.assert_called_once_with(
695-
table=mock_table.from_api_repr.return_value,
694+
table=mock_client.return_value.get_table.return_value,
696695
rows=rows,
697696
ignore_unknown_values=True,
698697
skip_invalid_rows=True,

0 commit comments

Comments
 (0)