# 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.

## 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](https://docs.tonic.ai/app/admin/environment-variables-setting) `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 [table-filtering](https://docs.tonic.ai/app/generation/subsetting/table-filtering "mention").

## 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.
