Primary Keys
IF |
A table without a Primary Keys is replicated. |
THEN |
Table is created. BigQuery doesn’t use Primary Keys. |
IF |
A table with a single Primary Key is replicated. |
THEN |
Table is created. BigQuery doesn’t use Primary Keys. |
IF |
A table with multiple Primary Keys is replicated. |
THEN |
Table is created. BigQuery doesn’t use Primary Keys. |
IF |
The table’s Primary Key(s) is/are changed. |
THEN |
This scenario is unremarkable to BigQuery, as BigQuery doesn’t use Primary Keys. |
IF |
The table’s Primary Key comment is either removed or changed to be incorrectly formatted. |
THEN |
No effect. Data will continue to load into the table. |
Replication Keys
IF |
A table is replicated where the Replication Key column contains |
THEN |
|
Tables
IF |
A table is replicated where the Replication Key column contains |
THEN |
|
IF |
A table name contains more characters than allowed by BigQuery. |
THEN |
BigQuery will reject all data for the table. Rejected records are logged in the |
AND |
BigQuery will surface the following error:
|
FIX IT |
If possible, change the table name in the source to be less than BigQuery’s character limit of 1,024 characters characters. Use the |
IF |
A table arrives with more columns than BigQuery allows. |
THEN |
BigQuery will reject all data for the table. Rejected records are logged in the |
AND |
BigQuery will surface the following error:
|
FIX IT |
If possible, deselect some columns to allow Stitch to load data into BigQuery for the table. BigQuery has a limit of 10,000 columns columns per table. Use the |
IF |
A column contains only |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
THEN |
Only columns that are populated in at least one record will be created in BigQuery. For example: On the left is a table as it exists in the source; on the right is the table in BigQuery as replicated by Stitch:
Prior to the next job, a new record is added to the table with a populated value in the
Note In this example, |
IF |
A table is tracked that contains entirely |
THEN |
No table is created in BigQuery. |
IF |
A new column is added in a SaaS integration/data source to a table that’s currently set to replicate. |
THEN |
If the table uses Key-based Incremental or Log-based Incremental Replication, only records with a Replication Key value greater than or equal to the last saved bookmark value will be selected for replication. This means that if values for the new column were backfilled in existing records, the only way to have Stitch replicate these values is to either:
Note: Records already in the destination will not be updated with backfilled values due to the Append-Only nature of BigQuery. In this case, records will be appended to the end of the table as a new row. For example - these rows are replicated during the initial job:
Before the next job, a new column named
Querying Append-Only tables requires a different strategy than you would normally use. For more info, check out the Querying Append-Only Tables Guide. |
IF |
A new column is added by you to a Stitch-generated table in BigQuery. |
THEN |
Columns may be added to tables created by Stitch as long as they are nullable, meaning columns don’t have |
IF |
A column is deleted at the source. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
THEN |
How a deleted column is reflected in BigQuery depends on the table’s Replication Method. Consider the example below. On the left is a table as it exists in the source; on the right is the table in BigQuery:
Before the next job, the Log-based Incremental ReplicationDue to how binary logs are structured, changes to a source table - including adding or removing columns, changing data types, etc. - require manual intervention before replication can continue. Refer to the Log-based Incremental Replication documentation for more info. Key-based Incremental ReplicationFor tables using Key-based Incremental Replication, default Below is the source table with the deleted
Full Table ReplicationFor tables using Full Table Replication: during the next job, the entire table will be overwritten. The table’s schema will reflect the column’s removal in the source:
|
IF |
You remove a column from a Stitch-replicated table in your destination. |
THEN |
The result of deleting a column from a Stitch-generated table depends on the type of column being removed:
|
Columns
IF |
A table is replicated where the Replication Key column contains |
THEN |
|
IF |
Stitch detects multiple data types for a single column. |
THEN |
For example: Stitch first detected that
|
IF |
A |
THEN |
BigQuery will store all |
IF |
|
THEN |
No widening will occur. BigQuery will store all |
IF |
A column containing date data with timezone info is replicated to BigQuery. |
THEN |
BigQuery has no support for timezones. |
IF |
A column contains timestamp data that is outside BigQuery’s supported range. |
THEN |
BigQuery will reject the records that fall outside the supported range. Rejected records are logged in the |
AND |
BigQuery will surface the following error:
|
FIX IT |
To resolve the error, offending values in the source must be changed to be within BigQuery’s timestamp range of 0001-01-01 00:00:00 to 9999-12-31 23:59:59.999999 UTC. Use the |
IF |
A column contains integer data that is outside BigQuery’s supported range. |
THEN |
BigQuery will reject all the records in the entire batch. Rejected records are logged in the |
AND |
BigQuery will surface the following error:
|
FIX IT |
To resolve the error, offending values in the source must be changed to be within BigQuery’s range of -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807. Use the |
IF |
A column contains decimal data. |
THEN |
Decimal values will be loaded to BigQuery as the data type |
IF |
A column contains decimal data that is outside BigQuery’s supported range. |
THEN |
BigQuery will accept the maximum supported range for the |
IF |
A table arrives with more columns than BigQuery allows. |
THEN |
BigQuery will reject all data for the table. Rejected records are logged in the |
AND |
BigQuery will surface the following error:
|
FIX IT |
If possible, deselect some columns to allow Stitch to load data into BigQuery for the table. BigQuery has a limit of 10,000 columns columns per table. Use the |
IF |
A column contains only |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
THEN |
Only columns that are populated in at least one record will be created in BigQuery. For example: On the left is a table as it exists in the source; on the right is the table in BigQuery as replicated by Stitch:
Prior to the next job, a new record is added to the table with a populated value in the
Note In this example, |
IF |
A table is tracked that contains entirely |
THEN |
No table is created in BigQuery. |
IF |
A new column is added in a SaaS integration/data source to a table that’s currently set to replicate. |
THEN |
If the table uses Key-based Incremental or Log-based Incremental Replication, only records with a Replication Key value greater than or equal to the last saved bookmark value will be selected for replication. This means that if values for the new column were backfilled in existing records, the only way to have Stitch replicate these values is to either:
Note: Records already in the destination will not be updated with backfilled values due to the Append-Only nature of BigQuery. In this case, records will be appended to the end of the table as a new row. For example - these rows are replicated during the initial job:
Before the next job, a new column named
Querying Append-Only tables requires a different strategy than you would normally use. For more info, check out the Querying Append-Only Tables Guide. |
IF |
A new column is added by you to a Stitch-generated table in BigQuery. |
THEN |
Columns may be added to tables created by Stitch as long as they are nullable, meaning columns don’t have |
IF |
A column is deleted at the source. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
THEN |
How a deleted column is reflected in BigQuery depends on the table’s Replication Method. Consider the example below. On the left is a table as it exists in the source; on the right is the table in BigQuery:
Before the next job, the Log-based Incremental ReplicationDue to how binary logs are structured, changes to a source table - including adding or removing columns, changing data types, etc. - require manual intervention before replication can continue. Refer to the Log-based Incremental Replication documentation for more info. Key-based Incremental ReplicationFor tables using Key-based Incremental Replication, default Below is the source table with the deleted
Full Table ReplicationFor tables using Full Table Replication: during the next job, the entire table will be overwritten. The table’s schema will reflect the column’s removal in the source:
|
IF |
You remove a column from a Stitch-replicated table in your destination. |
THEN |
The result of deleting a column from a Stitch-generated table depends on the type of column being removed:
|
IF |
Two columns are replicated that canonicalize to the same name. |
THEN |
For example: a table containing both BigQuery will reject the records and create a log for the rejected records in the Rejected records are logged in the |
AND |
BigQuery will surface the following error:
|
FIX IT |
If possible, re-name one of the columns in the source so that both column names will be unique when replicated to BigQuery. Use the |
IF |
A column is replicated that has a mixed-case name. |
||||||
THEN |
BigQuery will convert letters to lowercase. For example:
|
IF |
A column is replicated that has a name with spaces. |
||||||
THEN |
BigQuery will convert spaces to undersocres. For example:
|
IF |
A column is replicated with a name that contains unsupported special characters. |
|||||||||
THEN |
BigQuery will convert special characters to underscores. For example:
|
IF |
A column is replicated with a name that begins with a non-letter. |
||||||||||||
THEN |
BigQuery will remove all leading non-letter characters with the exception of leading underscores. For example:
|
IF |
A column name contains more characters than allowed by BigQuery. |
THEN |
BigQuery will reject columns with names that exceed the column character limit. Other columns in the table will persist to BigQuery. Rejected records are logged in the |
AND |
BigQuery will surface the following error:
|
FIX IT |
If possible, change the column name in the source to be less than BigQuery’s character limit of 128 characters characters. Use the |
Data Typing
IF |
Stitch detects multiple data types for a single column. |
THEN |
For example: Stitch first detected that
|
IF |
A |
THEN |
BigQuery will store all |
IF |
|
THEN |
No widening will occur. BigQuery will store all |
IF |
A column containing date data with timezone info is replicated to BigQuery. |
THEN |
BigQuery has no support for timezones. |
IF |
A column contains timestamp data that is outside BigQuery’s supported range. |
THEN |
BigQuery will reject the records that fall outside the supported range. Rejected records are logged in the |
AND |
BigQuery will surface the following error:
|
FIX IT |
To resolve the error, offending values in the source must be changed to be within BigQuery’s timestamp range of 0001-01-01 00:00:00 to 9999-12-31 23:59:59.999999 UTC. Use the |
IF |
A column contains integer data that is outside BigQuery’s supported range. |
THEN |
BigQuery will reject all the records in the entire batch. Rejected records are logged in the |
AND |
BigQuery will surface the following error:
|
FIX IT |
To resolve the error, offending values in the source must be changed to be within BigQuery’s range of -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807. Use the |
IF |
A column contains decimal data. |
THEN |
Decimal values will be loaded to BigQuery as the data type |
IF |
A column contains decimal data that is outside BigQuery’s supported range. |
THEN |
BigQuery will accept the maximum supported range for the |
Schema Changes
IF |
Stitch detects multiple data types for a single column. |
THEN |
For example: Stitch first detected that
|
IF |
Data is replicated to BigQuery that is nested, containing many top-level properties and potentially nested sub-properties. |
THEN |
Nested data will be maintained. If the data contains nested arrays, BigQuery will reject the data. Rejected records are logged in the |
AND |
BigQuery will surface the following error:
|
FIX IT |
If possible, remove the offending record from the source. Use the |
IF |
|
THEN |
No widening will occur. BigQuery will store all |
IF |
A new column is added in a SaaS integration/data source to a table that’s currently set to replicate. |
THEN |
If the table uses Key-based Incremental or Log-based Incremental Replication, only records with a Replication Key value greater than or equal to the last saved bookmark value will be selected for replication. This means that if values for the new column were backfilled in existing records, the only way to have Stitch replicate these values is to either:
Note: Records already in the destination will not be updated with backfilled values due to the Append-Only nature of BigQuery. In this case, records will be appended to the end of the table as a new row. For example - these rows are replicated during the initial job:
Before the next job, a new column named
Querying Append-Only tables requires a different strategy than you would normally use. For more info, check out the Querying Append-Only Tables Guide. |
IF |
A new column is added by you to a Stitch-generated table in BigQuery. |
THEN |
Columns may be added to tables created by Stitch as long as they are nullable, meaning columns don’t have |
IF |
A column is deleted at the source. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
THEN |
How a deleted column is reflected in BigQuery depends on the table’s Replication Method. Consider the example below. On the left is a table as it exists in the source; on the right is the table in BigQuery:
Before the next job, the Log-based Incremental ReplicationDue to how binary logs are structured, changes to a source table - including adding or removing columns, changing data types, etc. - require manual intervention before replication can continue. Refer to the Log-based Incremental Replication documentation for more info. Key-based Incremental ReplicationFor tables using Key-based Incremental Replication, default Below is the source table with the deleted
Full Table ReplicationFor tables using Full Table Replication: during the next job, the entire table will be overwritten. The table’s schema will reflect the column’s removal in the source:
|
IF |
You remove a column from a Stitch-replicated table in your destination. |
THEN |
The result of deleting a column from a Stitch-generated table depends on the type of column being removed:
|
Data Warehouse Changes
IF |
The table’s Primary Key(s) is/are changed. |
THEN |
This scenario is unremarkable to BigQuery, as BigQuery doesn’t use Primary Keys. |
IF |
The table’s Primary Key comment is either removed or changed to be incorrectly formatted. |
THEN |
No effect. Data will continue to load into the table. |
IF |
A new column is added by you to a Stitch-generated table in BigQuery. |
THEN |
Columns may be added to tables created by Stitch as long as they are nullable, meaning columns don’t have |
IF |
You remove a column from a Stitch-replicated table in your destination. |
THEN |
The result of deleting a column from a Stitch-generated table depends on the type of column being removed:
|
IF |
Indices are applied to Stitch-generated columns in the destination. |
THEN |
Stitch will respect the index application. |
IF |
SORT and/or DISTRIBUTION Keys are applied to Stitch-generated columns in the destination. |
THEN |
This is not applicable to BigQuery. |
IF |
You switch to a different destination of the same type. |
THEN |
This means the destination type is still BigQuery, Stitch may just be connected a different database in BigQuery.
|
Related | Troubleshooting |
Questions? Feedback?
Did this article help? If you have questions or feedback, feel free to submit a pull request with your suggestions, open an issue on GitHub, or reach out to us.