Google Sheets
Google Sheets is a web-based spreadsheet program that is part of Google's free, web-based Google Docs Editors suite.
Bruin supports Google Sheets as both a source and a destination for Ingestr assets: you can ingest data from Google Sheets into your data warehouse, or write data from any supported source into a Google Sheets spreadsheet.
To set up a Google Sheets connection, you need to add a configuration item in the .bruin.yml file and the asset file. You can provide either the service_account_file or the service_account_json; if you omit both, Application Default Credentials are used (e.g. after running gcloud auth application-default login). For more information, please follow the guide. Once you complete the guide, you should have a service account JSON file.
Follow the steps below to correctly set up Google Sheets as a data source and run ingestion.
Configuration
Step 1: Add a connection to .bruin.yml file
connections:
google_sheets:
- name: "my-gsheets"
# you can either specify a path to the service account file
service_account_file: "path/to/file.json"
# or you can specify the service account json directly
service_account_json: |
{
"type": "service_account",
...
}service_account_file(optional): The path to the service account JSON file. If omitted, Application Default Credentials are used (e.g. theGOOGLE_APPLICATION_CREDENTIALSenv var, or thegcloud auth application-default logintoken on your machine).service_account_json(optional): The service account JSON content itself (alternative toservice_account_file).
Step 2: Create an asset file for data ingestion
To ingest data from Google Sheets, you need to create an asset configuration file. This file defines the data flow from the source to the destination. Create a YAML file (e.g., gsheets_ingestion.yml) inside the assets folder and add the following content:
name: public.gsheets
type: ingestr
connection: postgres
parameters:
source_connection: my-gsheets
source_table: '16UY6EQ_6jkdUdasdNfUq2CA.Sheet1'
destination: postgresname: The name of the asset.type: Specifies the type of the asset. Set this to ingestr to use the ingestr data pipeline.connection: This is the destination connection, which defines where the data should be stored. For example:postgresindicates that the ingested data will be stored in a Postgres database.source_connection: The name of the Google Sheets connection defined in .bruin.yml.source_table: The name of the data table in Google Sheets to ingest. For example, if thespreadsheet URLis https://docs.google.com/spreadsheets/d/1VTtCiw7UM1sadasdfas/edit?usp=sharing, thespreadsheet IDis 1VTtCiw7UM1sadasdfas. If thesheet nameis Sheet1, thesource_tablewill be1VTtCiw7UM1sadasdfas.Sheet1
Step 3: Run asset to ingest data
bruin run assets/gsheets_ingestion.ymlAs a result of this command, Bruin will ingest data from the given Google Sheets table into your Postgres database.
Google Sheets as a destination
You can also write data into a Google Sheets spreadsheet by using a Google Sheets connection as the ingestr destination. The connection is configured exactly as above (Step 1), but the credentials must grant write access — share the target spreadsheet with the service account's client_email as an Editor.
Set destination: gsheets and point the asset connection at your Google Sheets connection. The asset name is used as the target and must follow the spreadsheet_id.sheet_name format; the sheet (tab) is created automatically if it does not exist.
name: '16UY6EQ_6jkdUdasdNfUq2CA.Sheet1'
type: ingestr
connection: my-gsheets
parameters:
source_connection: my-postgres
source_table: 'public.users'
destination: gsheetsname: The target spreadsheet and sheet, inspreadsheet_id.sheet_nameformat.connection: The name of the Google Sheets connection (Editor access) defined in.bruin.yml.destination: Set togsheetsto write into Google Sheets.
Only the replace (default) and append incremental strategies are supported for the Google Sheets destination.