Tableau SDK Connector

A Dremio administrator must install the Dremio Tableau SDK connector based on the new Tableau SDK Connector Framework. This connector is available through the Tableau Marketplace. Dremio administrators can also manually install the connector with the following procedure.

Prerequisites:

  • Tableau Desktop 2019.4 or later
  • Java 8 Runtime

Enabling the Tableau SDK Connector

  1. Download the Dremio Tableau SDK connector.
  2. Install the connector .taco file in:
    • macOS: ~/Documents/My Tableau Repository/Connectors
    • Windows: My Documents/My Tableau Repository/Connectors
    • Linux: My Tableau Repository/Connectors
  3. Download the Dremio JDBC driver or copy it from your Dremio installation at $DREMIO_HOME/jars/jdbc-driver/dremio-jdbc-driver-<version>.jar.
  4. Create the following directory if it does not exist:
    • macOS: ~/Library/Tableau/Drivers
    • Windows: C:\Program Files\Tableau\Drivers\Dremio (You need to create the folder called Dremio)
    • Linux: /opt/tableau/tableau_driver/jdbc
  5. Move the .jar file to the correct folder for your operating system.
  6. Restart Tableau.
  7. Under To a Server, click More ... and then click Dremio Connector by Dremio.

  8. In the Dremio Connector by Dremio modal, enter the URL for your Dremio server and a Dremio user and password, and then click Sign In.

Enabling SSL

If you have enabled SSL/TLS for JDBC connections on your Dremio server, you will have to complete these additional steps:

  1. Obtain the SSL/TLS certificate for the Dremio server.
  2. Install it in the cacerts truststore that comes with your Java 8 runtime
    • Location should be something like: $JAVA_HOME/jre/lib/security/cacert
    • Using the Java keytool and the Dremio cert in DER format, this can be achieved with a command like the following:
      sudo keytool -importcert -alias dremio -keystore $JAVA_HOME/jre/lib/security/cacerts -storepass changeit -file /path/to/dremioServerCert.der
      
  3. Verify that the cert has been added:
    keytool -keystore cacerts -storepass changeit -list | grep -A1 dremio
    dremio, Dec 16, 2019, trustedCertEntry,Certificate fingerprint (SHA1): 2B:2B:F6:D4:79:64:33:59:AB:43:3E:D9:17:C9:FD:A7:5E:C1:6D:42
    
    You should check the “Require SSL box” in the box where you’ve configured the Tableau connection to Dremio.

Connector Installation on Tableau Server Linux

Dremio Connector Install

  1. Add Dremio driver to /opt/tableau/tableau_driver/jdbc. Create this path if it does not exist. This is what the installation currently looks like, for example:
    [root@tableau-server jdbc]# pwd
    /opt/tableau/tableau_driver/jdbc
    [root@tableau-server jdbc]# ll
    total 28124-rw-r--r--. 1 root root 28797899 Dec 16 23:21 dremio-jdbc-driver-4.1.0-201912030136020081-49feeb75.jar
    
  2. Add Dremio connector file to: /etc/tableau/tableau_connectors. Create this path if it does not exist. This is what the installation currently looks like, for example.
    root@tableau-server tableau_connectors]# pwd
    /etc/tableau/tableau_connectors
    [root@tableau-server tableau_connectors]# ll
    total 12-rwxr-xr-x. 1 root root 11930 Dec 16 23:09 tableau_dremio-1.0.0-20191212193105367-bd753d6.taco
    
  3. Restart Tableau Server using tsm.
  4. Test the connection by publishing a workbook to the server from Tableau Desktop.

Enabling SSL with Tableau Server

  1. If you are connecting to a Dremio cluster with SSL/TLS you will have to add the certificate for that cluster to the cacerts that the JRE bundled with Tableau Server uses. There are actually several runtimes (you can see them with ps -ef | grep java | grep dremio). Use the Java keytool to add the cert to: /opt/tableau/tableau_server/packages/repository.<tableau-version>/jre
    sudo /opt/tableau/tableau_server/packages/repository.<tableau-version>/jre/bin/keytool 
    -importcert 
    -keystore /opt/tableau/tableau_server/packages/repository.<tableau-version>/jre/lib/security/cacerts 
    -storepass changeit 
    -file /path/to/dremioServerCert.der
    -alias dremio
    
    Note that you must qualify both keytool and cacerts to ensure you are using the correct files, if you do not you may pick them up from the path.
  2. Restart Tableau server using tsm: tsm restart

Known Issues:

  • Sometimes tables appear without columns: Due to a Tableau bug, to work around this query the table in question from the Dremio UI first.
  • Columns with complex types return null data: Due to a Tableau bug, create a view that casts the column to string before using in Tableau.

Generating Self Signed Certificates

As an example of how to create self-signed certificates for testing SSL connectivity, follow the below instructions.

  1. Create the public and private .pem files:
    • When generating the private key be sure to use the exact hostname of the Dremio coordinator.
      openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365
      
  2. Create the .der file to import into the target keystores:
    openssl x509 -outform der -in cert.pem -out cert.der
    
  3. Create a PKCS12 keystore that will be turned into a JKS keystore:
    cat key.pem cert.pem | openssl pkcs12 -export -out keystore.p12
    
  4. Create the JKS keystore:
    keytool -importkeystore -srckeystore keystore.p12 -srcstoretype pkcs12 -destkeystore keystore.jks
    

You should now have 5 files:

  1. cert.pem
  2. cert.der - Import into the Java keystore where Tableau is used (Desktop and/or Server)
  3. key.pem
  4. keystore.p12
  5. keystore.jks - Used to enable SSL for Dremio

See here for notes on how to configure Dremio to use the generated keystore.

Troubleshooting Tableau Client Connections

Dremio users may need to perform one of the following workarounds if they are using the specified version of Tableau to access a Dremio deployment.

Tableau 2019.4

Start Tableau from the command line with the -DDisableVerifyConnectorPluginSignature=true option. Example:

   cd /Applications/Tableau Desktop 2019.4.app/Contents/MacOS
   ./Tableau -DDisableVerifyConnectorPluginSignature=true

Tableau 2020.3

Set the following environment variable on the machine running Tableau:

JAVA_TOOL_OPTIONS=-Dcdjd.io.netty.tryReflectionSetAccessible=true

results matching ""

    No results matching ""