Skip to main content

Tableau Export

The Speech Insights - Tableau Export feature pushes indexed Speech Insights transcript data into Tableau Cloud datasources. If your team refers to the indexed transcript payload as xdata, this pipeline exports that xdata from the Speech Insights Elasticsearch index into Tableau.

What the feature does

The module adds a managed export pipeline that:

  • publishes a Tableau datasource from a selected Speech Insights index
  • captures transcript create, update, and delete events
  • batches incremental changes every 5 minutes
  • retries stale or failed work hourly

After the first publish, WinnerWare keeps the Tableau datasource in sync by uploading delta .hyper files and applying Tableau Hyper update actions.

Prerequisites

Enable these features for the tenant:

Admin display nameFeature IDWhy it is needed
Speech InsightsCloudSolutions.Speech.InsightsProvides the transcript indexes and admin area.
Speech Insights ExportCloudSolutions.Speech.Insights.ExportProvides the exportable field and index patterns used by the Tableau pipeline.
Speech Insights - Tableau ExportCloudSolutions.Speech.Insights.TableauAdds the Tableau settings page, admin menu, queue handler, and background sync jobs.
ElasticsearchOrchardCore.ElasticsearchStores and queries the Speech Insights index data.

You also need:

  • a Tableau Cloud site
  • a Tableau project where the datasource will be published
  • an impersonated Tableau user with permission to create and update datasources in that project

Configure Tableau Cloud for API access

Create a Connected App in Tableau Cloud that uses direct-trust JWT authentication.

  1. In Tableau Cloud, open Settings or Connected Apps and create a new connected app for server-to-server access.
  2. Enable the scopes required by this implementation: tableau:datasources:create, tableau:hyper_data:update, and tableau:content:read.
  3. Generate a secret and record the Client ID, Secret ID, and Secret Value.
  4. Record the Tableau site values you will enter in WinnerWare:
    • Site URL: the Tableau Cloud base URL, for example https://10ax.online.tableau.com
    • Site Name: the Tableau site content URL; for the default site this can be left blank
  5. Choose the Tableau user that WinnerWare should impersonate and make sure that user can publish and update datasources in the target Tableau project.

Configure WinnerWare

Open the Settings menu in WinnerWare and select Tableau Cloud.

If global Tableau settings are supplied through configuration providers such as appsettings.json, WinnerWare uses those values by default and the settings page shows a warning explaining that behavior. Enable Configure Tableau only when this site needs to override the global defaults.

Use the Tableau configuration section for global defaults, for example:

{
"Tableau": {
"SiteUrl": "https://10ax.online.tableau.com",
"SiteName": "MySiteName",
"ConnectedAppClientId": "client-id",
"ConnectedAppSecretId": "secret-id",
"ConnectedAppSecretValue": "secret-value",
"ImpersonateUser": "tableau-user@example.com"
}
}

When Configure Tableau is enabled for the site, fill in:

SettingValue
Site URLTableau Cloud base URL
Site NameTableau site content URL
Connected App Client IDConnected app client ID
Connected App Secret IDSecret identifier used as the JWT kid
Connected App Secret ValueSecret value used to sign the JWT
Impersonate UserRequired by the current Connected App flow. WinnerWare sends this as the JWT sub claim for Tableau API calls.

Create a pipeline that exports xdata

Open Speech Insights -> Tableau Pipelines and create a pipeline.

  1. Enter a pipeline name.
  2. Select the Speech Insights Elasticsearch index that contains the transcript xdata you want to publish.
  3. Enter the Tableau project name and datasource name.
  4. Select the fields that should be exported, including any computed or mapped fields needed by downstream Tableau workbooks.
  5. Mark the pipeline Active.

On the first successful run, WinnerWare publishes a full datasource to Tableau. After that:

  • transcript creates and updates are queued as upserts
  • transcript deletions are queued as deletes
  • the 5-minute sync task uploads only the pending changes

Ongoing sync behavior

  • Initial publish performs a full export of all matching documents in the selected index.
  • Incremental sync updates the existing Tableau datasource with upsert and delete batches.
  • Catchup sync retries failed pipelines and processes stale queue items every hour.
  • Published pipelines lock their schema-facing settings. After the first publish, keep the index, Tableau target, and field mappings stable. To change the exported schema, create a new pipeline or recreate the existing one.

Operational notes

  • Each exported datasource always includes a document_id column derived from the Speech Insights transcript identifier. WinnerWare uses this column as the Tableau upsert/delete key.
  • Tableau authentication can come from the global Tableau configuration section or from a site-level override on Settings -> Tableau Cloud.
  • The module republishes a datasource when stored schema metadata no longer matches the saved field mapping, which protects the sync path from silent schema drift.