Integration model
To obtain 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. ThepageSizeandpageNumberparameters are sent to enable pagination; thepageSizeparameter is configurable up to 1000 (Tableau's maximum), as indicated later in the Configuration section -
Graphql →
{host}/relationship-service-war/graphql
Metadata extraction
To perform metadata extraction of 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 WORKBOOK entity subtype, because the extracted metadata is very specific to this technology.
The plugin extracts the following attributes from the workbooks (they must be named the same in the attribute_definition table's name field, so that they 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 |
Below are the optional metadata related to the site and the workbook that can be included in the object template so that they are reflected when the workbook metadata is extracted.
Workbook metadata
|
Attribute name |
Attribute type |
|
workbookLuid |
INPUT_TEXT |
|
workbookId |
INPUT_TEXT |
|
workbookContainsUnsupportedCustomSql |
INPUT_CHECKBOX |
|
workbookProjectVizportalUrlId |
INPUT_NUMBER |
|
workbookProjectName |
INPUT_TEXT |
|
workbookProjectLuid |
INPUT_TEXT |
|
workbookContainerType |
INPUT_TEXT |
|
workbookContainerName |
INPUT_TEXT |
|
workbookOwnerId |
INPUT_TEXT |
|
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_TEXT |
|
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 afterward to make the REST API calls that retrieve the 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 the sites to be governed (must have the Server Administrator role on each site). The personal access token's lifetime is one year, so it is the client's responsibility to renew it before it expires for correct operation.
To be able to use the metadata Graph API, it must first be enabled with the command:
tsm maintenance metadata-services enable
which the client must run before using the plugin.
Configuration
This includes the details of the plugin-specific configuration.
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 items per page when retrieving the sites. Maximum 1000 -
totplugin.anjana.tagsSeparator→ Tag separator used when sending them to Anjana -
totplugin.server.url→ URL of tot -
totplugin.connection→ List of connections for Tableau -
totplugin.connection[].name→ Name of the Tableau connection -
totplugin.connection[].techonology.server→ URL of Tableau Server -
totplugin.connection[].techonology.version→ Version used in the API URLs -
totplugin.connection[].techonology.personalAccessTokenName→ Name of the personal access token -
totplugin.connection[].techonology.personalAccessTokenValue→ Value of the personal access token -
totplugin.connection[].techonology.aris→ List of ARIs indicating the services available in the plugin