1. Introducción
El conector de Tableau permite a Anjana descubrir y catalogar los workbooks de un site de Tableau, organizados en la jerarquía site → proyectos → workbooks. Cada conexión configurada en el plugin trabaja sobre un único site de Tableau.
-
Descubrimiento: el plugin presenta al usuario el site configurado y, dentro de él, los proyectos con los workbooks que contiene. Solo se listan los workbooks que pertenecen a un proyecto.
-
Extracción de metadatos: al seleccionar un workbook, el plugin obtiene sus metadatos (identificadores, proyecto, contenedor, propietario, descripción, fechas de creación y modificación y etiquetas) junto con la configuración del site al que pertenece.
El conector es compatible con Tableau Server y Tableau Cloud; los pasos específicos de cada uno se indican en los apartados Técnico y Conectividad.
El plugin es de solo lectura: no crea, modifica ni elimina contenido en Tableau.
2. Integración con Anjana
El plugin genera los siguientes metadatos para cada workbook. Los atributos deben crearse en Anjana con el mismo nombre que figura en la columna «Nombre del campo» para que aparezcan en la plantilla del objeto. Se recomienda crear un subtipo específico de entidad WORKBOOK, y agrupar los metadatos del site en una sección propia de la plantilla.
2.1 Metadatos internos
Campos cuyo valor proviene de la petición de extracción o de la configuración del plugin, no de la API de Tableau.
|
Nombre del campo |
Descripción |
Tipo de atributo |
|---|---|---|
|
infrastructure |
Infraestructura seleccionada al extraer |
SELECT |
|
technology |
Tecnología seleccionada al extraer |
SELECT |
|
zone |
Zona seleccionada al extraer |
SELECT |
|
path |
Ruta del workbook tal y como se recibe en el body de entrada, con el formato siteContentUrl/proyecto/workbook |
INPUT_TEXT |
2.2 Metadatos del site
|
Nombre del campo |
Descripción |
Tipo de atributo |
|---|---|---|
|
siteName |
Nombre del site |
INPUT_TEXT |
|
siteId |
Identificador del site |
INPUT_TEXT |
|
siteContentUrl |
URL de contenido del site |
INPUT_TEXT |
|
siteAdminMode |
Modo de administración de contenido del site |
INPUT_TEXT |
|
siteRevisionHistoryEnabled |
Historial de revisiones habilitado |
INPUT_CHECKBOX |
|
siteDisableSubscriptions |
Suscripciones deshabilitadas |
INPUT_CHECKBOX |
|
siteState |
Estado del site |
INPUT_TEXT |
|
siteRevisionLimit |
Número máximo de revisiones conservadas |
INPUT_NUMBER |
|
siteSubscribeOthersEnabled |
Permite suscribir a otros usuarios |
INPUT_CHECKBOX |
|
siteAllowSubscriptionAttachments |
Permite adjuntos en las suscripciones |
INPUT_CHECKBOX |
|
siteGuestAccessEnabled |
Acceso de invitados habilitado |
INPUT_CHECKBOX |
|
siteCacheWarmupEnabled |
Precalentamiento de caché habilitado |
INPUT_CHECKBOX |
|
siteDataAlertsEnabled |
Alertas de datos habilitadas |
INPUT_CHECKBOX |
|
siteCommentingEnabled |
Comentarios habilitados |
INPUT_CHECKBOX |
|
siteCommentingMentionsEnabled |
Menciones en comentarios habilitadas |
INPUT_CHECKBOX |
|
siteFlowsEnabled |
Flows habilitados |
INPUT_CHECKBOX |
|
siteEditingFlowsEnabled |
Edición de flows habilitada |
INPUT_CHECKBOX |
|
siteSchedulingFlowsEnabled |
Programación de flows habilitada |
INPUT_CHECKBOX |
|
siteExplainDataEnabled |
Explain Data habilitado |
INPUT_CHECKBOX |
|
siteExtractEncryptionMode |
Modo de cifrado de extractos |
INPUT_TEXT |
|
siteCatalogingEnabled |
Catalogación habilitada |
INPUT_CHECKBOX |
|
siteDerivedPermissionsEnabled |
Permisos derivados habilitados |
INPUT_CHECKBOX |
|
siteWebExtractionEnabled |
Extracción web habilitada |
INPUT_CHECKBOX |
|
siteAskDataMode |
Modo de Ask Data |
INPUT_TEXT |
|
siteRunNowEnabled |
Ejecución inmediata (Run Now) habilitada |
INPUT_CHECKBOX |
|
siteUserVisibilityMode |
Modo de visibilidad de usuarios |
INPUT_TEXT |
|
siteRequestAccessEnabled |
Solicitud de acceso habilitada |
INPUT_CHECKBOX |
|
siteAuthoringEnabled |
Edición web (authoring) habilitada |
INPUT_CHECKBOX |
|
siteCustomSubscriptionEmailEnabled |
Email personalizado de suscripción habilitado |
INPUT_CHECKBOX |
|
siteCustomSubscriptionFooterEnabled |
Pie personalizado de suscripción habilitado |
INPUT_CHECKBOX |
|
siteNamedSharingEnabled |
Uso compartido con nombre habilitado |
INPUT_CHECKBOX |
|
siteUseDefaultTimeZone |
Zona horaria por defecto del site |
INPUT_CHECKBOX |
|
siteSelfServiceScheduleForRefreshEnabled |
Programación de refrescos en autoservicio habilitada |
INPUT_CHECKBOX |
|
siteAutoSuspendRefreshEnabled |
Suspensión automática de refrescos habilitada |
INPUT_CHECKBOX |
|
siteAutoSuspendRefreshInactivityWindow |
Ventana de inactividad para la suspensión automática de refrescos |
INPUT_NUMBER |
|
sitePersonalSpaceEnabled |
Espacio personal habilitado |
INPUT_CHECKBOX |
|
sitePersonalSpaceStorageQuota |
Cuota de almacenamiento del espacio personal |
INPUT_NUMBER |
|
siteDqwSubscriptionsEnabled |
Suscripciones DQW habilitadas |
INPUT_CHECKBOX |
2.3 Metadatos del proyecto
Datos del proyecto al que pertenece el workbook, obtenidos junto con el propio workbook.
|
Nombre del campo |
Descripción |
Tipo de atributo |
|---|---|---|
|
workbookProjectName |
Nombre del proyecto del workbook |
INPUT_TEXT |
|
workbookProjectLuid |
Identificador (LUID) del proyecto del workbook |
INPUT_TEXT |
|
workbookProjectVizportalUrlId |
Identificador del proyecto en las URLs del portal web de Tableau |
INPUT_NUMBER |
2.4 Metadatos del workbook
|
Nombre del campo |
Descripción |
Tipo de atributo |
|---|---|---|
|
name |
Nombre del workbook |
INPUT_TEXT |
|
physicalName |
Nombre físico del workbook (mismo valor que name) |
INPUT_TEXT |
|
workbookLuid |
Identificador (LUID) del workbook |
INPUT_TEXT |
|
workbookId |
Identificador interno del workbook |
INPUT_TEXT |
|
workbookContainsUnsupportedCustomSql |
Indica si el workbook contiene SQL personalizado no soportado |
INPUT_CHECKBOX |
|
workbookContainerType |
Tipo de contenedor del workbook |
INPUT_TEXT |
|
workbookContainerName |
Nombre del contenedor del workbook |
INPUT_TEXT |
|
workbookOwnerId |
Identificador del propietario del workbook |
INPUT_TEXT |
|
workbookOwnerUserName |
Nombre de usuario del propietario del workbook |
INPUT_TEXT |
|
workbookDescription |
Descripción del workbook |
INPUT_TEXT |
|
workbookUri |
URI del workbook |
INPUT_TEXT |
|
workbookVizportalUrlId |
Identificador del workbook en las URLs del portal web de Tableau |
INPUT_TEXT |
|
workbookCreatedAt |
Fecha de creación del workbook |
INPUT_DATE |
|
workbookUpdatedAt |
Fecha de última modificación del workbook |
INPUT_DATE |
|
workbookTags |
Etiquetas del workbook concatenadas en un único texto con el separador configurado en totplugin.anjana.tagsSeparator |
INPUT_TEXT |
3. Técnico
3.1 Autenticación
-
El plugin se autentica en Tableau con un token de acceso personal (PAT): envía el nombre y el secreto del PAT, junto con el contentUrl del site configurado, mediante una petición POST de inicio de sesión.
-
Tableau devuelve un token de sesión que el plugin envía en la cabecera
X-Tableau-Authen las llamadas posteriores. -
La sesión no se reutiliza ni se almacena: el plugin inicia sesión en cada operación y cierra la sesión (sign out) tras usar el token. En la extracción de metadatos de un workbook se realizan dos inicios de sesión (uno para consultar el site y otro para la consulta GraphQL), cada uno con su cierre de sesión. En el listado de proyectos y workbooks se realiza un único inicio de sesión.
-
El secreto del PAT se lee de la configuración del plugin.
3.2 APIs utilizadas
|
API |
Endpoint |
Método |
Finalidad |
|---|---|---|---|
|
REST de Tableau (autenticación) |
|
POST |
Iniciar sesión con el PAT en el site configurado y obtener el token y el id del site |
|
REST de Tableau (autenticación) |
|
POST |
Cerrar la sesión e invalidar el token |
|
REST de Tableau (sites) |
|
GET |
Obtener la configuración del site (metadatos del site) |
|
Metadata API de Tableau (GraphQL) |
|
GET |
Obtener los proyectos y workbooks del site, con sus metadatos, propietario y etiquetas |
Notas:
-
La consulta GraphQL por defecto solicita, para el site, los workbooks con los campos id, luid, name, containsUnsupportedCustomSql, projectVizportalUrlId, projectName, projectLuid, containerType, containerName, owner, description, uri, vizportalUrlId, createdAt, updatedAt, tags y views. Puede sustituirse con la propiedad
queryGraphql(ver apartado Configuración). Los views se consultan pero no se vuelcan a Anjana.
3.3 Versión de la API
La versión de la API REST no está fijada en el plugin: se toma de la propiedad version de la conexión y se incluye en la URL (/api/{version}/...). La configuración de ejemplo del plugin utiliza la versión 3.17. La Metadata API (GraphQL) no incluye versión en la URL.
4. Conectividad
4.1 Credenciales del usuario de servicio
-
Un token de acceso personal (PAT) con su nombre y su secreto, creado en Tableau por el usuario de servicio. Ambos valores se incluyen en la configuración del plugin (
personalAccessTokenNameypersonalAccessTokenSecret). -
El contentUrl del site sobre el que se trabaja (
siteContentURL). El PAT debe ser válido en ese site. -
El PAT tiene caducidad: es responsabilidad del cliente renovarlo antes de que expire.
4.2 Rol y permisos
-
Rol en el site: Site Administrator (Creator o Explorer), o Server Administrator. El plugin consulta la configuración del site, operación que Tableau restringe a administradores de servidor y de site.
-
Proyectos y workbooks: permiso de lectura (View) sobre todos los proyectos y workbooks que se quieran catalogar. La Metadata API solo devuelve el contenido sobre el que el usuario tiene permisos. Un administrador del site accede a todo el contenido del site.
-
El plugin no escribe en Tableau: no se necesitan permisos de modificación, publicación ni eliminación.
-
Tableau Server: es necesario habilitar la Metadata API antes de usar el plugin, ejecutando en el nodo inicial de TSM el comando
tsm maintenance metadata-services enable. Lo debe hacer el cliente. En Tableau Cloud la Metadata API está siempre habilitada.
4.3 Requisitos de red
-
Conectividad saliente desde el plugin hacia el servidor de Tableau configurado en la propiedad
server, con el protocolo y el puerto que contenga esa URL. Todas las llamadas (REST y GraphQL) van al mismo host. -
En Tableau Cloud la URL del servidor debe incluir el nombre del pod.
-
El plugin no configura proxy ni timeouts en las llamadas a Tableau, por lo que se aplican los valores por defecto del entorno de ejecución.
5. Configuración
Propiedades específicas del plugin. Se excluyen las genéricas para todos los plugins. Las propiedades technology se definen dentro de cada elemento de la lista totplugin.connection.
|
Propiedad |
Descripción |
Obligatoria |
Valor por defecto |
|---|---|---|---|
|
totplugin.connection[].name |
Nombre de la conexión de Tableau. Debe ser único entre las conexiones, porque se usa para asociar cada conexión con su configuración de technology. |
Sí |
— |
|
totplugin.connection[].aris[].ari |
ARIs que indican los servicios disponibles en la conexión. Para la extracción debe empezar por |
Sí |
— |
|
totplugin.connection[].technology.server |
URL base del servidor de Tableau (Tableau Server o Tableau Cloud), sin barra final. |
Sí |
— |
|
totplugin.connection[].technology.version |
Versión de la API REST de Tableau que se incluye en la URL de las llamadas (por ejemplo 3.17). |
Sí |
— |
|
totplugin.connection[].technology.personalAccessTokenName |
Nombre del token de acceso personal del usuario de servicio. |
Sí |
— |
|
totplugin.connection[].technology.personalAccessTokenSecret |
Secreto del token de acceso personal del usuario de servicio. |
Sí |
— |
|
totplugin.connection[].technology.siteContentURL |
contentUrl del site de Tableau sobre el que trabaja la conexión. El plugin falla si está vacío (no se admite el site por defecto con contentUrl vacío) y, al extraer, la primera parte del path del workbook debe coincidir exactamente con este valor. |
Sí |
— |
|
totplugin.pathSeparator |
Carácter que separa site, proyecto y workbook en el path. El path debe tener exactamente tres partes; con más o con menos el plugin devuelve error. |
No |
/ |
|
totplugin.anjana.tagsSeparator |
Separador con el que se concatenan las etiquetas del workbook en el campo workbookTags. Si se deja vacío se usa el valor por defecto. |
No |
_- |
|
totplugin.pagination.pageSize |
Número de elementos por página en la consulta paginada de sites de Tableau. Máximo 1000: si se configura un valor mayor, el plugin usa 1000. Los flujos actuales del plugin (listado y extracción) no realizan esa consulta. |
No |
100 |
|
totplugin.connection[].technology.queryGraphql |
Consulta GraphQL que se envía a la Metadata API para obtener los workbooks del site. Los campos que se vuelcan a Anjana son los descritos en el apartado Integración con Anjana; si se sustituye la consulta debe seguir devolviendo todos ellos. |
No |
|