Embed Ask Data


Important changes coming for Ask Data and Metrics

Tableau's Ask Data and Metrics features will be retired in Tableau Cloud in February 2024 and in Tableau Server version 2024.2. With advances in natural language technologies, we're developing an improved interface that will make it easier to ask questions of your data and stay on top of changes. For more information, see How Tableau GPT and Tableau Pulse are reimagining the data experience.

For information about embedding Tableau Pulse metrics, see Embed Tableau Pulse metrics.

You can use the Embedding API to embed Ask Data in your web apps and web pages. The Embedding API provides a <tableau-ask-data> web component that you can place in your HTML code. If you want to use JavaScript to initialize the API and embed the Ask Data lens, you can instantiate a TableauAskData object and set Ask Data properties. For information about creating Ask Data lenses, see Automatically Build Views with Ask Data.

The following information will help get you started embedding Ask Data lenses.


In this section


Use the web component to initialize the API and embed Ask Data

The easiest way to initialize the API and embed Ask Data in your web pages is use the new <tableau-ask-data> web component in your HTML page. The component looks like the following, where the src attribute specifies the URL to the Ask Data lens on Tableau Cloud.


<tableau-ask-data id="tableauAskData"
  src='https://online.tableau.com/askData/lens/Superstore+Datasource'>
</tableau-ask-data>

To use the web component, you first need to create an Ask Data lens. After you create the lens, click the Share button and then click Copy link. This link is the src URL that you use in the Ask Data web component. When you create the component, it’s also good to provide an identifier (id) in case you need to reference the component later.

In your HTML code, add a link to the Embedding API v3 library. In general, it is a best practice to link to the Embedding API library on the Tableau instance that serves the Ask Data lens. For more information, see Access the Embedding API. The Ask Data web component is available on Tableau 2023.1 and later (starting with version 3.5 of the Embedding API library).

In addition to the src attribute, the <tableau-ask-data> web component has additional settings that you can configure. For example, the height and width of the Ask Data lens, and the option to show or hide buttons in the UI. For a list of the options, see Configure TableauAskData objects and components.

Example using the <tableau-ask-data> web component

<script type="module"
  src="https://online.tableau.com/javascripts/api/tableau.embedding.3.latest.min.js">
</script>

<tableau-ask-data id="tableauAskData"
  height="800"
  width="1000"
  src='https://online.tableau.com/askData/lens/Superstore+Datasource'
  show-save
  show-share>
</tableau-ask-data>



Use JavaScript to initialize the API and embed Ask Data

In some instances, you might prefer to configure and initialize the Ask Data lens using JavaScript, rather than using the <tableau-ask-data> web component. In this case, you use a TableauAskData JavaScript object.

The first step is to create an <div> to contain the Ask Data lens in your HTML code. In this respect, this is similar to what you do to embed a view. You also need to give the <div> an identifier (say, askDataJsContainer) so that you can specify that element when you append the embedded Ask Data lens. This is important because the lens is not rendered until you add it to the DOM.

HTML code

<div id="askDataJsContainer"></div>

In your JavaScript code, you need to import the TableauAskData object from the Embedding API v3 library. You can then create a new instance of the object and configure the object with the path to the lens and other properties by the object (see Configure TableauAskData objects and components). It’s important to note that creating the object new TableauAskData() does not render the Ask Data lens. To do that, you must add it to the DOM (that is, add it to document using appendChild(), for example).

Also, if you put your JavaScript code in a separate .js file, you’ll need to import the file in your HTML page with the type set as module.

<script type="module" src="./myEmbeddedCode.js"></script>

For example, the following code shows how you might embed an Ask Data. In this instance, the the Save button is shown.

JavaScript code for embedding a TableauAskData object


import {
  TableauAskData
} from 'https://online.tableau.com/javascripts/api/tableau.embedding.3.latest.min.js';

let elementId = 'askDataJsContainer';

function initAskData() {
  console.log('InitAskData');
  let url = 'https://online.tableau.com/askData/lens/Superstore+Datasource';
  let askData = new TableauAskData();

  askData.height = 700;
  askData.width = 800;
  askData.showSave = true;

  askData.src = url;

  document.getElementById(elementId).appendChild(askData);
  console.log('Initialized askData with v3', askData);
}

initAskData();



Configure TableauAskData objects and components

To configure the Ask Data lens, you can use a set of HTML attributes on the <tableau-ask-data> web component, or as JavaScript (JS) properties on the corresponding TableauAskData JavaScript objects. For HTML attributes that accept a value, such as width and height, the syntax is <property>="<value>". For Boolean properties, such as show-save or show-share, you can either include the flag to effectively set it to true, or omit it to effectively set it to false.

The following table lists the properties you can add to the <tableau-ask-data> web component, or as JavaScript (JS) properties on the corresponding TableauAskData JavaScript object.

HTML Property JS Property Accepted Values Description Applies to
height AskData.height (e.g. “800px”) Can be any valid CSS size specifier. If not specified, defaults to the published height of the Ask Data lens. <tableau-ask-data>, TableauAskData
width AskData.width (e.g. “800px”) Can be any valid CSS size specifier. If not specified, defaults to the published width of the Ask Data lens. <tableau-ask-data>, TableauAskData
show-embed AskData.showEmbed boolean Indicates whether the Ask Data lens Embed Code button is hidden or shown. By default, the Embed Code is hidden (the attribute or property is omitted). Include the Embed Code button if you want users to be able to embed the Ask Data lens in other web pages. <tableau-ask-data>, TableauAskData
show-pin AskData.showPin boolean Indicates whether the Ask Data lens Pin button is hidden or shown. By default, the Pin is hidden (the attribute or property is omitted). Include the Pin button if you want to enable users to pin a new query to the list of recommendations or replace a recommendation. <tableau-ask-data>, TableauAskData
show-save AskData.showSave boolean Indicates whether the Ask Data lens Save button is hidden or shown. By default, the Save button is hidden (the attribute or property is omitted). Include the Save button if you want to allow users to save the Ask Data views as workbooks on Tableau. <tableau-ask-data>, TableauAskData
show-share AskData.showShare boolean Indicates whether the Ask Data lens Share button is hidden or shown. By default, the Share button is hidden (the attribute or property is omitted). Include the Share button if you want to allow users to share the Ask Data vizes. <tableau-ask-data>, TableauAskData
token AskData.token JSON web token (JWT) The JWT is used when the Ask Data lens is configured to use a connected app or for EAS on Tableau Server. Use the scope tableau:ask_data:embed when you generate the JWT. <tableau-ask-data>, TableauAskData

Note: When adding properties to the <tableau-ask-data> component, use the HTML Property name. Use the JS Property names for the TableauAskData object.


You can also add custom parameters to the <tableau-ask-data> web components and TableauAskData objects. See About custom parameters.


Authentication and permissions

The Embedding API provides options for authentication. If you are embedding Ask Data from Tableau Cloud, you can configure Tableau to use a connected app for authentication. For information about using connected apps, see Authentication and Embedded Views. The scope (scp) to use for the Ask Data is tableau:ask_data:embed. You need to know the scope when you generate the JSON web token (JWT) that is associated with the <tableau-ask-data> component or TableauAskData object.

Note: When you embed Ask Data, and intend to share the Ask Data lens with a large number of people, it's a best practice for users to have Viewer permissions. If not, you might expose the Ask Data lens for editing by anyone who views the embedded Ask Data page. Be aware of the permissions of your intended users. Explorer and Creators have the capacity to edit lenses.

It's also a good practice to limit access to Tableau content by restricting the connected app to a single project, and that the project should contain only content you are comfortable exposing through that connected app.

For more information about connected apps, see Use Tableau Connected Apps for Application Integration.


What’s next