Cross-Provider Workflow

dbt Semantic Layer Query to Airtable Records

Version 1.0.0

Run a dbt Semantic Layer metric query, then write the results into an Airtable table.

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

Providers Orchestrated

dbt airtable

Workflows

semantic-query-to-airtable
Run a dbt semantic query, then store the metrics in Airtable.
Executes a dbt Semantic Layer query for governed metrics and creates Airtable records from the returned values.
2 steps inputs: baseId, fields, semanticQuery, tableIdOrName outputs: createdRecords, metrics
1
run-semantic-query
$sourceDescriptions.dbtSemanticApi.executeSemanticQuery
Execute a dbt Semantic Layer metric query.
2
store-metrics
$sourceDescriptions.airtableApi.createRecords
Create Airtable records from the semantic metric results.

Source API Descriptions

Arazzo Workflow Specification

data-dbt-semantic-query-to-airtable.yml Raw ↑
arazzo: 1.0.1
info:
  title: dbt Semantic Layer Query to Airtable Records
  summary: Run a dbt Semantic Layer metric query, then write the results into an Airtable table.
  description: >-
    A data analytics workflow that executes a dbt Cloud Semantic Layer query to compute
    governed metrics, then creates Airtable records from the returned metric values so
    business users can review and annotate them. Demonstrates surfacing semantic-layer
    metrics in a collaborative no-code database.
  version: 1.0.0
sourceDescriptions:
  - name: dbtSemanticApi
    url: https://raw.githubusercontent.com/api-evangelist/dbt/refs/heads/main/openapi/dbt-cloud-semantic-layer-api-openapi.yml
    type: openapi
  - name: airtableApi
    url: https://raw.githubusercontent.com/api-evangelist/airtable/refs/heads/main/openapi/airtable-airtable-api-openapi.yml
    type: openapi
workflows:
  - workflowId: semantic-query-to-airtable
    summary: Run a dbt semantic query, then store the metrics in Airtable.
    description: >-
      Executes a dbt Semantic Layer query for governed metrics and creates Airtable
      records from the returned values.
    inputs:
      type: object
      properties:
        semanticQuery:
          type: string
        baseId:
          type: string
        tableIdOrName:
          type: string
        fields:
          type: object
    steps:
      - stepId: run-semantic-query
        description: Execute a dbt Semantic Layer metric query.
        operationId: $sourceDescriptions.dbtSemanticApi.executeSemanticQuery
        requestBody:
          contentType: application/json
          payload:
            query: $inputs.semanticQuery
        successCriteria:
          - condition: $statusCode == 200
        outputs:
          metrics: $response.body#/data
      - stepId: store-metrics
        description: Create Airtable records from the semantic metric results.
        operationId: $sourceDescriptions.airtableApi.createRecords
        parameters:
          - name: baseId
            in: path
            value: $inputs.baseId
          - name: tableIdOrName
            in: path
            value: $inputs.tableIdOrName
        requestBody:
          contentType: application/json
          payload:
            records:
              - fields: $inputs.fields
            typecast: true
        successCriteria:
          - condition: $statusCode == 200
        outputs:
          createdRecords: $response.body#/records
    outputs:
      metrics: $steps.run-semantic-query.outputs.metrics
      createdRecords: $steps.store-metrics.outputs.createdRecords