Cross-Provider Workflow

Databricks Run to Snowflake Validate to Google Sheets

Version 1.0.0

Run a Databricks job, validate the output in Snowflake, then publish a summary to Google Sheets.

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

Providers Orchestrated

databricks snowflake google-sheets

Workflows

databricks-validate-to-sheet
Run Databricks, validate in Snowflake, then publish to a sheet.
Triggers a Databricks job, validates the output via a Snowflake query, and writes the validation summary to a Google Sheets range.
3 steps inputs: jobId, range, spreadsheetId, validationStatement, warehouse outputs: runId, updatedRange
1
run-databricks
$sourceDescriptions.databricksApi.runJobNow
Trigger the Databricks processing job.
2
validate
$sourceDescriptions.snowflakeSqlApi.SubmitStatement
Validate the produced output by querying Snowflake.
3
publish-summary
$sourceDescriptions.googleSheetsApi.updateValues
Publish the validation summary to the Google Sheets range.

Source API Descriptions

Arazzo Workflow Specification

data-databricks-run-to-snowflake-validate-to-sheets.yml Raw ↑
arazzo: 1.0.1
info:
  title: Databricks Run to Snowflake Validate to Google Sheets
  summary: Run a Databricks job, validate the output in Snowflake, then publish a summary to Google Sheets.
  description: >-
    An end-to-end data pipeline workflow that triggers a Databricks job, validates the
    written output by querying Snowflake, and publishes the validation summary to a Google
    Sheets range for stakeholders. Demonstrates orchestrating a processing platform, a
    warehouse, and a spreadsheet provider in a single run.
  version: 1.0.0
sourceDescriptions:
  - name: databricksApi
    url: https://raw.githubusercontent.com/api-evangelist/databricks/refs/heads/main/openapi/databricks-openapi.yml
    type: openapi
  - name: snowflakeSqlApi
    url: https://raw.githubusercontent.com/api-evangelist/snowflake/refs/heads/main/openapi/sqlapi.yaml
    type: openapi
  - name: googleSheetsApi
    url: https://raw.githubusercontent.com/api-evangelist/google-sheets/refs/heads/main/openapi/google-sheets-openapi.yml
    type: openapi
workflows:
  - workflowId: databricks-validate-to-sheet
    summary: Run Databricks, validate in Snowflake, then publish to a sheet.
    description: >-
      Triggers a Databricks job, validates the output via a Snowflake query, and writes the
      validation summary to a Google Sheets range.
    inputs:
      type: object
      properties:
        jobId:
          type: integer
        validationStatement:
          type: string
        warehouse:
          type: string
        spreadsheetId:
          type: string
        range:
          type: string
    steps:
      - stepId: run-databricks
        description: Trigger the Databricks processing job.
        operationId: $sourceDescriptions.databricksApi.runJobNow
        requestBody:
          contentType: application/json
          payload:
            job_id: $inputs.jobId
        successCriteria:
          - condition: $statusCode == 200
        outputs:
          runId: $response.body#/run_id
      - stepId: validate
        description: Validate the produced output by querying Snowflake.
        operationId: $sourceDescriptions.snowflakeSqlApi.SubmitStatement
        requestBody:
          contentType: application/json
          payload:
            statement: $inputs.validationStatement
            warehouse: $inputs.warehouse
            timeout: 120
        successCriteria:
          - condition: $statusCode == 200
        outputs:
          resultData: $response.body#/data
      - stepId: publish-summary
        description: Publish the validation summary to the Google Sheets range.
        operationId: $sourceDescriptions.googleSheetsApi.updateValues
        parameters:
          - name: spreadsheetId
            in: path
            value: $inputs.spreadsheetId
          - name: range
            in: path
            value: $inputs.range
          - name: valueInputOption
            in: query
            value: RAW
        requestBody:
          contentType: application/json
          payload:
            range: $inputs.range
            majorDimension: ROWS
            values: $steps.validate.outputs.resultData
        successCriteria:
          - condition: $statusCode == 200
        outputs:
          updatedRange: $response.body#/updatedRange
    outputs:
      runId: $steps.run-databricks.outputs.runId
      updatedRange: $steps.publish-summary.outputs.updatedRange