> For the complete documentation index, see [llms.txt](https://docs.infotopics.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.infotopics.com/trulyp/data/semantic-providers.md).

# Semantic providers

Already have a semantic layer in Tableau? With a semantic provider, Trulyp connects to Tableau's VizQL Data Service (VDS), so you can import Tableau published data sources as [semantic models](/trulyp/data/semantic-modeling.md), with their fields and calculations exactly as they are in Tableau.

You manage semantic providers in **Data** › **Semantic providers**. You need the **Connections manager** role, or be an administrator.

The list shows each provider's **Label**, its **Provider** (VDS) and the number of teams (**# Groups**) that can use it. Use the pencil to edit a provider, or **⋯** › **Delete** to remove it.

### Before you start

* **Tableau Sync must be set up.** Trulyp signs in to Tableau as the Trulyp member who uses the provider, so members must exist with the same username as in Tableau. Until a [Tableau sync](/trulyp/settings/tableau-sync.md) has run, the provider form shows **Tableau Sync required**: "Ask your user manager to setup Tableau Sync before creating a VDS connection."
* **Platform usernames must match Tableau.** The **Platform username** of each member must exactly match their Tableau username. Tableau Sync takes care of this for you. If they don't match, authentication fails for that member.
* **A Tableau connected app.** Create one in Tableau as described below.

<figure><img src="https://2312557015-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWbWxEBax8PKTjFYRLWgi%2Fuploads%2Fgit-blob-4582049a80c1f2abe7ba97476be6ad914c4a7d3f%2FData_Providers_Create.png?alt=media" alt=""><figcaption><p>A new semantic provider before Tableau Sync is set up</p></figcaption></figure>

### Create a connected app in Tableau

1. In Tableau, open **Site Settings** › **Connected Apps**.
2. Click **New Connected App** and select **Direct Trust**.
3. Enter a name and click **Create**.
4. Open the new connected app and copy the **Client ID**.
5. Click **Generate New Secret**, and copy the **Secret ID** and **Secret value**.
6. Connected apps start disabled: open the actions menu next to its name and select **Enable**.

<figure><img src="https://2312557015-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWbWxEBax8PKTjFYRLWgi%2Fuploads%2FZVv3TVQdT3r5WKFqQCQ4%2Fimage.png?alt=media&amp;token=84247103-8712-41fb-a107-71dbd13111ee" alt=""><figcaption></figcaption></figure>

### Create the semantic provider

{% stepper %}
{% step %}

### Provider details

Click **Create new semantic provider** and enter a **Label**, for example `Tableau Cloud – Sales site`, and optionally a **Description**. The **Semantic provider** is always **VDS**.
{% endstep %}

{% step %}

### Connected app

Choose **Create new connected app**, or reuse one you set up before under **Use existing connected app**. Then fill in:

| Field                                          | What to enter                                                                                                                 |
| ---------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- |
| **Connected app label**                        | A clear name for the connected app in Trulyp. You can reuse it for other providers.                                           |
| **Tableau deployment**                         | **Tableau Cloud (Online)** or **Tableau Server (self-hosted)**.                                                               |
| **Tableau Online region**                      | Tableau Cloud only: the region (pod) of your site, for example **US West - Oregon (10ax)**. This fills in the **Server URL**. |
| **Server URL**                                 | Tableau Server only: the full URL, including `https://`.                                                                      |
| **Site content URL**                           | The site's name in the URL, for example `sales` from `/site/sales`.                                                           |
| **Client ID**, **Secret ID**, **Secret value** | From the connected app in Tableau. Also enter the **Secret value** when you reuse an existing connected app.                  |

Trulyp only uses read access: the scopes `tableau:content:read` and `tableau:viz_data_service:read`.
{% endstep %}

{% step %}

### Test authentication

Click **Test authentication**. Trulyp signs in to Tableau as you, with your platform username. When it works, you see **Authentication tested successfully.**
{% endstep %}

{% step %}

### Access control

After a successful test, **Access control** appears. Select at least one team under **Authorized teams**: only their members can use the provider and the semantic models imported from it.

Click **Create semantic provider**. Your provider is ready!
{% endstep %}
{% endstepper %}

### Edit a semantic provider

Click the pencil next to the provider, change what you need and click **Save semantic provider**. If you change anything about the connected app, test the authentication again before you can save.

Next: [import a Tableau data source as a semantic model](/trulyp/data/semantic-modeling.md#import-from-a-semantic-provider).


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.infotopics.com/trulyp/data/semantic-providers.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
