Cross-Provider Workflow

Google Sheets to Snowflake Ingest

Version 1.0.0

Read a Google Sheets range, then load the values into Snowflake via a SQL insert.

1 workflow 2 source APIs 2 providers
View Spec View on GitHub ArazzoWorkflowsCross-Provider

Providers Orchestrated

google-sheets snowflake

Workflows

sheets-to-snowflake-ingest
Pull values from a Google Sheet and insert them into Snowflake.
Reads a Google Sheets range, then submits a Snowflake INSERT statement binding the sheet values so the spreadsheet data lands in a warehouse table.
2 steps inputs: insertStatement, range, spreadsheetId, warehouse outputs: sheetRange, statementHandle
1
read-sheet
$sourceDescriptions.googleSheetsApi.getValues
Read the values from the configured Google Sheets range.
2
ingest-to-snowflake
$sourceDescriptions.snowflakeSqlApi.SubmitStatement
Submit a Snowflake INSERT statement binding the sheet values.

Source API Descriptions

Arazzo Workflow Specification

data-google-sheets-to-snowflake-ingest.yml Raw ↑
arazzo: 1.0.1
info:
  title: Google Sheets to Snowflake Ingest
  summary: Read a Google Sheets range, then load the values into Snowflake via a SQL insert.
  description: >-
    A data pipeline workflow that reads a range of values from a Google Sheet and
    ingests them into a Snowflake table by submitting an INSERT statement through the
    SQL API. Demonstrates bringing spreadsheet-maintained reference data into a cloud
    data warehouse for analytics.
  version: 1.0.0
sourceDescriptions:
  - name: googleSheetsApi
    url: https://raw.githubusercontent.com/api-evangelist/google-sheets/refs/heads/main/openapi/google-sheets-openapi.yml
    type: openapi
  - name: snowflakeSqlApi
    url: https://raw.githubusercontent.com/api-evangelist/snowflake/refs/heads/main/openapi/sqlapi.yaml
    type: openapi
workflows:
  - workflowId: sheets-to-snowflake-ingest
    summary: Pull values from a Google Sheet and insert them into Snowflake.
    description: >-
      Reads a Google Sheets range, then submits a Snowflake INSERT statement binding
      the sheet values so the spreadsheet data lands in a warehouse table.
    inputs:
      type: object
      properties:
        spreadsheetId:
          type: string
        range:
          type: string
        insertStatement:
          type: string
        warehouse:
          type: string
    steps:
      - stepId: read-sheet
        description: Read the values from the configured Google Sheets range.
        operationId: $sourceDescriptions.googleSheetsApi.getValues
        parameters:
          - name: spreadsheetId
            in: path
            value: $inputs.spreadsheetId
          - name: range
            in: path
            value: $inputs.range
        successCriteria:
          - condition: $statusCode == 200
        outputs:
          sheetValues: $response.body#/values
          sheetRange: $response.body#/range
      - stepId: ingest-to-snowflake
        description: Submit a Snowflake INSERT statement binding the sheet values.
        operationId: $sourceDescriptions.snowflakeSqlApi.SubmitStatement
        requestBody:
          contentType: application/json
          payload:
            statement: $inputs.insertStatement
            warehouse: $inputs.warehouse
            bindings:
              "1":
                type: TEXT
                value: $steps.read-sheet.outputs.sheetValues
            timeout: 120
        successCriteria:
          - condition: $statusCode == 200
        outputs:
          statementHandle: $response.body#/statementHandle
    outputs:
      sheetRange: $steps.read-sheet.outputs.sheetRange
      statementHandle: $steps.ingest-to-snowflake.outputs.statementHandle