Integration Model
To obtain the metadata related to Tableau (sites, projects and workbooks), the following Tableau REST APIs are used:
-
Sign in →
{host}/api/{version}/auth/signin -
Sign out →
{host}/api/{version}/auth/signout -
Query sites →
{host}/api/{version}/sites. The parameterspageSizeandpageNumberare sent to enable pagination; thepageSizeparameter is configurable up to 1000 (Tableau maximum) as indicated further below in the Configuration section -
Graphql →
{host}/relationship-service-war/graphql
Metadata Extraction
In order to perform metadata extraction from Tableau workbooks, the user views the following hierarchy of technology structures with sites, projects and workbooks:
-
Site1
-
Prj1
-
Wrk1
-
Wrk2
-
-
Prj2
-
Wrk3
-
Wrk4
-
-
…
-
SiteN
-
PrjN
-
WrkM
-
-
It is recommended to create a specific subtype of WORKBOOK entity because the extracted metadata is very specific to this technology.
The plugin extracts the following attributes from workbooks (they must be named the same in the attribute_definition table, name field, in order to appear in the template).
-
path with the concatenation of the site, project and workbook values (siteName/projectName/workbookName)
-
infrastructure with the selected value
-
technology with the selected value
-
zone with the selected value
-
physicalName and name with the same value, the workbook name
The attributes to be created in Anjana must have the following types:
|
Attribute name |
Attribute type |
|
physicalName |
INPUT_TEXT |
|
path |
INPUT_TEXT |
|
infrastructure |
SELECT |
|
technology |
SELECT |
|
zone |
SELECT |
|
name |
INPUT_TEXT |
The following are the optional metadata related to the site and workbook that can be included in the object template so that they are reflected when extracting the workbook metadata.
Workbook metadata
|
Attribute name |
Attribute type |
|
workbookLuid |
INPUT_NUMBER |
|
workbookId |
INPUT_NUMBER |
|
workbookContainsUnsupportedCustomSql |
INPUT_CHECKBOX |
|
workbookProjectVizportalUrlId |
INPUT_NUMBER |
|
workbookProjectName |
INPUT_TEXT |
|
workbookProjectLuid |
INPUT_NUMBER |
|
workbookContainerType |
INPUT_TEXT |
|
workbookContainerName |
INPUT_TEXT |
|
workbookOwnerId |
INPUT_NUMBER |
|
workbookOwnerUserName |
INPUT_TEXT |
|
workbookDescription |
INPUT_TEXT |
|
workbookUri |
INPUT_TEXT |
|
workbookVizportalUrlId |
INPUT_NUMBER |
|
workbookCreatedAt |
INPUT_DATE |
|
workbookUpdatedAt |
INPUT_DATE |
|
workbookTags |
INPUT_TEXT |
Site metadata
It is recommended to create a section within the WORKBOOK entity template to include the site metadata
|
Attribute name |
Attribute type |
|
siteName |
INPUT_TEXT |
|
siteId |
INPUT_NUMBER |
|
siteContentUrl |
INPUT_TEXT |
|
siteAdminMode |
INPUT_TEXT |
|
siteRevisionHistoryEnabled |
INPUT_CHECKBOX |
|
siteDisableSubscriptions |
INPUT_CHECKBOX |
|
siteState |
INPUT_TEXT |
|
siteRevisionLimit |
INPUT_NUMBER |
|
siteSubscribeOthersEnabled |
INPUT_CHECKBOX |
|
siteAllowSubscriptionAttachments |
INPUT_CHECKBOX |
|
siteGuestAccessEnabled |
INPUT_CHECKBOX |
|
siteCacheWarmupEnabled |
INPUT_CHECKBOX |
|
siteDataAlertsEnabled |
INPUT_CHECKBOX |
|
siteCommentingEnabled |
INPUT_CHECKBOX |
|
siteCommentingMentionsEnabled |
INPUT_CHECKBOX |
|
siteFlowsEnabled |
INPUT_CHECKBOX |
|
siteEditingFlowsEnabled |
INPUT_CHECKBOX |
|
siteSchedulingFlowsEnabled |
INPUT_CHECKBOX |
|
siteExplainDataEnabled |
INPUT_CHECKBOX |
|
siteExtractEncryptionMode |
INPUT_TEXT |
|
siteCatalogingEnabled |
INPUT_CHECKBOX |
|
siteDerivedPermissionsEnabled |
INPUT_CHECKBOX |
|
siteWebExtractionEnabled |
INPUT_CHECKBOX |
|
siteAskDataMode |
INPUT_TEXT |
|
siteRunNowEnabled |
INPUT_CHECKBOX |
|
siteUserVisibilityMode |
INPUT_TEXT |
|
siteRequestAccessEnabled |
INPUT_CHECKBOX |
|
siteAuthoringEnabled |
INPUT_CHECKBOX |
|
siteCustomSubscriptionEmailEnabled |
INPUT_CHECKBOX |
|
siteCustomSubscriptionFooterEnabled |
INPUT_CHECKBOX |
|
siteNamedSharingEnabled |
INPUT_CHECKBOX |
|
siteUseDefaultTimeZone |
INPUT_CHECKBOX |
|
siteSelfServiceScheduleForRefreshEnabled |
INPUT_CHECKBOX |
|
siteAutoSuspendRefreshEnabled |
INPUT_CHECKBOX |
|
siteAutoSuspendRefreshInactivityWindow |
INPUT_NUMBER |
|
sitePersonalSpaceEnabled |
INPUT_CHECKBOX |
|
sitePersonalSpaceStorageQuota |
INPUT_NUMBER |
|
siteDqwSubscriptionsEnabled |
INPUT_CHECKBOX |
Required Credentials
Metadata Extraction
A personal access token is required to obtain the token used to make the REST API calls to retrieve site, project and workbook information. This token is created in Tableau Server and its name and value must be included in the yml before using the plugin in the properties:
-
totplugin.connection.personalAccessTokenName
-
totplugin.connection.personalAccessTokenSecret
The user with which the PAT is generated must have access to all sites to be governed (with the Server Administrator role on each site). The lifetime of the personal access token is one year, so it is the client's responsibility to renew it before it expires for proper operation.
To use the metadata Graph API, it must first be enabled with the command:
tsm maintenance metadata-services enable
which must be run by the client before using the plugin.
Configuration
Here the details of the plugin-specific configuration are included.
The common configuration is explained in the Technical Configuration Guide.
server:
port: 15022
totplugin:
location: http://totplugintableauserver:15022/plugin/tableau/api/v1
path-separator: "/"
pagination:
pageSize: 100
anjana:
tagsSeparator: "_-"
server:
url: http://totserver:15000/tot/
connection:
- name: tableau-1
technology:
server: <server>
version: 3.17
personalAccessTokenName: <user>
personalAccessTokenSecret: <secret>
aris:
- ari: "anja:totplugin:extract:/tableau/tableau/tableau/"
-
server.port→ Port where the plugin is deployed -
totplugin.location→ Base URL of the plugin -
totplugin.pathSeparator→ Character that separates the path for extraction -
totplugin.pagination.pageSize→ Number of elements per page when retrieving sites. Maximum 1000 -
totplugin.anjana.tagsSeparator→ Tag separator when sending them to Anjana -
totplugin.server.url→ tot URL -
totplugin.connection→ List of connections for Tableau -
totplugin.connection[].name→ Name of the Tableau connection -
totplugin.connection[].techonology.server→ Tableau Server URL -
totplugin.connection[].techonology.version→ Version used in the APIs URL -
totplugin.connection[].techonology.personalAccessTokenName→ Personal access token name -
totplugin.connection[].techonology.personalAccessTokenValue→ Personal access token value -
totplugin.connection[].techonology.aris→ List of ARIs indicating the services available in the plugin