CINXE.COM
Connectors Built with the Tableau Connector SDK - Tableau
<!DOCTYPE html><html lang="en-us"><head><meta charset="utf-8"><meta http-equiv="x-ua-compatible" content="ie=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><meta property="og:type" content="website"><meta property="og:title" content="Connectors Built with the Tableau Connector SDK"><meta property="og:description" content="Tableau has great connectivity that allows you to visualize data from virtually anywhere"><meta name="twitter:card" content="summary_large_image"><meta name="twitter:site" content="@tableau"><meta name="twitter:title" content="Connectors Built with the Tableau Connector SDK"><meta name="twitter:description" content="Tableau has great connectivity that allows you to visualize data from virtually anywhere"><meta name="section" content="Support"><meta name="subsection" content="Product Help"><meta name="breadcrumb_l1_text" content="Support"><meta name="breadcrumb_l1_url" content="http://www.tableau.com/en-us/support"><meta name="breadcrumb_l2_text" content="Product Help"><meta name="breadcrumb_l2_url" content="http://www.tableau.com/en-us/support/help"><meta name="product_applies_to" content="AppliesTo.Tableau Desktop,AppliesTo.Tableau Server,AppliesTo.Tableau Prep" /><title>Connectors Built with the Tableau Connector SDK - Tableau</title><script type="text/javascript">(function(w, d, s, l, i) { w[l] = w[l] || []; w[l].push({ 'gtm.start': new Date().getTime(), event: 'gtm.js' }); var f = d.getElementsByTagName(s)[0], j = d.createElement(s), dl = l != 'dataLayer' ? String.fromCharCode(38) + 'l=' + l : ''; j.async = true; j.src = 'https://www.googletagmanager.com/gtm.js?id=' + i + dl; f.parentNode.insertBefore(j, f); })(window, document, 'script', 'dataLayer', 'GTM-BVCN');</script><script src="https://a.sfdcstatic.com/enterprise/tableau/prod/2024012/v1/oneTrust/scripttemplates/otSDKStub.js" type="text/javascript" charset="UTF-8" data-domain-script="2d08f29e-0ede-4e8c-997c-f7ef5be8d4e7"></script><script type="text/javascript">function OptanonWrapper() { window.addEventListener('load', () => { window.dataLayer.push({ event: 'OneTrustGroupsUpdated' }); let optanonCookie = decodeURIComponent(document.cookie); let activeGroups = OnetrustActiveGroups; if (optanonCookie.includes('OptanonConsent') && activeGroups) { if (activeGroups.includes('3')) { let event = new CustomEvent('UpdateCookieConsent', { detail: { value: true } }); window.dispatchEvent(event); } } }); OneTrust.OnConsentChanged(OneTrustActiveGroups => { if (OnetrustActiveGroups.includes('3')) { let event = new CustomEvent('UpdateCookieConsent', { detail: { value: true } }); window.dispatchEvent(event); } else { let event = new CustomEvent('UpdateCookieConsent', { detail: { value: false } }); window.dispatchEvent(event); } }); }</script><script type="text/javascript">var _elqQ = _elqQ || []; _elqQ.push(['elqSetSiteId', '840']); _elqQ.push(['elqTrackPageView']); (function() { function async_load() { var s = document.createElement('script'); s.type = 'text/javascript'; s.async = true; s.src = 'https://img.en25.com/i/elqCfg.min.js'; var x = document.getElementsByTagName('script')[0]; x.parentNode.insertBefore(s, x); } if (window.addEventListener) window.addEventListener('DOMContentLoaded', async_load, false); else if (window.attachEvent) window.attachEvent('onload', async_load); })();</script><script>function getFooterLink(link) { let lang_object = ''; let locString = ''; if ('en-us' !== 'en-us') { lang_object = getLangObject(); locString = lang_object['code']; } // links for fr-ca locale are not consistent with the pattern other locales follow const urlMap = { contact: 'en-us' !== 'en-us' ? 'https://www.salesforce.com/loc/form/contact/contactme/'.replace('loc', locString === 'ca' ? 'fr-ca' : locString) : 'https://www.salesforce.com/company/contact-us/', trust: 'en-us' !== 'en-us' ? 'https://trust.salesforce.com/loc'.replace('loc', locString === 'ca' ? '' : locString === 'jp' ? 'ja' : locString) : 'https://trust.salesforce.com/', disclosure: 'en-us' !== 'en-us' ? 'https://www.salesforce.com/loc/company/disclosure/'.replace('loc', locString === 'ca' ? '' : locString) : 'https://www.salesforce.com/company/legal/disclosure/', privacy: 'en-us' !== 'en-us' ? 'https://www.salesforce.com/loc/company/privacy/'.replace('loc', locString) : 'https://www.salesforce.com/company/legal/privacy/', address: 'en-us' !== 'en-us' ? lang_object['address'] : 'Salesforce Tower, 415 Mission Street, 3rd Floor, San Francisco, CA 94105, United States.' }; return urlMap[link] || ''; } function getLangObject() { let buildLang = 'en-us'; locMapping = { 'de-de': { code: 'de', address: 'Salesforce.com Germany GmbH, Erika-Mann-Str. 31, 80636 München, Deutschland.', tel: 'Telefon: +49 800 0010546' }, 'en-gb': { code: 'uk', address: 'Salesforce UK Limited, village 9, floor 26 Salesforce Tower, 110 Bishopsgate, London, UK, EC2N 4AY.', tel: 'Telephone: (+44) 800 086 8530' }, 'es-es': { code: 'es', address: 'Salesforce Spain S.L., Paseo de la Castellana 79, Planta 7ª, Madrid, Spain, 28046.', tel: 'Teléfono: (+34) 800 300 229' }, 'fr-ca': { code: 'ca', address: 'Salesforce Canada Corporation. 10 Bay Street, Suite 400 Toronto, ON, M5J 2R8, Canada.', tel: 'Tél: 1-833-996-2064' }, 'fr-fr': { code: 'fr', address: 'Salesforce.com France SAS – 3 Avenue Octave Gréard – 75007 Paris.', tel: 'Tél: (+33) 8 05 08 21 31' }, 'it-it': { code: 'it', address: 'Salesforce.com Italy S.r.l., Piazza Filippo Meda 5, 20121 Milano (MI).', tel: 'Telefono: (+39) 800 693 802' }, 'ja-jp': { code: 'jp', address: '株式会社セールスフォース・ジャパン 東京都千代田区丸の内1-1-3 日本生命丸の内ガーデンタワー(Salesforce Tower)', tel: 'TEL: 0120-733-257 | 03-4222-1000' }, 'ko-kr': { code: 'kr', address: '일즈포스 코리아 서울특별시 영등포구 여의대로 108, 파크원타워2 28층 (세일즈포스) 07335', tel: ' TEL : 080-822-1378 (솔루션 상담 문의) | 080-805-9651 (기술 지원 문의)' }, 'nl-nl': { code: 'nl', address: 'SFDC Netherlands BV, Gustav Mahlerlaan 2970, 1081 LA, Amsterdam, Nederland.', tel: 'Telefoon: 0800 020 0431' }, 'pt-br': { code: 'br', address: 'Salesforce Brasil, Av. Jornalista Roberto Marinho, 85 – 14º andar – Cidade Monções, São Paulo – SP, 04575-000 Brasil.', tel: '' }, 'sv-se': { code: 'se', address: 'SFDC SWEDEN AB, Klarabergsviadukten 63, 111 64 Stockholm, Sweden.', tel: 'Telefon: (+46) 200285660' }, 'zh-cn': { code: 'cn', address: '', tel: '' }, 'zh-tw': { code: 'tw', address: '', tel: '' }, 'th-th': { code: 'th', address: '', tel: '' } }; return locMapping[buildLang]; } function getTrustUrl() { let trustUrl = 'https://trust.salesforce.com/'; if ('en-us' !== 'en-us') { let locString = getLocString(); trustUrl = 'https://trust.salesforce.com/loc'; return trustUrl.replace('loc', locString); } } window.addEventListener('load', function() { const FOOTER_LINKS = { ADDRESS: 'address', CONTACT: 'contact', TRUST: 'trust', DISCLOSURE: 'disclosure', PRIVACY: 'privacy' }; let privacyLinkElement = document.getElementById('privacyLink'); let disclosureLinkElement = document.getElementById('disclosureLink'); let trustLinkElement = document.getElementById('trustLink'); let contactLinkElement = document.getElementById('contactLink'); let choicesLinkElement = document.getElementById('choicesLink'); let sfAddressElement = document.getElementById('sfAddress'); if (privacyLinkElement) { privacyLinkElement.href = getFooterLink(FOOTER_LINKS.PRIVACY); } if (disclosureLinkElement) { disclosureLinkElement.href = getFooterLink(FOOTER_LINKS.DISCLOSURE); } if (trustLinkElement) { trustLinkElement.href = getFooterLink(FOOTER_LINKS.TRUST); } if (contactLinkElement) { contactLinkElement.href = getFooterLink(FOOTER_LINKS.CONTACT); } if (sfAddressElement) { sfAddressElement.innerText = getFooterLink(FOOTER_LINKS.ADDRESS); } // Accessibility after click on MenuTree on page load set focus on topic title const focusElementId = sessionStorage.getItem('focusElementId'); if (focusElementId) { sessionStorage.removeItem('focusElementId'); const elemToFocus = document.getElementById(focusElementId); if (elemToFocus) { elemToFocus.focus(); } } }); function setFocus() { let logo = document.getElementById('tableau-logo'); if (logo != null) { logo.focus(); } }</script><link href="./Resources/app.css?061e368a0c7a09d14cc3" rel="stylesheet"></head><body><noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-BVCN" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript><div id="app" class="wrapper"><header id="tableau-help-article-header" class="container--full-width quick-help-header"><div class="container--centered"><div class="header__mobile-menu quick-help-hidden"><menu-tree-toggle></menu-tree-toggle></div><div class="header__logo quick-help-hidden"><a id="tableau-logo" href="https://www.tableau.com/en-us/"><img src="./Resources/tableau-logo.png" class="header__logo__img" alt="Tableau"></a></div><div class="header__search"><search-header-help placeholder="Search"></search-header-help></div></div></header><div class="container--navigation-top quick-help-hidden content-only-hidden"><div id="help-subheader" class="subheader print-hidden"><div class="container--centered"><h1 class="heading--subheader">Tableau Desktop and Web Authoring Help</h1></div></div><div class="container--top-links"><div class="container--centered container--breadcrumbs"><div><breadcrumb-links-help></breadcrumb-links-help></div></div><div id="help-container-menu-headings" class="container--menu-headings"><nav class="nav-medium-screen"><menu-heading-links-static-help menu-title="In this article" :disabled="false" :headings="pageHeadings"></menu-heading-links-static-help></nav></div></div></div><div class="section--main container--full-width"><div class="container--centered"><nav class="nav-side nav-side--left" role="navigation"><menu-tree-help menu-title="Contents"></menu-tree-help></nav><article role="main"><h2 class="topic--title" id="topic-title" tabindex="-1">Connectors Built with the Tableau Connector SDK</h2><div class="caption article__tags content-only-hidden quick-help-hidden"><span class="article__tags--applies-to">Applies to: Tableau Desktop, Tableau Prep, Tableau Server</span><br><span class="article__tags--role"> </span></div><div id="content-body"> <div id="mc-main-content"> <p>Tableau has great connectivity that allows you to visualize data from virtually anywhere. In addition to its dozens of built-in connectors and additional partner-built connectors (available on <a href="https://extensiongallery.tableau.com/" target="_blank">Tableau Exchange<span class="sr-only">(Link opens in a new window)</span></a>), Tableau gives you the tools to build a customized connector with the Tableau Connector SDK.</p> <p class="note"><b>Note:</b> Connectors built using the Tableau Connector SDK are sometimes called plugins because they “plug into” Tableau so you can connect to your data.</p> <h2 is="heading-item" :level="2" id="about-tableau-connector-sdk-and-connector-files">About Tableau Connector SDK and connector files</h2> <p>You can use the Tableau Connector SDK to build and custom a connector. Partner-built connectors (whether built by you or someone else) typically support most of the same features as built-in Tableau connectors. These include <a href="https://help.tableau.com/current/pro/desktop/en-us/datasource_prepare.htm" target="_blank">defining a data source<span class="sr-only">(Link opens in a new window)</span></a>, <a href="https://help.tableau.com/current/pro/desktop/en-us/getstarted_buildmanual_ex1basic.htm" target="_blank">visualizing your data<span class="sr-only">(Link opens in a new window)</span></a>, <a href="https://help.tableau.com/current/pro/desktop/en-us/publish_overview.htm" target="_blank">publishing to a server<span class="sr-only">(Link opens in a new window)</span></a> (if the server has the connector), and so on.</p> <p>Each connector is made up of a set of XML and JavaScript files, zipped into a single packaged .jar file, and give a ".taco" file extension. This TACO file is signed by the developer using a trusted public certificate authority. The XML and JavaScript files are configuration files that describe:</p> <ul> <li>UI elements needed to collect user input for creating a connection to a data source</li> <li>Any dialect or customizations needed for the connection</li> <li>How to connect using the ODBC or JDBC driver</li> </ul> <p>A connector that is developed using the Tableau Connector SDK is appropriate for connecting to an ODBC or JDBC driver which interfaces using SQL. The underlying technology works well with relation databases.</p> <h2 is="heading-item" :level="2" id="support-for-partnerbuilt-connectors">Support for Partner-built connectors</h2> <p>Partner-built connectors are not supported directly by Tableau. However, if you need help, there are a few places you can look for more information. </p> <ul> <li> Some partner pages on Tableau Exchange provide a direct <span class="uicontrol">Support </span>link to assist you. </li> <li> Look for a support link or README file on the <span class="uicontrol">Driver Download</span> page associated with your connector. </li> <li> Contact the connector's creators through the <span class="uicontrol">Developer Website</span> link in Tableau Exchange. </li> </ul> <h2 is="heading-item" :level="2" id="build-your-own-connector">Build your own connector</h2> <p>To build your own customized connector, use the tools and instructions in the <a href="https://github.com/tableau/connector-plugin-sdk" target="_blank">Tableau Connector SDK<span class="sr-only">(Link opens in a new window)</span></a> repository on GitHub. </p> <p class="note"><b>Note:</b> If you find an issue with the SDK or any of the developer samples, <a href="https://github.com/tableau/connector-plugin-sdk/issues" target="_blank">submit an issue on GitHub<span class="sr-only">(Link opens in a new window)</span></a>.</p> <h2 is="heading-item" :level="2" id="submit-a-connector-to-the-tableau-exchange">Submit a connector to the Tableau Exchange</h2> <p>If you would like to submit your connector to the Tableau Exchange, follow <a href="https://tableau.github.io/connector-plugin-sdk/docs/gallery-submission">steps outlined in the Tableau Connector SDK</a>.</p> <h2 is="heading-item" :level="2" id="use-a-connector-built-with-tableau-connector-sdk">Use a connector built with Tableau Connector SDK</h2> <p>After you build a connector with the Tableau Connector SDK, follow these steps to use it with Tableau:</p> <ol> <li value="1">Download the connector file, [connector name].taco.</li> <li value="2">Place the .taco file in the following directory (default location): <ul><li>For 2021.2 and newer: <table class="simple-table" style="width: 100%;"><colgroup><col style="width: 264px;"><col style="width: 33%;"><col></colgroup><tbody><tr><th>For Tableau Desktop</th><th>For Tableau Prep Builder</th><th>For Tableau Server, Tableau Prep Conductor, Tableau Prep Flow Authoring</th></tr><tr><td><ul><li>Windows - C:\Users\[Windows User]\Documents\My Tableau Repository\Connectors</li><li>macOS - /Users/[user]/Documents/My Tableau Repository/Connectors</li></ul></td><td><ul><li>Windows: C:\Users\[Windows User]\Documents\My Tableau Prep Repository\Connectors</li><li>MacOS: /Users//Documents/My Tableau Prep Repository/Connectors</li></ul></td><td><ul><li><p>Windows: C:\Program Files\Tableau\Connectors</p></li><li><p>Linux: /opt/tableau/connectors</p></li></ul></td></tr></tbody></table></li><li>For 2021.1 and older: <table class="simple-table" style="width: 100%;"><colgroup><col style="width: 33%;"><col style="width: 33%;"><col></colgroup><tbody><tr><th>For Tableau Desktop</th><th>For Tableau Prep Builder</th><th>For Tableau Server, Tableau Prep Conductor, Tableau Prep Flow Authoring</th></tr><tr><td><ul><li>Windows - C:\Users\[Windows User]\Documents\My Tableau Repository\Connectors</li><li>macOS - /Users/[user]/Documents/My Tableau Repository/Connectors</li></ul></td><td><ul><li>Windows: C:\Users\[Windows User]\Documents\My Tableau Prep Repository\Connectors</li><li>MacOS: /Users//Documents/My Tableau Prep Repository/ConnectorsFor Tableau </li></ul></td><td><ul><li>Tableau Server: [Tableau_Server_Installation_Directory]/data/tabsvc/vizqlserver/Connectors</li></ul><p>To enable your connector for Prep, you also need to add your taco to the following locations:</p><ul><li>Tableau Prep Conductor: [Tableau_Server_Installation_Directory]/data/tabsvc/flowprocessor/Connectors</li><li>Tableau Prep Flow Authoring: [Tableau_Server_Installation_Directory]/data/tabsvc/flowqueryservice/Connectors</li></ul></td></tr></tbody></table></li></ul></li> <li value="3">Before you connect, install the ODBC or JDBC driver. Follow the driver installation instructions provided by the source of your data.</li> </ol> <p>Once you've installed the connector, it will appear in the list of connectors in Tableau.</p> <h2 is="heading-item" :level="2" id="connect-tableau-to-the-data">Connect Tableau to the data</h2> <ol> <li value="1">Start Tableau, and under <span class="uicontrol">Connect</span>, select the name of the connector you just installed. For a complete list of data connectors, select <span class="uicontrol">More </span>under <span class="uicontrol">To a Server</span>. </li> <li value="2">Enter the information that you’re prompted for, and then select <span class="uicontrol">Sign In</span>.</li> <li value="3">Wait while the connector retrieves your data into Tableau.</li> <li value="4">Select the sheet tab to start your analysis.</li> </ol> <h2 is="heading-item" :level="2" id="about-load-order-for-connectors">About load order for connectors</h2> <p>If a connector has the same class as a connector that has already been registered, the new connector will be rejected. This means that connectors loaded first have precedence when two connectors share the same class name.</p> <p>Tableau loads connectors by directory in the following order:</p> <ol> <li value="1">Built-in Tableau connectors</li> <li value="2">Connectors located in <code>C:\Program Files\Tableau\Connectors</code> (Windows) or<code>/opt/tableau/connectors</code> (Linux)</li> <li value="3">Connectors located in <code>My Tableau Repository/Connectors</code></li> <li value="4">(Optional) Connectors in the dev path specified by <code>-DConnectPluginsPath</code></li> </ol> <h2 is="heading-item" :level="2" id="see-also">See also</h2> <ul> <li><a href="datasource_prepare.htm" class="MCXref xref" xrefformat="{paratext}">Set Up Data Sources</a> – Add more data to this data source or prepare your data before you analyze it. </li> <li><a href="design_and_analyze.htm" class="MCXref xref" xrefformat="{paratext}">Build Charts and Analyze Data</a> – Begin your data analysis. </li> </ul> <ul> <li><a href="https://github.com/tableau/connector-plugin-sdk" target="_blank">Tableau Connector SDK<span class="sr-only">(Link opens in a new window)</span></a> - Find information and tools to build and test your own customized connector.</li> <li><a href="gallery_connectors.htm" class="MCXref xref" xrefformat="{paratext}">Use Partner-Built Connector from the Tableau Exchange</a> - Find and install a connector from the Tableau Exchange.</li> </ul> </div> </div><div class="article__footer--back-to-top text--centered print-hidden quick-help-hidden"><a href="#" class="text--caps" onclick="setFocus()"><span class="icon--med icon--arrow-up"></span> Back to top</a></div><feedback-form :disabled="false" class="print-hidden content-only-hidden" helpful-question="Did this article solve your issue?" helpful-yes="Yes" helpful-no="No" comment-question="We value your feedback. Add comments here." submit-option="Send" cancel-option="Cancel" loading-text="Sending..."><span slot="submittedMessage">Thanks for your feedback!</span></feedback-form><d-s-c-feedback-form :disabled="false" class="print-hidden content-only-hidden quick-help-hidden" feedback-question="Did this article solve your issue?" feedback-subtitle="Let us know so we can improve!" helpful-yes="Yes" helpful-no="No" error-message="Please check at least 1 checkbox." thanks-positive-feedback="Thanks for the feedback! What made this article helpful?" thanks-negative-feedback="We're sorry to hear that. How can we improve this article?" feedback-yes-accurate="Contains accurate information" feedback-yes-comprehensive="Includes all of the information I need" feedback-yes-clear="Easy to understand with clear explanations and visuals" feedback-no-accurate="Contains inaccurate or outdated information" feedback-no-comprehensive="Missing important information" feedback-no-clear="Confusing or difficult to understand" feedback-no-descriptive="The article is OK, but I don't like how the product described works" feedback-something-else=" Something else" additional-feedback="Would you like to share any additional feedback?" submit-answers="Submit"><span slot="successfullySubmitted">Your feedback has been successfully submitted. Thank you!</span></d-s-c-feedback-form></article><nav class="nav-side nav-side--right"><menu-heading-links-scrollable-help menu-title="In this article" :disabled="false" :headings="pageHeadings"></menu-heading-links-scrollable-help></nav></div></div><feedback-button-floating tooltip="Send feedback" :disabled="false"></feedback-button-floating><footer class="container--full-width"><div class="container--centered"><div class="footer__links" aria-label="footer navigation"><ul><li><a href="https://www.salesforce.com/company/legal/" class="">Legal</a></li><li><a href="https://www.salesforce.com/company/legal/sfdc-website-terms-of-service/" class="">Terms of Service</a></li><li><a id="privacyLink" class="">Privacy Information</a></li><li><a id="disclosureLink" class="">Responsible Disclosure</a></li><li><a id="trustLink" class="">Trust</a></li><li><a id="contactLink" class="">Contact</a></li><li><a href="#" data-ignore-geolocation="true" class="optanon-toggle-display">Cookie Preferences</a></li><li><a id="choicesLink" href="https://www.salesforce.com/form/other/privacy-request/" class="">Your Privacy Choices</a></li></ul></div><div class="footer__copyright"><copyright-notice salesforce-text="Salesforce, Inc." rights-reserved="All rights reserved." trademark-text="Various trademarks held by their respective owners. Salesforce, Inc."></copyright-notice><span id="sfAddress"></span></div></div></footer></div><script type="text/javascript">var TabHelp = TabHelp || {}; TabHelp.PageData = { name: "examples_connector_sdk.htm" };</script> <script type="text/javascript" src="./Resources/toc.js"></script><script type="text/javascript" src="./Resources/vendor.js?061e368a0c7a09d14cc3"></script><script type="text/javascript" src="./Resources/app.js?061e368a0c7a09d14cc3"></script></body></html>