> For the complete documentation index, see [llms.txt](https://docs.tonic.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.tonic.ai/app/setting-up-your-database/google-bigquery/biquery-tonic-differences.md).

# Structural differences and limitations with Google BigQuery

{% hint style="info" %}
**Required license:** Professional or Enterprise
{% endhint %}

## No hidden datasets as source or destination <a href="#bigquery-tonic-differences-no-hidden-datasets" id="bigquery-tonic-differences-no-hidden-datasets"></a>

Google BigQuery workspaces cannot have a [hidden dataset](https://cloud.google.com/bigquery/docs/datasets#hidden_datasets) as its source or destination dataset.

## Post-job scripts run in transactions <a href="#bigquery-tonic-differences-post-job-scripts" id="bigquery-tonic-differences-post-job-scripts"></a>

Post-job scripts run inside of transactions. They are limited to [statements that are supported within transactions](https://cloud.google.com/bigquery/docs/reference/standard-sql/transactions#statements_supported_in_transactions).

## Table mode limitations <a href="#bigquery-tonic-differences-table-modes" id="bigquery-tonic-differences-table-modes"></a>

Google BigQuery workspaces cannot use the following table modes:

* Incremental

## Generator limitations <a href="#bigquery-tonic-differences-generators" id="bigquery-tonic-differences-generators"></a>

Google BigQuery workspaces cannot use the following generators:

* Cross Table Sum

## Cannot process STRUCT or INTERVAL types <a href="#big-query-tonic-differences-struct-types" id="big-query-tonic-differences-struct-types"></a>

Tonic Structural cannot process STRUCT or INTERVAL types in Google BigQuery.

## Customer-managed encryption keys not copied to destination

Structural does not copy customer-managed encryption keys (CMEK) from the source tables to the tables that it creates in the destination dataset.

To apply a CMEK to the destination dataset, we recommend that you apply a dataset or project-wide default CMEK in the destination dataset.

## External, snapshot, and cloned table handling <a href="#bigquery-tonic-differences-external-snapshot-cloned" id="bigquery-tonic-differences-external-snapshot-cloned"></a>

In the destination database, Structural creates external, snapshot, and cloned tables as normal tables.

## Cannot assign generators when partition filters required <a href="#bigquery-tonic-diff-no-partition-gen" id="bigquery-tonic-diff-no-partition-gen"></a>

You cannot assign generators to partitioned tables that require a partition filter.

The [environment setting](/app/admin/environment-variables-setting.md) `TONIC_GRPC_ENABLED` indicates whether to use GRPC-based endpoints to access Google BigQuery.

If `TONIC_GRPC_ENABLED` is `true`, then you can leave all of the columns set to Passthrough.

If `TONIC_GRPC_ENABLED` is `false`, then you must truncate the tables.

## No subsetting, but support for table filtering <a href="#big-query-tonic-differences-subsetting" id="big-query-tonic-differences-subsetting"></a>

Google BigQuery workspaces do not support subsetting.

However, for tables that use the De-Identify table mode, you can provide a `WHERE` clause to filter the table. For details, go to [Using table filtering for data warehouses and Spark-based data connectors](/app/generation/subsetting/table-filtering.md).

## No upsert <a href="#big-query-tonic-differences-upsert" id="big-query-tonic-differences-upsert"></a>

Google BigQuery workspaces do not support upsert.

## No output to a container repository <a href="#bigquery-tonic-limitations-containerization" id="bigquery-tonic-limitations-containerization"></a>

For Google BigQuery workspaces, you cannot write the destination data to a container repository.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.tonic.ai/app/setting-up-your-database/google-bigquery/biquery-tonic-differences.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
