Tableau OCF Connector: Overview¶
The Tableau OCF Connector which can be used for Tableau Server or Tableau Online (Cloud) was developed by Alation and is available as a Zip file that can be uploaded and installed in Manage Connectors. Create a ticket with Alation Support about receiving the Tableau connector package.
This connector should be used to catalog Tableau as a BI source in Alation. It extracts Tableau objects such as sites, projects, workbooks, sheets (view, worksheet), dashboard), fields, datasource, datasource Fields, databases, and tables. Users will be able to search and find Tableau objects, curate Tableau object pages, and understand the business transformation (lineage) of their data from the Alation user interface.
Team¶
The following administrators are required to install this connector:
Alation Server Admin:
Installs the connector
Creates a Tableau BI source
Provisions Alation API tokens
Tableau administrator with the site administrator privilege:
Enables the Metadata API
Scope¶
The table below shows what features are covered by this connector:
Feature |
Scope |
Availability |
---|---|---|
Tableau online instance |
Catalog a Tableau instance in the cloud environment |
Yes |
Tableau server |
Catalog a Tableau server |
Yes |
Sites |
Catalog sites in Tableau server and online |
Yes |
Filter sites |
Ability to include or exclude specific sites |
Yes * |
Projects |
Catalog projects in a site |
Yes |
Filter projects |
Ability to include or exclude specific projects |
Yes |
Views |
Catalog reports in a site |
Yes |
Reports - sheets and dashboards |
Catalog sheets and dashboards in reports |
Yes |
Reports objects |
Catalog report objects such as charts and tables |
Yes |
Report columns - dimensions, measures, measure expressions |
Catalog dimensions, measures, and measure expressions of report objects |
Yes |
Report object data sources |
Catalog data sources used by report objects |
Yes |
Report lineage |
Catalog the lineage of a report object |
Yes |
Filter reports |
Ability to include or exclude specific Reports |
No |
Report owner |
Owners or authors who created a report |
No |
Workbook |
Catalog workbooks in a site |
Yes |
Dashboards |
Catalog dashboards in a site |
Yes |
Dashboard object Measures and dimensions |
Catalog dimensions and measure of a dashboard object |
No |
Applications |
Catalog applications |
No |
Filter applications |
Ability to include or exclude specific application |
No |
Dataflows |
Catalog dataflows |
No |
Datasets |
Catalog datasets |
Yes |
Image Preview |
Ability to show a thumbnail image of reports and workbooks |
Yes |
Datasource/Published datasources |
Catalog datasources/published datasources |
Yes |
Embedded datasources/ Unpublished datasources |
Catalog embedded datasources/unpublished datasources |
Yes |
Datasource columns and fields |
Catalog columns and fields in datasource |
Yes |
Databases and tables |
Catalog databases and tables |
Yes |
Popularity |
Popularity of reports/views |
Yes |
Security replication |
Replicate access control to reports and dashboards |
Yes |
Source Comments |
Catalog source comments/description |
Yes ** |
* This is not applicable for Tableau Server
** Descriptions/Source comments are supported for Project, Workbook, Published Data Sources, Report Columns, and Datasource Columns from version 2022.3.
Tableau Object Hierarchy¶
The following diagram shows the hierarchy of Tableau objects and how they are cataloged in Alation:

Tableau API Methods¶
The table below lists the Tableau API methods used by this connector to extract metadata from the Tableau server:
Type |
API Endpoint |
Description |
---|---|---|
Authentication |
POST /api/{api-version}/auth/signin POST /api/{api-version}/auth/signout |
Signs you in as a user on the specified site on Tableau Server or Tableau Online. This call returns a credentials token that you use in subsequent calls to the server. |
Sites Extraction |
GET /api/{api-version}/sites GET /api/{api-version}/sites/site-id |
|
Projects Extraction |
GET /api/{api-version}/sites/{site-id}/ projects GET /api/{api-version}/sites/{site-id}/ projects?filter=name:eq:[names] GET /api/{api-version}/sites/{site-id}/ projects/{project-id} |
|
Preview Extraction |
GET /api/{api-version}/sites/{site-id}/ workbooks/{workbook-id}/views/{view-id}/ previewImage GET /api/{api-version}/sites/{site-id}/ views/{view-id}/image?resolution=high |
|
Extract Sample View Data |
GET /api/{api-version}/sites/{site-id}/ views/{view-id}/data |
Returns a specified view rendered as data in comma-separated-value (CSV) format |
Groups and Users Extraction |
GET api/{api-version}/sites/{site-id}/ groups?filter=domainName:in:[domain1, domain2] GET api/{api-version}/sites/{site-id}/ groups/{group-id}/users |
|
Permissions Extraction |
GET /api/api-version/sites/site-id/ datasources/datasource-id/permissions GET /api/api-version/sites/site-id/ projects/project-id/permissions GET /api/api-version/sites/site-id/ views/view-id/permissions GET /api/api-version/sites/site-id/ workbooks/workbook-id/permissions |
|
Certifying Workbook |
GET /api/{api-version}/sites/{site-id}/ workbooks/{workbook-id} PUT /api/{api-version}/sites/{site-id}/ workbooks/{workbook-id} |
|
Certify Published Datasource |
PUT /api/{api-version}/sites/{site-id}/ datasources/{datasource-id} |
Update certification status of the specified data source. Note
|
Create Project for Certified Datasource/Workbook |
POST /api/{api-version}/sites/site-id/ projects PUT /api/{api-version}/sites/site-id/ projects/project-id |
|
Refer to API Reference - All Methods for more information.
Tableau Metadata API Queries¶
The table below lists the Tableau Metadata API Queries used by this connector to extract metadata from the Tableau server:
Workbooks, Dashboards, Sheets, Embedded Datasource ViewFields (Report Columns), and Embeddded Datasource Columns (Datasource Columns).
Query:
query GetWorkbooksAfter($projectNames: [String]!, $first:Int!, $after: String){ workbooksConnection (filter : {projectNameWithin : $projectNames}, first: $first, after: $after){ pageInfo { hasNextPage endCursor } totalCount nodes{ id luid projectName name description site { id luid id name } projectVizportalUrlId vizportalUrlId sheets { id name luid path createdAt updatedAt sheetFieldInstances { name id isHidden } upstreamDatasources { name id } containedInDashboards { id luid name } tagsConnection { nodes { name } } } dashboards { id luid name createdAt updatedAt upstreamDatasources { name id } upstreamSheetFieldInstances { id isHidden name } tagsConnection { nodes { name } } } embeddedDatasources { id name hasExtracts fields { name id __typename upstreamColumns { id name luid } } } viewsConnection { nodes { name id path } } } } }
Published Datasources.
Query:
query GetPublishedDatasourcesAfter ($projectNames: [String]!, $first:Int!, $after:String) { publishedDatasourcesConnection (filter : {projectNameWithin : $projectNames}, first:$first, after:$after) { pageInfo { hasNextPage endCursor } totalCount nodes{ id luid name isCertified projectName vizportalUrlId projectVizportalUrlId extractLastUpdateTime site { id name luid } certificationNote certifierDisplayName description owner { id name luid } fields { name id __typename upstreamColumns { id name luid } } } } }
Database Servers (Enrich BI Connections)
Query:
query GetDatabaseServers ($first:Int!, $after: String){ databaseServersConnection (first:$first, after:$after) { pageInfo { hasNextPage endCursor } totalCount nodes { id name connectionType isEmbedded extendedConnectionType hostName port description tables { id name schema } } } }
Database Tables (BI Connections)
Query:
query GetDatabaseTables($first:Int!, $after: String){ databaseTablesConnection (first:$first, after:$after) { pageInfo { hasNextPage endCursor } totalCount nodes{ id luid name schema database { id luid name connectionType downstreamDatasources { id name } downstreamWorkbooks { id luid name } } columns { id luid remoteType name } } } }
Calculated Fields
Query:
query GetCalculatedFields ($first:Int!, $after:String){ calculatedFieldsConnection (first:$first, after:$after) { pageInfo { hasNextPage endCursor } totalCount nodes { name id formula dataType dataCategory role datasource { name } fields { id name } } } }
Column Fields
Query:
query GetColumnFields ($first:Int!, $after:String){ columnFieldsConnection (first:$first, after:$after) { pageInfo { hasNextPage endCursor } totalCount nodes{ name id dataCategory dataType role description datasource { id name } } } }
Group Fields
Query:
query GetGroupFields ($first:Int!, $after:String){ groupFieldsConnection (first:$first, after:$after) { pageInfo { hasNextPage endCursor } totalCount nodes{ id name dataType dataCategory role datasource { id name } } } }
Get Projects Info (used to map project names to workbook LUIDs)
Query:
query GetProjectInfoAfter ($projectNames: [String]!, $first: Int!, $after: String) { workbooksConnection (filter : {projectNameWithin : $projectNames}, first: $first, after: $after){ pageInfo { hasNextPage endCursor } totalCount nodes{ projectVizportalUrlId projectName } } }
Get Sites (used to verify API availability)
Query:
query GetSites{ tableauSites { id luid name uri } }