Mixin that provides common BigQuery helpers (identifier quoting, dataset creation).
Expect subclasses to define: self.project, self.dataset, self.client.
Source code in src/fastflowtransform/executors/_bigquery_mixin.py
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 | class BigQueryIdentifierMixin:
"""
Mixin that provides common BigQuery helpers (identifier quoting, dataset creation).
Expect subclasses to define: self.project, self.dataset, self.client.
"""
project: str
dataset: str
client: bigquery.Client
@staticmethod
def _bq_quote(value: str) -> str:
return value.replace("`", "\\`")
def _qualified_identifier(
self, relation: str, project: str | None = None, dataset: str | None = None
) -> str:
proj = project or self.project
dset = dataset or self.dataset
return f"`{self._bq_quote(proj)}.{self._bq_quote(dset)}.{self._bq_quote(relation)}`"
def _ensure_dataset(self) -> None:
ds_id = f"{self.project}.{self.dataset}"
try:
self.client.get_dataset(ds_id)
except NotFound:
self.client.create_dataset(bigquery.Dataset(ds_id))
|