---
layout: docs30
title:  Tableau 8
categories: tutorial
permalink: /docs30/tutorial/tableau.html
---

> There are some limitations of Kylin ODBC driver with Tableau, please read carefully this instruction before you try it.
> 
> * Only support "managed" analysis path, Kylin engine will raise exception for unexpected dimension or metric
> * Please always select Fact Table first, then add lookup tables with correct join condition (defined join type in cube)
> * Do not try to join between fact tables or lookup tables;
> * You can try to use high cardinality dimensions like seller id as Tableau Filter, but the engine will only return limited seller id in Tableau's filter now.

### For Tableau 9.x User
Please refer to [Tableau 9.x Tutorial](./tableau_91.html) for detail guide.

### Step 1. Install Kylin ODBC Driver
Refer to this guide: [Kylin ODBC Driver Tutorial](./odbc.html).

### Step 2. Connect to Kylin Server
> We recommended to use Connect Using Driver instead of Using DSN.

Connect Using Driver: Select "Other Database(ODBC)" in the left panel and choose KylinODBCDriver in the pop-up window. 

![](/images/Kylin-and-Tableau-Tutorial/1 odbc.png)

Enter your Sever location and credentials: server host, port, username and password.

![]( /images/Kylin-and-Tableau-Tutorial/2 serverhost.jpg)

Click "Connect" to get the list of projects that you have permission to access. See details about permission in [Kylin Cube Permission Grant Tutorial](./acl.html). Then choose the project you want to connect in the drop down list. 

![]( /images/Kylin-and-Tableau-Tutorial/3 project.jpg)

Click "Done" to complete the connection.

![]( /images/Kylin-and-Tableau-Tutorial/4 done.jpg)

### Step 3. Using Single Table or Multiple Tables
> Limitation
> 
>    * Must select FACT table first
>    * Do not support select from lookup table only
>    * The join condition must match within cube definition

**Select Fact Table**

Select `Multiple Tables`.

![]( /images/Kylin-and-Tableau-Tutorial/5 multipleTable.jpg)

Then click `Add Table...` to add a fact table.

![]( /images/Kylin-and-Tableau-Tutorial/6 facttable.jpg)

![]( /images/Kylin-and-Tableau-Tutorial/6 facttable2.jpg)

**Select Look-up Table**

Click `Add Table...` to add a look-up table. 

![]( /images/Kylin-and-Tableau-Tutorial/7 lkptable.jpg)

Set up the join clause carefully. 

![]( /images/Kylin-and-Tableau-Tutorial/8 join.jpg)

Keep add tables through click `Add Table...` until all the look-up tables have been added properly. Give the connection a name for use in Tableau.

![]( /images/Kylin-and-Tableau-Tutorial/9 connName.jpg)

**Using Connect Live**

There are three types of `Data Connection`. Choose the `Connect Live` option. 

![]( /images/Kylin-and-Tableau-Tutorial/10 connectLive.jpg)

Then you can enjoy analyzing with Tableau.

![]( /images/Kylin-and-Tableau-Tutorial/11 analysis.jpg)

**Add additional look-up Tables**

Click `Data` in the top menu bar, select `Edit Tables...` to update the look-up table information.

![]( /images/Kylin-and-Tableau-Tutorial/12 edit tables.jpg)

### Step 4. Using Customized SQL
To use customized SQL resembles using Single Table/Multiple Tables, except that you just need to paste your SQL in `Custom SQL` tab and take the same instruction as above.

![]( /images/Kylin-and-Tableau-Tutorial/19 custom.jpg)

### Step 5. Publish to Tableau Server
Suppose you have finished making a dashboard with Tableau, you can publish it to Tableau Server.
Click `Server` in the top menu bar, select `Publish Workbook...`. 

![]( /images/Kylin-and-Tableau-Tutorial/14 publish.jpg)

Then sign in your Tableau Server and prepare to publish. 

![]( /images/Kylin-and-Tableau-Tutorial/16 prepare-publish.png)

If you're Using Driver Connect instead of DSN connect, you'll need to additionally embed your password in. Click the `Authentication` button at left bottom and select `Embedded Password`. Click `Publish` and you will see the result.

![]( /images/Kylin-and-Tableau-Tutorial/17 embedded-pwd.png)

### Tips
* Hide Table name in Tableau

    * Tableau will display columns be grouped by source table name, but user may want to organize columns with different structure. Using "Group by Folder" in Tableau and Create Folders to group different columns.

     ![]( /images/Kylin-and-Tableau-Tutorial/18 groupby-folder.jpg)
