Skip to main content Skip to footer

BigQuery Insert Documentation

Version: 3.1.0

Retrieved: 2025-10-09 15:15:46


Google BigQuery Insert

Insert row(s) into Google BigQuery tables.

The module accepts arrays or a single object as source. If source is an array the module will write multiple rows.

Settings

Name Requirements Purpose Default
Project Id String with length 1 to 64 The project id in Google Cloud  
Dataset Id String with length 1 to 64 The dataset id in Google Cloud  
Table Id String with length 1 to 64 The table id in Google Cloud  
Insert Id Property String with length 0 to 64 The property that contains the Insert Id. Mandatory if Insert Options -> Allow Empty InsertIds is false  
Source Property String with length 1 to 64 The property on the incoming message that contains the data to send data

Insert Options

Name Requirements Purpose Default
Allow Unknown Fields Boolean Whether or not to accept rows with fields that are not specified in the schema, ignoring the extra fields. false
Skip Invalid Rows Boolean Insert all valid rows of a request, even if invalid rows exist. If false, the entire request will fail if any invalid rows exist. false
Suppress Insert Errors Boolean If true, insert errors don't lead to an exception. This setting has no effect on which rows are inserted and which are not. false
Allow Empty InsertIds Boolean If true, Insert Id Property can be unspecified. This in turns allows for faster inserts, at the expense of possible record duplication if the operation needs to be retried. true

Insert Id

When using the Insert Id Property you need know what type of data you insert. Depending on inserting single row vs multiple rows the path to the Insert Id Property will be different

Single

{
    data: {
        'col1': 'value 1',
        'col2': 'value 2',
        'col3': '123'
    }
}

If col3 is the Insert Id Property the configuration would be

Insert Id Property = data.col3

Multiple

{
    data: [
        {
            'col1': 'value 1',
            'col2': 'value 2',
            'col3': '123'
        },
        {
            'col1': 'value 1',
            'col2': 'value 2',
            'col3': '456'
        }
    ]
}

If col3 is the Insert Id Property the configuration would be

Insert Id Property = col3

So when doing bulk inserts the path to the Insert Id Property will be based on the array and not on the message as it is when inserting single rows.

Credential

This module contains an option to select credentials to use in the module. All credentials supported by the module are presented in a drop-down.

Example - Single Row

The example below will insert the data found under the data property into Google BigQuery

# Settings:
Project Id = myGoogleProjectId
Dataset Id = myGoogleDatasetId
Table Id = myGoogleTableId


# Incoming message:
{
    'data':{
        'name':'machine-Q352',
        'temp':465.3,
        'timestamp': '2019-08-10 16:23:44'
    }
}

# Outgoing message:
{
    'data':{
        'name':'machine-Q352',
        'temp':465.3,
        'timestamp': '2019-08-10 16:23:44'
    },
    'crosser':{
        'success':true
    }
}

Example - Multiple Rows

The example below will insert all the objects found in the array under the data property into Google BigQuery

# Settings:
Project Id = myGoogleProjectId
Dataset Id = myGoogleDatasetId
Table Id = myGoogleTableId


# Incoming message:
{
    'data':[{
        'name':'machine-Q352',
        'temp':465.3,
        'timestamp': '2019-08-10 16:23:44'
    },{
        'name':'machine-Q353',
        'temp':203.1,
        'timestamp': '2019-08-10 16:23:47'
    },{
        'name':'machine-Q354',
        'temp':139.8,
        'timestamp': '2019-08-10 16:23:45'
    },]
}

# Outgoing message:
{
    'data':[{
        'name':'machine-Q352',
        'temp':465.3,
        'timestamp': '2019-08-10 16:23:44'
    },{
        'name':'machine-Q353',
        'temp':203.1,
        'timestamp': '2019-08-10 16:23:47'
    },{
        'name':'machine-Q354',
        'temp':139.8,
        'timestamp': '2019-08-10 16:23:45'
    },],
    'crosser':{
        'success':true
    }
}

Example Failed Processing

If the insert fails you will get a message out with information about the error. The original message will also be included.

Below we have a bad configuration using

Project Id = fakeProject
Dataset Id = fakeDataset
Table Id = fakeTable
# Outgoing message:
{
    'data':{
        'name':'machine-Q352',
        'temp':465.3,
        'timestamp': '2019-08-10 16:23:44'
    },
    'crosser':{
        'success':false,
        'message':'Google.Apis.Requests.RequestError\nNot found: Table fakeProject:fakeDataset.fakeTable [404]\nErrors [\n\tMessage[Not found: Table fakeProject:fakeDataset.fakeTable] Location[ - ] Reason[notFound] Domain[global]\n]\n'
    }
}