You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by ru...@apache.org on 2020/08/31 23:41:23 UTC

[incubator-superset-site] 18/26: Fix, database dep table and sqllab autofunctions

This is an automated email from the ASF dual-hosted git repository.

rusackas pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/incubator-superset-site.git

commit e5a9634b666d25a81c322eb6812dd29777837db2
Author: Daniel Gaspar <da...@gmail.com>
AuthorDate: Fri Nov 29 12:25:49 2019 +0000

    Fix, database dep table and sqllab autofunctions
---
 _images/add_new_chart.png                       | Bin 0 -> 42447 bytes
 _images/advanced_analytics_base.png             | Bin 0 -> 122647 bytes
 _images/annotation.png                          | Bin 0 -> 101822 bytes
 _images/annotation_settings.png                 | Bin 0 -> 22421 bytes
 _images/average_aggregate_for_cost.png          | Bin 0 -> 31741 bytes
 _images/blue_bar_insert_component.png           | Bin 0 -> 56554 bytes
 _images/chose_a_datasource.png                  | Bin 0 -> 21013 bytes
 _images/csv_to_database_configuration.png       | Bin 0 -> 30607 bytes
 _images/edit-record.png                         | Bin 0 -> 4940 bytes
 _images/edit_annotation.png                     | Bin 0 -> 34104 bytes
 _images/filter_on_origin_country.png            | Bin 0 -> 44695 bytes
 _images/markdown.png                            | Bin 0 -> 9030 bytes
 _images/no_filter_on_time_filter.png            | Bin 0 -> 35991 bytes
 _images/parse_dates_column.png                  | Bin 0 -> 22004 bytes
 _images/publish_dashboard.png                   | Bin 0 -> 67785 bytes
 _images/resample.png                            | Bin 0 -> 88488 bytes
 _images/resize_tutorial_table_on_dashboard.png  | Bin 0 -> 40391 bytes
 _images/rolling_mean.png                        | Bin 0 -> 99706 bytes
 _images/save_tutorial_table.png                 | Bin 0 -> 8282 bytes
 _images/select_dates_pivot_table.png            | Bin 0 -> 35466 bytes
 _images/select_table_visualization_type.png     | Bin 0 -> 47283 bytes
 _images/sum_cost_column.png                     | Bin 0 -> 36632 bytes
 _images/time_comparison_absolute_difference.png | Bin 0 -> 98829 bytes
 _images/time_comparison_two_series.png          | Bin 0 -> 137009 bytes
 _images/tutorial_line_chart.png                 | Bin 0 -> 97148 bytes
 _images/tutorial_pivot_table.png                | Bin 0 -> 57761 bytes
 _images/tutorial_table.png                      | Bin 0 -> 35897 bytes
 _images/upload_a_csv.png                        | Bin 0 -> 38213 bytes
 _modules/superset/jinja_context.html            |  16 +-
 _sources/admintutorial.rst.txt                  | 325 ++++++++++++
 _sources/installation.rst.txt                   |   2 +-
 _sources/tutorials.rst.txt                      |  25 +
 _sources/usertutorial.rst.txt                   | 508 +++++++++++++++++++
 admintutorial.html                              | 421 ++++++++++++++++
 genindex.html                                   |  68 +++
 installation.html                               | 116 +++++
 objects.inv                                     | Bin 525 -> 676 bytes
 searchindex.js                                  |   2 +-
 sqllab.html                                     | 192 ++++++++
 genindex.html => tutorials.html                 |  61 ++-
 usertutorial.html                               | 624 ++++++++++++++++++++++++
 41 files changed, 2338 insertions(+), 22 deletions(-)

diff --git a/_images/add_new_chart.png b/_images/add_new_chart.png
new file mode 100644
index 0000000..356a2ad
Binary files /dev/null and b/_images/add_new_chart.png differ
diff --git a/_images/advanced_analytics_base.png b/_images/advanced_analytics_base.png
new file mode 100644
index 0000000..c93bb28
Binary files /dev/null and b/_images/advanced_analytics_base.png differ
diff --git a/_images/annotation.png b/_images/annotation.png
new file mode 100644
index 0000000..8e0dda3
Binary files /dev/null and b/_images/annotation.png differ
diff --git a/_images/annotation_settings.png b/_images/annotation_settings.png
new file mode 100644
index 0000000..76e2230
Binary files /dev/null and b/_images/annotation_settings.png differ
diff --git a/_images/average_aggregate_for_cost.png b/_images/average_aggregate_for_cost.png
new file mode 100644
index 0000000..4a2ae09
Binary files /dev/null and b/_images/average_aggregate_for_cost.png differ
diff --git a/_images/blue_bar_insert_component.png b/_images/blue_bar_insert_component.png
new file mode 100644
index 0000000..d8f1b87
Binary files /dev/null and b/_images/blue_bar_insert_component.png differ
diff --git a/_images/chose_a_datasource.png b/_images/chose_a_datasource.png
new file mode 100644
index 0000000..885c551
Binary files /dev/null and b/_images/chose_a_datasource.png differ
diff --git a/_images/csv_to_database_configuration.png b/_images/csv_to_database_configuration.png
new file mode 100644
index 0000000..b2b6d39
Binary files /dev/null and b/_images/csv_to_database_configuration.png differ
diff --git a/_images/edit-record.png b/_images/edit-record.png
new file mode 100644
index 0000000..129efb1
Binary files /dev/null and b/_images/edit-record.png differ
diff --git a/_images/edit_annotation.png b/_images/edit_annotation.png
new file mode 100644
index 0000000..9ef34f8
Binary files /dev/null and b/_images/edit_annotation.png differ
diff --git a/_images/filter_on_origin_country.png b/_images/filter_on_origin_country.png
new file mode 100644
index 0000000..961d41a
Binary files /dev/null and b/_images/filter_on_origin_country.png differ
diff --git a/_images/markdown.png b/_images/markdown.png
new file mode 100644
index 0000000..f0345ae
Binary files /dev/null and b/_images/markdown.png differ
diff --git a/_images/no_filter_on_time_filter.png b/_images/no_filter_on_time_filter.png
new file mode 100644
index 0000000..ea564d6
Binary files /dev/null and b/_images/no_filter_on_time_filter.png differ
diff --git a/_images/parse_dates_column.png b/_images/parse_dates_column.png
new file mode 100644
index 0000000..69982f4
Binary files /dev/null and b/_images/parse_dates_column.png differ
diff --git a/_images/publish_dashboard.png b/_images/publish_dashboard.png
new file mode 100644
index 0000000..74fcb28
Binary files /dev/null and b/_images/publish_dashboard.png differ
diff --git a/_images/resample.png b/_images/resample.png
new file mode 100644
index 0000000..04f78a0
Binary files /dev/null and b/_images/resample.png differ
diff --git a/_images/resize_tutorial_table_on_dashboard.png b/_images/resize_tutorial_table_on_dashboard.png
new file mode 100644
index 0000000..c547521
Binary files /dev/null and b/_images/resize_tutorial_table_on_dashboard.png differ
diff --git a/_images/rolling_mean.png b/_images/rolling_mean.png
new file mode 100644
index 0000000..505fe44
Binary files /dev/null and b/_images/rolling_mean.png differ
diff --git a/_images/save_tutorial_table.png b/_images/save_tutorial_table.png
new file mode 100644
index 0000000..8f5ee21
Binary files /dev/null and b/_images/save_tutorial_table.png differ
diff --git a/_images/select_dates_pivot_table.png b/_images/select_dates_pivot_table.png
new file mode 100644
index 0000000..f206476
Binary files /dev/null and b/_images/select_dates_pivot_table.png differ
diff --git a/_images/select_table_visualization_type.png b/_images/select_table_visualization_type.png
new file mode 100644
index 0000000..ab238fd
Binary files /dev/null and b/_images/select_table_visualization_type.png differ
diff --git a/_images/sum_cost_column.png b/_images/sum_cost_column.png
new file mode 100644
index 0000000..5dbd7c4
Binary files /dev/null and b/_images/sum_cost_column.png differ
diff --git a/_images/time_comparison_absolute_difference.png b/_images/time_comparison_absolute_difference.png
new file mode 100644
index 0000000..691d0c8
Binary files /dev/null and b/_images/time_comparison_absolute_difference.png differ
diff --git a/_images/time_comparison_two_series.png b/_images/time_comparison_two_series.png
new file mode 100644
index 0000000..282b3dd
Binary files /dev/null and b/_images/time_comparison_two_series.png differ
diff --git a/_images/tutorial_line_chart.png b/_images/tutorial_line_chart.png
new file mode 100644
index 0000000..5cf5235
Binary files /dev/null and b/_images/tutorial_line_chart.png differ
diff --git a/_images/tutorial_pivot_table.png b/_images/tutorial_pivot_table.png
new file mode 100644
index 0000000..50253a0
Binary files /dev/null and b/_images/tutorial_pivot_table.png differ
diff --git a/_images/tutorial_table.png b/_images/tutorial_table.png
new file mode 100644
index 0000000..a94fdaf
Binary files /dev/null and b/_images/tutorial_table.png differ
diff --git a/_images/upload_a_csv.png b/_images/upload_a_csv.png
new file mode 100644
index 0000000..91f0e55
Binary files /dev/null and b/_images/upload_a_csv.png differ
diff --git a/_modules/superset/jinja_context.html b/_modules/superset/jinja_context.html
index ec78ef9..60490e0 100644
--- a/_modules/superset/jinja_context.html
+++ b/_modules/superset/jinja_context.html
@@ -168,19 +168,19 @@
 <span class="c1"># under the License.</span>
 <span class="c1"># pylint: disable=C,R,W</span>
 <span class="sd">&quot;&quot;&quot;Defines the templating context for SQL Lab&quot;&quot;&quot;</span>
-<span class="kn">from</span> <span class="nn">datetime</span> <span class="k">import</span> <span class="n">datetime</span><span class="p">,</span> <span class="n">timedelta</span>
 <span class="kn">import</span> <span class="nn">inspect</span>
 <span class="kn">import</span> <span class="nn">json</span>
 <span class="kn">import</span> <span class="nn">random</span>
 <span class="kn">import</span> <span class="nn">time</span>
-<span class="kn">from</span> <span class="nn">typing</span> <span class="k">import</span> <span class="n">Any</span><span class="p">,</span> <span class="n">List</span><span class="p">,</span> <span class="n">Optional</span><span class="p">,</span> <span class="n">Tuple</span>
 <span class="kn">import</span> <span class="nn">uuid</span>
+<span class="kn">from</span> <span class="nn">datetime</span> <span class="kn">import</span> <span class="n">datetime</span><span class="p">,</span> <span class="n">timedelta</span>
+<span class="kn">from</span> <span class="nn">typing</span> <span class="kn">import</span> <span class="n">Any</span><span class="p">,</span> <span class="n">List</span><span class="p">,</span> <span class="n">Optional</span><span class="p">,</span> <span class="n">Tuple</span>
 
-<span class="kn">from</span> <span class="nn">dateutil.relativedelta</span> <span class="k">import</span> <span class="n">relativedelta</span>
-<span class="kn">from</span> <span class="nn">flask</span> <span class="k">import</span> <span class="n">g</span><span class="p">,</span> <span class="n">request</span>
-<span class="kn">from</span> <span class="nn">jinja2.sandbox</span> <span class="k">import</span> <span class="n">SandboxedEnvironment</span>
+<span class="kn">from</span> <span class="nn">dateutil.relativedelta</span> <span class="kn">import</span> <span class="n">relativedelta</span>
+<span class="kn">from</span> <span class="nn">flask</span> <span class="kn">import</span> <span class="n">g</span><span class="p">,</span> <span class="n">request</span>
+<span class="kn">from</span> <span class="nn">jinja2.sandbox</span> <span class="kn">import</span> <span class="n">SandboxedEnvironment</span>
 
-<span class="kn">from</span> <span class="nn">superset</span> <span class="k">import</span> <span class="n">app</span>
+<span class="kn">from</span> <span class="nn">superset</span> <span class="kn">import</span> <span class="n">app</span>
 
 <span class="n">config</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">config</span>
 <span class="n">BASE_CONTEXT</span> <span class="o">=</span> <span class="p">{</span>
@@ -285,7 +285,7 @@
     <span class="sd">&quot;&quot;&quot; Dummy class that exposes a method used to store additional values used in</span>
 <span class="sd">     calculation of query object cache keys&quot;&quot;&quot;</span>
 
-    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">extra_cache_keys</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="n">Any</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">):</span>
+    <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">extra_cache_keys</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="n">Any</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">):</span>
         <span class="bp">self</span><span class="o">.</span><span class="n">extra_cache_keys</span> <span class="o">=</span> <span class="n">extra_cache_keys</span>
 
     <span class="k">def</span> <span class="nf">cache_key_wrapper</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">key</span><span class="p">:</span> <span class="n">Any</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Any</span><span class="p">:</span>
@@ -334,7 +334,7 @@
 
     <span class="n">engine</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>
 
-    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span>
+    <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span>
         <span class="bp">self</span><span class="p">,</span>
         <span class="n">database</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
         <span class="n">query</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
diff --git a/_sources/admintutorial.rst.txt b/_sources/admintutorial.rst.txt
new file mode 100644
index 0000000..ebae59f
--- /dev/null
+++ b/_sources/admintutorial.rst.txt
@@ -0,0 +1,325 @@
+..  Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+
+..    http://www.apache.org/licenses/LICENSE-2.0
+
+..  Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied.  See the License for the
+    specific language governing permissions and limitations
+    under the License.
+
+Creating your first dashboard
+=============================
+
+This tutorial targets someone who wants to create charts and dashboards
+in Superset. We'll show you how to connect Superset
+to a new database and configure a table in that database for analysis. You'll
+also explore the data you've exposed and add a visualization to a dashboard
+so that you get a feel for the end-to-end user experience.
+
+Connecting to a new database
+----------------------------
+
+We assume you already have a database configured and can connect to it from the 
+instance on which you’re running Superset. If you’re just testing Superset and
+want to explore sample data, you can load some
+`sample PostgreSQL datasets <https://wiki.postgresql.org/wiki/Sample_Databases>`_
+into a fresh DB, or configure the
+`example weather data <https://github.com/dylburger/noaa-ghcn-weather-data>`_
+we use here.
+
+Under the **Sources** menu, select the *Databases* option:
+
+.. image:: images/tutorial/tutorial_01_sources_database.png
+   :scale: 70%
+
+On the resulting page, click on the green plus sign, near the top right:
+
+.. image:: images/tutorial/tutorial_02_add_database.png
+   :scale: 70%
+
+You can configure a number of advanced options on this page, but for 
+this walkthrough, you’ll only need to do **two things**:
+
+1. Name your database connection:
+
+.. image:: images/tutorial/tutorial_03_database_name.png
+   :scale: 70%
+
+2. Provide the SQLAlchemy Connection URI and test the connection:
+
+.. image:: images/tutorial/tutorial_04_sqlalchemy_connection_string.png
+   :scale: 70%
+
+This example shows the connection string for our test weather database. 
+As noted in the text below the URI, you should refer to the SQLAlchemy 
+documentation on 
+`creating new connection URIs <https://docs.sqlalchemy.org/en/rel_1_2/core/engines.html#database-urls>`_
+for your target database.
+
+Click the **Test Connection** button to confirm things work end to end. 
+Once Superset can successfully connect and authenticate, you should see 
+a popup like this:
+
+.. image:: images/tutorial/tutorial_05_connection_popup.png
+   :scale: 50%
+
+Moreover, you should also see the list of tables Superset can read from 
+the schema you’re connected to, at the bottom of the page:
+
+.. image:: images/tutorial/tutorial_06_list_of_tables.png
+   :scale: 70%
+
+If the connection looks good, save the configuration by clicking the **Save** 
+button at the bottom of the page:
+
+.. image:: images/tutorial/tutorial_07_save_button.png
+   :scale: 70%
+
+Adding a new table
+------------------
+
+Now that you’ve configured a database, you’ll need to add specific tables 
+to Superset that you’d like to query.
+
+Under the **Sources** menu, select the *Tables* option:
+
+.. image:: images/tutorial/tutorial_08_sources_tables.png
+   :scale: 70%
+
+On the resulting page, click on the green plus sign, near the top left:
+
+.. image:: images/tutorial/tutorial_09_add_new_table.png
+   :scale: 70%
+
+You only need a few pieces of information to add a new table to Superset:
+
+* The name of the table
+
+.. image:: images/tutorial/tutorial_10_table_name.png
+   :scale: 70%
+
+* The target database from the **Database** drop-down menu (i.e. the one 
+  you just added above)
+
+.. image:: images/tutorial/tutorial_11_choose_db.png
+   :scale: 70%
+
+* Optionally, the database schema. If the table exists in the “default” schema 
+  (e.g. the *public* schema in PostgreSQL or Redshift), you can leave the schema 
+  field blank.
+
+Click on the **Save** button to save the configuration:
+
+.. image:: images/tutorial/tutorial_07_save_button.png
+   :scale: 70%
+
+When redirected back to the list of tables, you should see a message indicating 
+that your table was created:
+
+.. image:: images/tutorial/tutorial_12_table_creation_success_msg.png
+   :scale: 70%
+
+This message also directs you to edit the table configuration. We’ll edit a limited 
+portion of the configuration now - just to get you started - and leave the rest for 
+a more advanced tutorial.
+
+Click on the edit button next to the table you’ve created:
+
+.. image:: images/tutorial/tutorial_13_edit_table_config.png
+   :scale: 70%
+
+On the resulting page, click on the **List Table Column** tab. Here, you’ll define the 
+way you can use specific columns of your table when exploring your data. We’ll run 
+through these options to describe their purpose:
+
+* If you want users to group metrics by a specific field, mark it as **Groupable**.
+* If you need to filter on a specific field, mark it as **Filterable**.
+* Is this field something you’d like to get the distinct count of? Check the **Count 
+  Distinct** box.
+* Is this a metric you want to sum, or get basic summary statistics for? The **Sum**, 
+  **Min**, and **Max** columns will help.
+* The **is temporal** field should be checked for any date or time fields. We’ll cover 
+  how this manifests itself in analyses in a moment.
+
+Here’s how we’ve configured fields for the weather data. Even for measures like the 
+weather measurements (precipitation, snowfall, etc.), it’s ideal to group and filter 
+by these values:
+
+.. image:: images/tutorial/tutorial_14_field_config.png
+
+As with the configurations above, click the **Save** button to save these settings.
+
+Exploring your data
+-------------------
+
+To start exploring your data, simply click on the table name you just created in 
+the list of available tables:
+
+.. image:: images/tutorial/tutorial_15_click_table_name.png
+
+By default, you’ll be presented with a Table View:
+
+.. image:: images/tutorial/tutorial_16_datasource_chart_type.png
+
+Let’s walk through a basic query to get the count of all records in our table. 
+First, we’ll need to change the **Since** filter to capture the range of our data. 
+You can use simple phrases to apply these filters, like "3 years ago":
+
+.. image:: images/tutorial/tutorial_17_choose_time_range.png
+
+The upper limit for time, the **Until** filter, defaults to "now", which may or may 
+not be what you want.
+
+Look for the Metrics section under the **GROUP BY** header, and start typing "Count" 
+- you’ll see a list of metrics matching what you type:
+
+.. image:: images/tutorial/tutorial_18_choose_metric.png
+
+Select the *COUNT(\*)* metric, then click the green **Query** button near the top 
+of the explore:
+
+.. image:: images/tutorial/tutorial_19_click_query.png
+
+You’ll see your results in the table:
+
+.. image:: images/tutorial/tutorial_20_count_star_result.png
+
+Let’s group this by the *weather_description* field to get the count of records by 
+the type of weather recorded by adding it to the *Group by* section:
+
+.. image:: images/tutorial/tutorial_21_group_by.png
+
+and run the query:
+
+.. image:: images/tutorial/tutorial_22_group_by_result.png
+
+Let’s find a more useful data point: the top 10 times and places that recorded the 
+highest temperature in 2015.
+
+We replace *weather_description* with *latitude*, *longitude* and *measurement_date* in the 
+*Group by* section:
+
+.. image:: images/tutorial/tutorial_23_group_by_more_dimensions.png
+
+And replace *COUNT(\*)* with *max__measurement_flag*:
+
+.. image:: images/tutorial/tutorial_24_max_metric.png
+
+The *max__measurement_flag* metric was created when we checked the box under **Max** and 
+next to the *measurement_flag* field, indicating that this field was numeric and that 
+we wanted to find its maximum value when grouped by specific fields.
+
+In our case, *measurement_flag* is the value of the measurement taken, which clearly 
+depends on the type of measurement (the researchers recorded different values for 
+precipitation and temperature). Therefore, we must filter our query only on records 
+where the *weather_description* is equal to "Maximum temperature", which we do in 
+the **Filters** section at the bottom of the explore:
+
+.. image:: images/tutorial/tutorial_25_max_temp_filter.png
+
+Finally, since we only care about the top 10 measurements, we limit our results to 
+10 records using the *Row limit* option under the **Options** header:
+
+.. image:: images/tutorial/tutorial_26_row_limit.png
+
+We click **Query** and get the following results:
+
+.. image:: images/tutorial/tutorial_27_top_10_max_temps.png
+
+In this dataset, the maximum temperature is recorded in tenths of a degree Celsius. 
+The top value of 1370, measured in the middle of Nevada, is equal to 137 C, or roughly 
+278 degrees F. It’s unlikely this value was correctly recorded. We’ve already been able 
+to investigate some outliers with Superset, but this just scratches the surface of what 
+we can do.
+
+You may want to do a couple more things with this measure:
+
+* The default formatting shows values like 1.37k, which may be difficult for some 
+  users to read. It’s likely you may want to see the full, comma-separated value. 
+  You can change the formatting of any measure by editing its config (*Edit Table 
+  Config > List Sql Metric > Edit Metric > D3Format*)
+* Moreover, you may want to see the temperature measurements in plain degrees C, 
+  not tenths of a degree. Or you may want to convert the temperature to degrees 
+  Fahrenheit. You can change the SQL that gets executed against the database, baking 
+  the logic into the measure itself (*Edit Table Config > List Sql Metric > Edit 
+  Metric > SQL Expression*)
+
+For now, though, let’s create a better visualization of these data and add it to 
+a dashboard.
+
+We change the Chart Type to "Distribution - Bar Chart":
+
+.. image:: images/tutorial/tutorial_28_bar_chart.png
+
+Our filter on Maximum temperature measurements was retained, but the query and 
+formatting options are dependent on the chart type, so you’ll have to set the 
+values again:
+
+.. image:: images/tutorial/tutorial_29_bar_chart_series_metrics.png
+
+You should note the extensive formatting options for this chart: the ability to 
+set axis labels, margins, ticks, etc. To make the data presentable to a broad 
+audience, you’ll want to apply many of these to slices that end up in dashboards. 
+For now, though, we run our query and get the following chart:
+
+.. image:: images/tutorial/tutorial_30_bar_chart_results.png
+   :scale: 70%
+
+Creating a slice and dashboard
+------------------------------
+
+This view might be interesting to researchers, so let’s save it. In Superset, 
+a saved query is called a **Slice**. 
+
+To create a slice, click the **Save as** button near the top-left of the 
+explore:
+
+.. image:: images/tutorial/tutorial_19_click_query.png
+
+A popup should appear, asking you to name the slice, and optionally add it to a 
+dashboard. Since we haven’t yet created any dashboards, we can create one and 
+immediately add our slice to it. Let’s do it:
+
+.. image:: images/tutorial/tutorial_31_save_slice_to_dashboard.png
+   :scale: 70%
+
+Click Save, which will direct you back to your original query. We see that 
+our slice and dashboard were successfully created:
+
+.. image:: images/tutorial/tutorial_32_save_slice_confirmation.png
+   :scale: 70%
+
+Let’s check out our new dashboard. We click on the **Dashboards** menu:
+
+.. image:: images/tutorial/tutorial_33_dashboard.png
+
+and find the dashboard we just created:
+
+.. image:: images/tutorial/tutorial_34_weather_dashboard.png
+
+Things seemed to have worked - our slice is here!
+
+.. image:: images/tutorial/tutorial_35_slice_on_dashboard.png
+   :scale: 70%
+
+But it’s a bit smaller than we might like. Luckily, you can adjust the size 
+of slices in a dashboard by clicking, holding and dragging the bottom-right 
+corner to your desired dimensions:
+
+.. image:: images/tutorial/tutorial_36_adjust_dimensions.gif
+   :scale: 120%
+
+After adjusting the size, you’ll be asked to click on the icon near the 
+top-right of the dashboard to save the new configuration.
+
+Congrats! You’ve successfully linked, analyzed, and visualized data in Superset. 
+There are a wealth of other table configuration and visualization options, so 
+please start exploring and creating slices and dashboards of your own.
diff --git a/_sources/installation.rst.txt b/_sources/installation.rst.txt
index 9360437..fa4a591 100644
--- a/_sources/installation.rst.txt
+++ b/_sources/installation.rst.txt
@@ -360,7 +360,7 @@ Here's a list of some of the recommended packages.
 |                  |                                       | For JDBC                                        |
 |                  |                                       | ``drill+jdbc://``                               |
 +------------------+---------------------------------------+-------------------------------------------------+
-| Apache Druid     | ``pip install pydruid``                | ``druid://``                                    |
+| Apache Druid     | ``pip install pydruid``               | ``druid://``                                    |
 +------------------+---------------------------------------+-------------------------------------------------+
 | Apache Hive      | ``pip install pyhive``                | ``hive://``                                     |
 +------------------+---------------------------------------+-------------------------------------------------+
diff --git a/_sources/tutorials.rst.txt b/_sources/tutorials.rst.txt
new file mode 100644
index 0000000..9edd148
--- /dev/null
+++ b/_sources/tutorials.rst.txt
@@ -0,0 +1,25 @@
+..  Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+
+..    http://www.apache.org/licenses/LICENSE-2.0
+
+..  Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied.  See the License for the
+    specific language governing permissions and limitations
+    under the License.
+
+Tutorials
+---------
+
+.. toctree::
+    :maxdepth: 2
+
+    admintutorial
+    usertutorial
diff --git a/_sources/usertutorial.rst.txt b/_sources/usertutorial.rst.txt
new file mode 100644
index 0000000..096a229
--- /dev/null
+++ b/_sources/usertutorial.rst.txt
@@ -0,0 +1,508 @@
+..  Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+
+..    http://www.apache.org/licenses/LICENSE-2.0
+
+..  Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied.  See the License for the
+    specific language governing permissions and limitations
+    under the License.
+
+Exploring data with Apache Superset
+===================================
+
+In this tutorial, we will introduce key concepts in Apache Superset
+through the exploration of a real dataset which contains the flights
+made by employees of a UK-based organization in 2011. The following
+information about each flight is given:
+
+-  The traveller's department. For the purposes of this tutorial the
+   departments have been renamed Orange, Yellow and Purple.
+-  The cost of the ticket.
+-  The travel class (Economy, Premium Economy, Business and First
+   Class).
+-  Whether the ticket was a single or return.
+-  The date of travel.
+-  Information about the origin and destination.
+-  The distance between the origin and destination, in kilometers (km).
+
+Enabling Upload a CSV Functionality
+-----------------------------------
+
+You may need to enable the functionality to upload a CSV to your
+database. The following section explains how to enable this
+functionality for the examples database.
+
+In the top menu, select :menuselection:`Sources --> Databases`. Find the
+:guilabel:`examples` database in the list and select the edit record
+button.
+
+.. image:: images/usertutorial/edit-record.png
+
+Within the :guilabel:`Edit Database` page, check the
+:guilabel:`Allow Csv Upload` checkbox.
+
+Finally, save by selecting :guilabel:`Save` at the bottom of the page.
+
+Obtaining and loading the data
+------------------------------
+
+Download the data for this tutorial to your computer from
+`Github <https://raw.githubusercontent.com/apache-superset/examples-data/master/tutorial_flights.csv>`__.
+
+In the top menu, select :menuselection:`Sources --> Upload a CSV`.
+
+.. image:: images/usertutorial/upload_a_csv.png
+
+Then, enter the :guilabel:`Table name` as `tutorial_flights`
+and select the :guilabel:`CSV file` from your computer.
+
+.. image:: images/usertutorial/csv_to_database_configuration.png
+
+Next enter the text `Travel Date` into the
+:guilabel:`Parse Dates` field.
+
+.. image:: images/usertutorial/parse_dates_column.png
+
+Leaving all the other options in their default settings, select
+:guilabel:`Save` at the bottom of the page.
+
+Table Visualization
+-------------------
+
+In this section, we’ll create our first visualization: a table to show
+the number of flights and cost per travel class.
+
+To create a new chart, select the :menuselection:`New --> Chart`.
+
+.. image:: images/usertutorial/add_new_chart.png
+
+Once in the :guilabel:`Create a new chart` dialogue, select
+:guilabel:`tutorial_flights` from the :guilabel:`Chose a datasource`
+dropdown.
+
+.. image:: images/usertutorial/chose_a_datasource.png
+
+Next, select the visualization type as :guilabel:`Table`.
+
+.. image:: images/usertutorial/select_table_visualization_type.png
+
+Then, select :guilabel:`Create new chart` to go into the chart view.
+
+By default, Apache Superset only shows the last week of data: in our
+example, we want to look at all the data in the dataset. No problem -
+within the :guilabel:`Time` section, remove the filter on
+:guilabel:`Time range` by selecting on :guilabel:`Last week` then
+changing the selection to :guilabel:`No filter`, with a final
+:guilabel:`OK` to confirm your selection.
+
+.. image:: images/usertutorial/no_filter_on_time_filter.png
+
+Now, we want to specify the rows in our table by using the
+:guilabel:`Group by` option. Since in this example, we want to
+understand different Travel Classes, we select :guilabel:`Travel Class`
+in this menu.
+
+Next, we can specify the metrics we would like to see in our table with
+the :guilabel:`Metrics` option. :guilabel:`Count(*)`, which represents the number of
+rows in the table (in this case corresponding to the number of flights
+since we have a row per flight), is already there. To add cost, within
+:guilabel:`Metrics`, select :guilabel:`Cost`. :guilabel:`Save` the
+default aggregation option, which is to sum the column.
+
+.. image:: images/usertutorial/sum_cost_column.png
+
+Finally, select :guilabel:`Run Query` to see the results of the table.
+
+.. image:: images/usertutorial/tutorial_table.png
+
+Congratulations, you have created your first visualization in Apache
+Superset!
+
+To save the visualization, click on :guilabel:`Save` in the top left of
+the screen. Select the :guilabel:`Save as` option, and enter the chart
+name as Tutorial Table (you will be able to find it again through the
+:guilabel:`Charts` screen, accessible in the top menu). Similarly,
+select :guilabel:`Add to new dashboard` and enter `Tutorial Dashboard`.
+Finally, select :guilabel:`Save & go to dashboard`.
+
+.. image:: images/usertutorial/save_tutorial_table.png
+
+Dashboard basics
+----------------
+
+Next, we are going to explore the dashboard interface. If you’ve
+followed the previous section, you should already have the dashboard
+open. Otherwise, you can navigate to the dashboard by selecting
+:guilabel:`Dashboards` on the top menu, then :guilabel:`Tutorial dashboard`
+from the list of dashboards.
+
+On this dashboard you should see the table you created in the previous
+section. Select :guilabel:`Edit dashboard` and then hover over the
+table. By selecting the bottom right hand corner of the table (the
+cursor will change too), you can resize it by dragging and dropping.
+
+.. image:: images/usertutorial/resize_tutorial_table_on_dashboard.png
+
+Finally, save your changes by selecting :guilabel:`Save changes` in the
+top right.
+
+Pivot Table
+-----------
+
+In this section, we will extend our analysis using a more complex
+visualization, Pivot Table. By the end of this section, you will have
+created a table that shows the monthly spend on flights for the first
+six months, by department, by travel class.
+
+As before, create a new visualization by selecting
+:menuselection:`New --> Chart` on the top menu. Choose tutorial_flights
+again as a datasource, then click on the visualization type to get to
+the visualization menu. Select the :guilabel:`Pivot Table` visualization
+(you can filter by entering text in the search box) and then
+:guilabel:`Create a new chart`.
+
+In the :guilabel:`Time` section, keep the Time Column as Travel Date
+(this is selected automatically as we only have one time column in our
+dataset). Then select :guilabel:`Time Grain` to be month as having daily
+data would be too granular to see patterns from. Then select the time
+range to be the first six months of 2011 by click on Last week in the
+:guilabel:`Time Range` section, then in :guilabel:`Custom` selecting a
+:guilabel:`Start / end` of 1\ :sup:`st` January 2011 and 30\ :sup:`th`
+June 2011 respectively by either entering directly the dates or using
+the calendar widget (by selecting the month name and then the year, you
+can move more quickly to far away dates).
+
+.. image:: images/usertutorial/select_dates_pivot_table.png
+
+Next, within the :guilabel:`Query` section, remove the default COUNT(*)
+and add Cost, keeping the default SUM aggregate. Note that Apache
+Superset will indicate the type of the metric by the symbol on the left
+hand column of the list (ABC for string, # for number, a clock face for
+time, etc.).
+
+In :guilabel:`Group by` select :guilabel:`Time`: this will automatically
+use the Time Column and Time Grain selections we defined in the Time
+section.
+
+Within :guilabel:`Columns`, select first :guilabel:`Department` and then
+:guilabel:`Travel Class`. All set – let’s :guilabel:`Run Query` to see
+some data!
+
+.. image:: images/usertutorial/tutorial_pivot_table.png
+
+You should see months in the rows and Department and Travel Class in the
+columns. To get this in our dashboard, select :guilabel:`Save`, name the
+chart Tutorial Pivot and using
+:guilabel:`Add chart to existing dashboard` select 
+:guilabel:`Tutorial Dashboard`, and then finally
+:guilabel:`Save & go to dashboard`.
+
+Line Chart
+----------
+
+In this section, we are going to create a line chart to understand the
+average price of a ticket by month across the entire dataset. As before,
+select :menuselection:`New --> Chart`, and then
+:guilabel:`tutorial_flights` as the datasource and
+:guilabel:`Line Chart` as the visualization type.
+
+In the Time section, as before, keep the :guilabel:`Time Column` as
+Travel Date and :guilabel:`Time Grain` as month but this time for the
+:guilabel:`Time range` select :guilabel:`No filter` as we want to look
+at entire dataset.
+
+Within :guilabel:`Metrics`, remove the default :guilabel:`COUNT(*)` and
+add :guilabel:`Cost`. This time, we want to change how this column is
+aggregated to show the mean value: we can do this by selecting
+:guilabel:`AVG` in the :guilabel:`aggregate` dropdown.
+
+.. image:: images/usertutorial/average_aggregate_for_cost.png
+
+Next, select :guilabel:`Run Query` to show the data on the chart.
+
+How does this look? Well, we can see that the average cost goes up in
+December. However, perhaps it doesn’t make sense to combine both single
+and return tickets, but rather show two separate lines for each ticket
+type.
+
+Let’s do this by selecting :guilabel:`Ticket Single or Return` in the
+:guilabel:`Group by` box, and the selecting :guilabel:`Run Query` again.
+Nice! We can see that on average single tickets are cheaper than returns
+and that the big spike in December is caused by return tickets.
+
+Our chart is looking pretty good already, but let’s customize some more
+by going to the :guilabel:`Customize` tab on the left hand pane. Within
+this pane, try changing the :guilabel:`Color Scheme`, removing the range
+filter by selecting No in the :guilabel:`Show Range Filter` drop down
+and adding some labels using :guilabel:`X Axis Label` and
+:guilabel:`Y Axis Label`.
+
+.. image:: images/usertutorial/tutorial_line_chart.png
+
+Once you’re done, :guilabel:`Save` as Tutorial Line Chart, use
+:guilabel:`Add chart to
+existing dashboard` to add this chart to the previous ones on the
+Tutorial Dashboard and then :guilabel:`Save & go to dashboard`.
+
+Markup
+------
+
+In this section, we will add some text to our dashboard. If you’re there
+already, you can navigate to the dashboard by selecting
+:guilabel:`Dashboards` on the top menu, then
+:guilabel:`Tutorial dashboard` from the list of dashboards. Got into
+edit mode by selecting :guilabel:`Edit dashboard`.
+
+Within the Insert components pane, drag and drop a :guilabel:`Markdown`
+box on the dashboard. Look for the blue lines which indicate the anchor
+where the box will go.
+
+.. image:: images/usertutorial/blue_bar_insert_component.png
+
+Now, to edit the text, select the box. You can enter text, in markdown
+format (see `this Markdown
+Cheatsheet <https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet>`__
+for more information about this format). You can toggle between
+:guilabel:`Edit` and :guilabel:`Preview` using the menu on the top of
+the box.
+
+.. image:: images/usertutorial/markdown.png
+
+To exit, select any other part of the dashboard. Finally, don’t forget
+to keep your changes using :guilabel:`Save changes`.
+
+Filter box
+----------
+
+In this section, you will learn how to add a filter to your dashboard.
+Specifically, we will create a filter that allows us to look at those
+flights that depart from a particular country.
+
+A filter box visualization can be created as any other visualization by
+selecting :menuselection:`New --> Chart`, and then
+:guilabel:`tutorial_flights` as the datasource and
+:guilabel:`Filter Box` as the visualization type.
+
+First of all, in the :guilabel:`Time` section, remove the filter from
+the :guilabel:`Time
+range` selection by selecting :guilabel:`No filter`.
+
+Next, in :guilabel:`Filters Configurations` first add a new filter by
+selecting the plus sign and then edit the newly created filter by
+selecting the pencil icon.
+
+For our use case, it makes most sense to present a list of countries in
+alphabetical order. First, enter the column as
+:guilabel:`Origin Country` and keep all other options the same and then
+select :guilabel:`Run Query`. This gives us a preview of our filter.
+
+Next, remove the date filter by unchecking the :guilabel:`Date Filter`
+checkbox.
+
+.. image:: images/usertutorial/filter_on_origin_country.png
+
+Finally, select :guilabel:`Save`, name the chart as Tutorial Filter, add
+the chart to our existing Tutorial Dashboard and then
+:guilabel:`Save & go to
+dashboard`. Once on the Dashboard, try using the filter to show only
+those flights that departed from the United Kingdom – you will see the
+filter is applied to all of the other visualizations on the dashboard.
+
+Publishing your dashboard
+-------------------------
+
+If you have followed all of the steps outlined in the previous section,
+you should have a dashboard that looks like the below. If you would
+like, you can rearrange the elements of the dashboard by selecting
+:guilabel:`Edit dashboard` and dragging and dropping.
+
+If you would like to make your dashboard available to other users,
+simply select :guilabel:`Draft` next to the title of your dashboard on
+the top left to change your dashboard to be in :guilabel:`Published`
+state. You can also favorite this dashboard by selecting the star.
+
+.. image:: images/usertutorial/publish_dashboard.png
+
+Taking your dashboard further
+-----------------------------
+
+In the following sections, we will look at more advanced Apache Superset
+topics.
+
+Annotations
+-----------
+
+Annotations allow you to add additional context to your chart. In this
+section, we will add an annotation to the Tutorial Line Chart we made in
+a previous section. Specifically, we will add the dates when some
+flights were cancelled by the UK's Civil Aviation Authority in response
+to the eruption of the Grímsvötn volcano in Iceland (23-25 May 2011).
+
+First, add an annotation layer by navigating to
+:menuselection:`Manage --> Annotation Layers`. Add a new annotation
+layer by selecting the green plus sign to add a new record. Enter the
+name Volcanic Eruptions and save. We can use this layer to refer to a
+number of different annotations.
+
+Next, add an annotation by navigating to
+:menuselection:`Manage --> Annotations` and then create a new annotation
+by selecting the green plus sign. Then, select the
+:guilabel:`Volcanic Eruptions` layer, add a short description Grímsvötn
+and the eruption dates (23-25 May 2011) before finally saving.
+
+.. image:: images/usertutorial/edit_annotation.png
+
+Then, navigate to the line chart by going to :guilabel:`Charts` then
+selecting :guilabel:`Tutorial
+Line Chart` from the list. Next, go to the
+:guilabel:`Annotations and Layers` section and select
+:guilabel:`Add Annotation Layer`. Within this dialogue:
+
+- name the layer as `Volcanic Eruptions`
+- change the :guilabel:`Annotation Layer Type` to :guilabel:`Event`
+- set the :guilabel:`Annotation Source` as :guilabel:`Superset annotation` 
+- specify the :guilabel:`Annotation Layer` as :guilabel:`Volcanic Eruptions`
+
+.. image:: images/usertutorial/annotation_settings.png
+
+Select :guilabel:`Apply` to see your annotation shown on the chart.
+
+.. image:: images/usertutorial/annotation.png
+
+If you wish, you can change how your annotation looks by changing the
+settings in the :guilabel:`Display configuration` section. Otherwise,
+select :guilabel:`OK` and finally :guilabel:`Save` to save your chart.
+If you keep the default selection to overwrite the chart, your
+annotation will be saved to the chart and also appear automatically in
+the Tutorial Dashboard.
+
+Advanced Analytics
+------------------
+
+In this section, we are going to explore the Advanced Analytics feature
+of Apache Superset that allows you to apply additional transformations
+to your data. The three types of transformation are:
+
+Moving Average
+  Select a rolling window [#f1]_, and then apply a calculation on it (mean,
+  sum or standard deviation). The fourth option, cumsum, calculates the
+  cumulative sum of the series [#f2]_.
+
+Time Comparison
+  Shift your data in time and, optionally, apply a calculation to compare the
+  shifted data with your actual data (e.g. calculate the absolute difference
+  between the two).
+
+Python Functions
+  Resample your data using one of a variety of methods [#f3]_.
+
+Setting up the base chart
+~~~~~~~~~~~~~~~~~~~~~~~~~
+
+In this section, we're going to set up a base chart which we can then
+apply the different Advanced Analytics features to. Start off by
+creating a new chart using the same :guilabel:`tutorial_flights`
+datasource and the :guilabel:`Line Chart` visualization type. Within the
+Time section, set the :guilabel:`Time Range` as 1\ :sup:`st` October
+2011 and 31\ :sup:`st` October 2011.
+
+Next, in the query section, change the :guilabel:`Metrics` to the sum of
+:guilabel:`Cost`. Select :guilabel:`Run Query` to show the chart. You
+should see the total cost per day for each month in October 2011.
+
+.. image:: images/usertutorial/advanced_analytics_base.png
+
+Finally, save the visualization as Tutorial Advanced Analytics Base,
+adding it to the Tutorial Dashboard.
+
+Rolling mean
+~~~~~~~~~~~~
+
+There is quite a lot of variation in the data, which makes it difficult
+to identify any trend. One approach we can take is to show instead a
+rolling average of the time series. To do this, in the
+:guilabel:`Moving Average` subsection of :guilabel:`Advanced Analytics`,
+select mean in the :guilabel:`Rolling` box and enter 7 into both Periods
+and Min Periods. The period is the length of the rolling period
+expressed as a multiple of the :guilabel:`Time Grain`. In our example,
+the :guilabel:`Time Grain` is day, so the rolling period is 7 days, such
+that on the 7th October 2011 the value shown would correspond to the
+first seven days of October 2011. Lastly, by specifying
+:guilabel:`Min Periods` as 7, we ensure that our mean is always
+calculated on 7 days and we avoid any ramp up period.
+
+After displaying the chart by selecting :guilabel:`Run Query` you will
+see that the data is less variable and that the series starts later as
+the ramp up period is excluded.
+
+.. image:: images/usertutorial/rolling_mean.png
+
+Save the chart as Tutorial Rolling Mean and add it to the Tutorial
+Dashboard.
+
+Time Comparison
+~~~~~~~~~~~~~~~
+
+In this section, we will compare values in our time series to the value
+a week before. Start off by opening the Tutorial Advanced Analytics Base
+chart, by going to :guilabel:`Charts` in the top menu and then selecting
+the visualization name in the list (alternatively, find the chart in the
+Tutorial Dashboard and select Explore chart from the menu for that
+visualization).
+
+Next, in the :guilabel:`Time Comparison` subsection of
+:guilabel:`Advanced Analytics`, enter the :guilabel:`Time Shift` by
+typing in "minus 1 week" (note this box accepts input in natural
+language). :guilabel:`Run Query` to see the new chart, which has an
+additional series with the same values, shifted a week back in time.
+
+.. image:: images/usertutorial/time_comparison_two_series.png
+
+Then, change the :guilabel:`Calculation type` to
+:guilabel:`Absolute difference` and select :guilabel:`Run
+Query`. We can now see only one series again, this time showing the
+difference between the two series we saw previously.
+
+.. image:: images/usertutorial/time_comparison_absolute_difference.png
+
+Save the chart as Tutorial Time Comparison and add it to the Tutorial
+Dashboard.
+
+Resampling the data
+~~~~~~~~~~~~~~~~~~~
+
+In this section, we'll resample the data so that rather than having
+daily data we have weekly data. As in the previous section, reopen the
+Tutorial Advanced Analytics Base chart.
+
+Next, in the :guilabel:`Python Functions` subsection of
+:guilabel:`Advanced Analytics`, enter 7D, corresponding to seven days,
+in the :guilabel:`Rule` and median as the :guilabel:`Method` and show
+the chart by selecting :guilabel:`Run Query`.
+
+.. image:: images/usertutorial/resample.png
+
+Note that now we have a single data point every 7 days. In our case, the
+value showed corresponds to the median value within the seven daily data
+points. For more information on the meaning of the various options in
+this section, refer to the `Pandas
+documentation <https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.resample.html>`__.
+
+Lastly, save your chart as Tutorial Resample and add it to the Tutorial
+Dashboard. Go to the tutorial dashboard to see the four charts side by
+side and compare the different outputs.
+
+.. rubric:: Footnotes
+
+.. [#f1] See the Pandas `rolling method documentation <https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.rolling.html>`_ for more information.
+.. [#f2] See the Pandas `cumsum method documentation <https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.cumsum.html>`_ for more information.
+.. [#f3] See the Pandas `resample method documentation <https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.resample.html>`_ for more information.
+
diff --git a/admintutorial.html b/admintutorial.html
new file mode 100644
index 0000000..40e5436
--- /dev/null
+++ b/admintutorial.html
@@ -0,0 +1,421 @@
+
+
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+  <meta charset="utf-8">
+  
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  
+  <title>Creating your first dashboard &mdash; Apache Superset  documentation</title>
+  
+
+  
+  
+  
+  
+
+  
+  <script type="text/javascript" src="_static/js/modernizr.min.js"></script>
+  
+    
+      <script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
+        <script type="text/javascript" src="_static/jquery.js"></script>
+        <script type="text/javascript" src="_static/underscore.js"></script>
+        <script type="text/javascript" src="_static/doctools.js"></script>
+        <script type="text/javascript" src="_static/language_data.js"></script>
+    
+    <script type="text/javascript" src="_static/js/theme.js"></script>
+
+    
+
+  
+  <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+    <link rel="index" title="Index" href="genindex.html" />
+    <link rel="search" title="Search" href="search.html" />
+    <link rel="next" title="Exploring data with Apache Superset" href="usertutorial.html" />
+    <link rel="prev" title="Tutorials" href="tutorials.html" /> 
+</head>
+
+<body class="wy-body-for-nav">
+
+   
+  <div class="wy-grid-for-nav">
+    
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side">
+      <div class="wy-side-scroll">
+        <div class="wy-side-nav-search" >
+          
+
+          
+            <a href="index.html" class="icon icon-home"> Apache Superset
+          
+
+          
+          </a>
+
+          
+            
+            
+          
+
+          
+<div role="search">
+  <form id="rtd-search-form" class="wy-form" action="search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" />
+    <input type="hidden" name="check_keywords" value="yes" />
+    <input type="hidden" name="area" value="default" />
+  </form>
+</div>
+
+          
+        </div>
+
+        <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+          
+            
+            
+              
+            
+            
+              <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="installation.html">Installation &amp; Configuration</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="tutorials.html">Tutorials</a><ul class="current">
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Creating your first dashboard</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#connecting-to-a-new-database">Connecting to a new database</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#adding-a-new-table">Adding a new table</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#exploring-your-data">Exploring your data</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#creating-a-slice-and-dashboard">Creating a slice and dashboard</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="usertutorial.html">Exploring data with Apache Superset</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="security.html">Security</a></li>
+<li class="toctree-l1"><a class="reference internal" href="sqllab.html">SQL Lab</a></li>
+<li class="toctree-l1"><a class="reference internal" href="gallery.html">Visualizations Gallery</a></li>
+<li class="toctree-l1"><a class="reference internal" href="druid.html">Druid</a></li>
+<li class="toctree-l1"><a class="reference internal" href="misc.html">Misc</a></li>
+<li class="toctree-l1"><a class="reference internal" href="faq.html">FAQ</a></li>
+</ul>
+
+            
+          
+        </div>
+      </div>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" aria-label="top navigation">
+        
+          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+          <a href="index.html">Apache Superset</a>
+        
+      </nav>
+
+
+      <div class="wy-nav-content">
+        
+        <div class="rst-content">
+        
+          
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+
+  <ul class="wy-breadcrumbs">
+    
+      <li><a href="index.html">Docs</a> &raquo;</li>
+        
+          <li><a href="tutorials.html">Tutorials</a> &raquo;</li>
+        
+      <li>Creating your first dashboard</li>
+    
+    
+      <li class="wy-breadcrumbs-aside">
+        
+            
+        
+      </li>
+    
+  </ul>
+
+  
+  <hr/>
+</div>
+          <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
+           <div itemprop="articleBody">
+            
+  <div class="section" id="creating-your-first-dashboard">
+<h1>Creating your first dashboard<a class="headerlink" href="#creating-your-first-dashboard" title="Permalink to this headline">¶</a></h1>
+<p>This tutorial targets someone who wants to create charts and dashboards
+in Superset. We’ll show you how to connect Superset
+to a new database and configure a table in that database for analysis. You’ll
+also explore the data you’ve exposed and add a visualization to a dashboard
+so that you get a feel for the end-to-end user experience.</p>
+<div class="section" id="connecting-to-a-new-database">
+<h2>Connecting to a new database<a class="headerlink" href="#connecting-to-a-new-database" title="Permalink to this headline">¶</a></h2>
+<p>We assume you already have a database configured and can connect to it from the
+instance on which you’re running Superset. If you’re just testing Superset and
+want to explore sample data, you can load some
+<a class="reference external" href="https://wiki.postgresql.org/wiki/Sample_Databases">sample PostgreSQL datasets</a>
+into a fresh DB, or configure the
+<a class="reference external" href="https://github.com/dylburger/noaa-ghcn-weather-data">example weather data</a>
+we use here.</p>
+<p>Under the <strong>Sources</strong> menu, select the <em>Databases</em> option:</p>
+<a class="reference internal image-reference" href="_images/tutorial_01_sources_database.png"><img alt="_images/tutorial_01_sources_database.png" src="_images/tutorial_01_sources_database.png" style="width: 316.4px; height: 187.6px;" /></a>
+<p>On the resulting page, click on the green plus sign, near the top right:</p>
+<a class="reference internal image-reference" href="_images/tutorial_02_add_database.png"><img alt="_images/tutorial_02_add_database.png" src="_images/tutorial_02_add_database.png" style="width: 359.79999999999995px; height: 270.2px;" /></a>
+<p>You can configure a number of advanced options on this page, but for
+this walkthrough, you’ll only need to do <strong>two things</strong>:</p>
+<ol class="arabic simple">
+<li><p>Name your database connection:</p></li>
+</ol>
+<a class="reference internal image-reference" href="_images/tutorial_03_database_name.png"><img alt="_images/tutorial_03_database_name.png" src="_images/tutorial_03_database_name.png" style="width: 554.4px; height: 98.0px;" /></a>
+<ol class="arabic simple" start="2">
+<li><p>Provide the SQLAlchemy Connection URI and test the connection:</p></li>
+</ol>
+<a class="reference internal image-reference" href="_images/tutorial_04_sqlalchemy_connection_string.png"><img alt="_images/tutorial_04_sqlalchemy_connection_string.png" src="_images/tutorial_04_sqlalchemy_connection_string.png" style="width: 1071.0px; height: 196.0px;" /></a>
+<p>This example shows the connection string for our test weather database.
+As noted in the text below the URI, you should refer to the SQLAlchemy
+documentation on
+<a class="reference external" href="https://docs.sqlalchemy.org/en/rel_1_2/core/engines.html#database-urls">creating new connection URIs</a>
+for your target database.</p>
+<p>Click the <strong>Test Connection</strong> button to confirm things work end to end.
+Once Superset can successfully connect and authenticate, you should see
+a popup like this:</p>
+<a class="reference internal image-reference" href="_images/tutorial_05_connection_popup.png"><img alt="_images/tutorial_05_connection_popup.png" src="_images/tutorial_05_connection_popup.png" style="width: 562.0px; height: 277.0px;" /></a>
+<p>Moreover, you should also see the list of tables Superset can read from
+the schema you’re connected to, at the bottom of the page:</p>
+<a class="reference internal image-reference" href="_images/tutorial_06_list_of_tables.png"><img alt="_images/tutorial_06_list_of_tables.png" src="_images/tutorial_06_list_of_tables.png" style="width: 963.1999999999999px; height: 127.39999999999999px;" /></a>
+<p>If the connection looks good, save the configuration by clicking the <strong>Save</strong>
+button at the bottom of the page:</p>
+<a class="reference internal image-reference" href="_images/tutorial_07_save_button.png"><img alt="_images/tutorial_07_save_button.png" src="_images/tutorial_07_save_button.png" style="width: 187.6px; height: 85.39999999999999px;" /></a>
+</div>
+<div class="section" id="adding-a-new-table">
+<h2>Adding a new table<a class="headerlink" href="#adding-a-new-table" title="Permalink to this headline">¶</a></h2>
+<p>Now that you’ve configured a database, you’ll need to add specific tables
+to Superset that you’d like to query.</p>
+<p>Under the <strong>Sources</strong> menu, select the <em>Tables</em> option:</p>
+<a class="reference internal image-reference" href="_images/tutorial_08_sources_tables.png"><img alt="_images/tutorial_08_sources_tables.png" src="_images/tutorial_08_sources_tables.png" style="width: 315.0px; height: 187.6px;" /></a>
+<p>On the resulting page, click on the green plus sign, near the top left:</p>
+<a class="reference internal image-reference" href="_images/tutorial_09_add_new_table.png"><img alt="_images/tutorial_09_add_new_table.png" src="_images/tutorial_09_add_new_table.png" style="width: 322.0px; height: 232.39999999999998px;" /></a>
+<p>You only need a few pieces of information to add a new table to Superset:</p>
+<ul class="simple">
+<li><p>The name of the table</p></li>
+</ul>
+<a class="reference internal image-reference" href="_images/tutorial_10_table_name.png"><img alt="_images/tutorial_10_table_name.png" src="_images/tutorial_10_table_name.png" style="width: 772.8px; height: 130.2px;" /></a>
+<ul class="simple">
+<li><p>The target database from the <strong>Database</strong> drop-down menu (i.e. the one
+you just added above)</p></li>
+</ul>
+<a class="reference internal image-reference" href="_images/tutorial_11_choose_db.png"><img alt="_images/tutorial_11_choose_db.png" src="_images/tutorial_11_choose_db.png" style="width: 387.79999999999995px; height: 229.6px;" /></a>
+<ul class="simple">
+<li><p>Optionally, the database schema. If the table exists in the “default” schema
+(e.g. the <em>public</em> schema in PostgreSQL or Redshift), you can leave the schema
+field blank.</p></li>
+</ul>
+<p>Click on the <strong>Save</strong> button to save the configuration:</p>
+<a class="reference internal image-reference" href="_images/tutorial_07_save_button.png"><img alt="_images/tutorial_07_save_button.png" src="_images/tutorial_07_save_button.png" style="width: 187.6px; height: 85.39999999999999px;" /></a>
+<p>When redirected back to the list of tables, you should see a message indicating
+that your table was created:</p>
+<a class="reference internal image-reference" href="_images/tutorial_12_table_creation_success_msg.png"><img alt="_images/tutorial_12_table_creation_success_msg.png" src="_images/tutorial_12_table_creation_success_msg.png" style="width: 1260.0px; height: 89.6px;" /></a>
+<p>This message also directs you to edit the table configuration. We’ll edit a limited
+portion of the configuration now - just to get you started - and leave the rest for
+a more advanced tutorial.</p>
+<p>Click on the edit button next to the table you’ve created:</p>
+<a class="reference internal image-reference" href="_images/tutorial_13_edit_table_config.png"><img alt="_images/tutorial_13_edit_table_config.png" src="_images/tutorial_13_edit_table_config.png" style="width: 509.59999999999997px; height: 180.6px;" /></a>
+<p>On the resulting page, click on the <strong>List Table Column</strong> tab. Here, you’ll define the
+way you can use specific columns of your table when exploring your data. We’ll run
+through these options to describe their purpose:</p>
+<ul class="simple">
+<li><p>If you want users to group metrics by a specific field, mark it as <strong>Groupable</strong>.</p></li>
+<li><p>If you need to filter on a specific field, mark it as <strong>Filterable</strong>.</p></li>
+<li><p>Is this field something you’d like to get the distinct count of? Check the <strong>Count
+Distinct</strong> box.</p></li>
+<li><p>Is this a metric you want to sum, or get basic summary statistics for? The <strong>Sum</strong>,
+<strong>Min</strong>, and <strong>Max</strong> columns will help.</p></li>
+<li><p>The <strong>is temporal</strong> field should be checked for any date or time fields. We’ll cover
+how this manifests itself in analyses in a moment.</p></li>
+</ul>
+<p>Here’s how we’ve configured fields for the weather data. Even for measures like the
+weather measurements (precipitation, snowfall, etc.), it’s ideal to group and filter
+by these values:</p>
+<img alt="_images/tutorial_14_field_config.png" src="_images/tutorial_14_field_config.png" />
+<p>As with the configurations above, click the <strong>Save</strong> button to save these settings.</p>
+</div>
+<div class="section" id="exploring-your-data">
+<h2>Exploring your data<a class="headerlink" href="#exploring-your-data" title="Permalink to this headline">¶</a></h2>
+<p>To start exploring your data, simply click on the table name you just created in
+the list of available tables:</p>
+<img alt="_images/tutorial_15_click_table_name.png" src="_images/tutorial_15_click_table_name.png" />
+<p>By default, you’ll be presented with a Table View:</p>
+<img alt="_images/tutorial_16_datasource_chart_type.png" src="_images/tutorial_16_datasource_chart_type.png" />
+<p>Let’s walk through a basic query to get the count of all records in our table.
+First, we’ll need to change the <strong>Since</strong> filter to capture the range of our data.
+You can use simple phrases to apply these filters, like “3 years ago”:</p>
+<img alt="_images/tutorial_17_choose_time_range.png" src="_images/tutorial_17_choose_time_range.png" />
+<p>The upper limit for time, the <strong>Until</strong> filter, defaults to “now”, which may or may
+not be what you want.</p>
+<p>Look for the Metrics section under the <strong>GROUP BY</strong> header, and start typing “Count”
+- you’ll see a list of metrics matching what you type:</p>
+<img alt="_images/tutorial_18_choose_metric.png" src="_images/tutorial_18_choose_metric.png" />
+<p>Select the <em>COUNT(*)</em> metric, then click the green <strong>Query</strong> button near the top
+of the explore:</p>
+<img alt="_images/tutorial_19_click_query.png" src="_images/tutorial_19_click_query.png" />
+<p>You’ll see your results in the table:</p>
+<img alt="_images/tutorial_20_count_star_result.png" src="_images/tutorial_20_count_star_result.png" />
+<p>Let’s group this by the <em>weather_description</em> field to get the count of records by
+the type of weather recorded by adding it to the <em>Group by</em> section:</p>
+<img alt="_images/tutorial_21_group_by.png" src="_images/tutorial_21_group_by.png" />
+<p>and run the query:</p>
+<img alt="_images/tutorial_22_group_by_result.png" src="_images/tutorial_22_group_by_result.png" />
+<p>Let’s find a more useful data point: the top 10 times and places that recorded the
+highest temperature in 2015.</p>
+<p>We replace <em>weather_description</em> with <em>latitude</em>, <em>longitude</em> and <em>measurement_date</em> in the
+<em>Group by</em> section:</p>
+<img alt="_images/tutorial_23_group_by_more_dimensions.png" src="_images/tutorial_23_group_by_more_dimensions.png" />
+<p>And replace <em>COUNT(*)</em> with <em>max__measurement_flag</em>:</p>
+<img alt="_images/tutorial_24_max_metric.png" src="_images/tutorial_24_max_metric.png" />
+<p>The <em>max__measurement_flag</em> metric was created when we checked the box under <strong>Max</strong> and
+next to the <em>measurement_flag</em> field, indicating that this field was numeric and that
+we wanted to find its maximum value when grouped by specific fields.</p>
+<p>In our case, <em>measurement_flag</em> is the value of the measurement taken, which clearly
+depends on the type of measurement (the researchers recorded different values for
+precipitation and temperature). Therefore, we must filter our query only on records
+where the <em>weather_description</em> is equal to “Maximum temperature”, which we do in
+the <strong>Filters</strong> section at the bottom of the explore:</p>
+<img alt="_images/tutorial_25_max_temp_filter.png" src="_images/tutorial_25_max_temp_filter.png" />
+<p>Finally, since we only care about the top 10 measurements, we limit our results to
+10 records using the <em>Row limit</em> option under the <strong>Options</strong> header:</p>
+<img alt="_images/tutorial_26_row_limit.png" src="_images/tutorial_26_row_limit.png" />
+<p>We click <strong>Query</strong> and get the following results:</p>
+<img alt="_images/tutorial_27_top_10_max_temps.png" src="_images/tutorial_27_top_10_max_temps.png" />
+<p>In this dataset, the maximum temperature is recorded in tenths of a degree Celsius.
+The top value of 1370, measured in the middle of Nevada, is equal to 137 C, or roughly
+278 degrees F. It’s unlikely this value was correctly recorded. We’ve already been able
+to investigate some outliers with Superset, but this just scratches the surface of what
+we can do.</p>
+<p>You may want to do a couple more things with this measure:</p>
+<ul class="simple">
+<li><p>The default formatting shows values like 1.37k, which may be difficult for some
+users to read. It’s likely you may want to see the full, comma-separated value.
+You can change the formatting of any measure by editing its config (<em>Edit Table
+Config &gt; List Sql Metric &gt; Edit Metric &gt; D3Format</em>)</p></li>
+<li><p>Moreover, you may want to see the temperature measurements in plain degrees C,
+not tenths of a degree. Or you may want to convert the temperature to degrees
+Fahrenheit. You can change the SQL that gets executed against the database, baking
+the logic into the measure itself (<em>Edit Table Config &gt; List Sql Metric &gt; Edit
+Metric &gt; SQL Expression</em>)</p></li>
+</ul>
+<p>For now, though, let’s create a better visualization of these data and add it to
+a dashboard.</p>
+<p>We change the Chart Type to “Distribution - Bar Chart”:</p>
+<img alt="_images/tutorial_28_bar_chart.png" src="_images/tutorial_28_bar_chart.png" />
+<p>Our filter on Maximum temperature measurements was retained, but the query and
+formatting options are dependent on the chart type, so you’ll have to set the
+values again:</p>
+<img alt="_images/tutorial_29_bar_chart_series_metrics.png" src="_images/tutorial_29_bar_chart_series_metrics.png" />
+<p>You should note the extensive formatting options for this chart: the ability to
+set axis labels, margins, ticks, etc. To make the data presentable to a broad
+audience, you’ll want to apply many of these to slices that end up in dashboards.
+For now, though, we run our query and get the following chart:</p>
+<a class="reference internal image-reference" href="_images/tutorial_30_bar_chart_results.png"><img alt="_images/tutorial_30_bar_chart_results.png" src="_images/tutorial_30_bar_chart_results.png" style="width: 956.9px; height: 435.4px;" /></a>
+</div>
+<div class="section" id="creating-a-slice-and-dashboard">
+<h2>Creating a slice and dashboard<a class="headerlink" href="#creating-a-slice-and-dashboard" title="Permalink to this headline">¶</a></h2>
+<p>This view might be interesting to researchers, so let’s save it. In Superset,
+a saved query is called a <strong>Slice</strong>.</p>
+<p>To create a slice, click the <strong>Save as</strong> button near the top-left of the
+explore:</p>
+<img alt="_images/tutorial_19_click_query.png" src="_images/tutorial_19_click_query.png" />
+<p>A popup should appear, asking you to name the slice, and optionally add it to a
+dashboard. Since we haven’t yet created any dashboards, we can create one and
+immediately add our slice to it. Let’s do it:</p>
+<a class="reference internal image-reference" href="_images/tutorial_31_save_slice_to_dashboard.png"><img alt="_images/tutorial_31_save_slice_to_dashboard.png" src="_images/tutorial_31_save_slice_to_dashboard.png" style="width: 432.59999999999997px; height: 268.79999999999995px;" /></a>
+<p>Click Save, which will direct you back to your original query. We see that
+our slice and dashboard were successfully created:</p>
+<a class="reference internal image-reference" href="_images/tutorial_32_save_slice_confirmation.png"><img alt="_images/tutorial_32_save_slice_confirmation.png" src="_images/tutorial_32_save_slice_confirmation.png" style="width: 611.8px; height: 105.69999999999999px;" /></a>
+<p>Let’s check out our new dashboard. We click on the <strong>Dashboards</strong> menu:</p>
+<img alt="_images/tutorial_33_dashboard.png" src="_images/tutorial_33_dashboard.png" />
+<p>and find the dashboard we just created:</p>
+<img alt="_images/tutorial_34_weather_dashboard.png" src="_images/tutorial_34_weather_dashboard.png" />
+<p>Things seemed to have worked - our slice is here!</p>
+<a class="reference internal image-reference" href="_images/tutorial_35_slice_on_dashboard.png"><img alt="_images/tutorial_35_slice_on_dashboard.png" src="_images/tutorial_35_slice_on_dashboard.png" style="width: 464.79999999999995px; height: 397.59999999999997px;" /></a>
+<p>But it’s a bit smaller than we might like. Luckily, you can adjust the size
+of slices in a dashboard by clicking, holding and dragging the bottom-right
+corner to your desired dimensions:</p>
+<a class="reference internal image-reference" href="_images/tutorial_36_adjust_dimensions.gif"><img alt="_images/tutorial_36_adjust_dimensions.gif" src="_images/tutorial_36_adjust_dimensions.gif" style="width: 576.0px; height: 297.59999999999997px;" /></a>
+<p>After adjusting the size, you’ll be asked to click on the icon near the
+top-right of the dashboard to save the new configuration.</p>
+<p>Congrats! You’ve successfully linked, analyzed, and visualized data in Superset.
+There are a wealth of other table configuration and visualization options, so
+please start exploring and creating slices and dashboards of your own.</p>
+</div>
+</div>
+
+
+           </div>
+           
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="usertutorial.html" class="btn btn-neutral float-right" title="Exploring data with Apache Superset" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
+      
+      
+        <a href="tutorials.html" class="btn btn-neutral float-left" title="Tutorials" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+
+    </p>
+  </div> 
+
+</footer>
+
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+
+  <script type="text/javascript">
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script>
+
+  
+  
+    
+   
+
+</body>
+</html>
\ No newline at end of file
diff --git a/genindex.html b/genindex.html
index ca3e720..bf9efde 100644
--- a/genindex.html
+++ b/genindex.html
@@ -154,8 +154,76 @@
 <h1 id="index">Index</h1>
 
 <div class="genindex-jumpbox">
+ <a href="#C"><strong>C</strong></a>
+ | <a href="#F"><strong>F</strong></a>
+ | <a href="#H"><strong>H</strong></a>
+ | <a href="#L"><strong>L</strong></a>
+ | <a href="#P"><strong>P</strong></a>
+ | <a href="#U"><strong>U</strong></a>
  
 </div>
+<h2 id="C">C</h2>
+<table style="width: 100%" class="indextable genindextable"><tr>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="sqllab.html#superset.jinja_context.CacheKeyWrapper.cache_key_wrapper">cache_key_wrapper() (in module superset.jinja_context.CacheKeyWrapper)</a>
+</li>
+  </ul></td>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="sqllab.html#superset.jinja_context.current_user_id">current_user_id() (in module superset.jinja_context)</a>
+</li>
+      <li><a href="sqllab.html#superset.jinja_context.current_username">current_username() (in module superset.jinja_context)</a>
+</li>
+  </ul></td>
+</tr></table>
+
+<h2 id="F">F</h2>
+<table style="width: 100%" class="indextable genindextable"><tr>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="sqllab.html#superset.jinja_context.filter_values">filter_values() (in module superset.jinja_context)</a>
+</li>
+  </ul></td>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="sqllab.html#superset.jinja_context.PrestoTemplateProcessor.first_latest_partition">first_latest_partition() (superset.jinja_context.PrestoTemplateProcessor method)</a>
+</li>
+  </ul></td>
+</tr></table>
+
+<h2 id="H">H</h2>
+<table style="width: 100%" class="indextable genindextable"><tr>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="sqllab.html#superset.jinja_context.HiveTemplateProcessor">HiveTemplateProcessor (class in superset.jinja_context)</a>
+</li>
+  </ul></td>
+</tr></table>
+
+<h2 id="L">L</h2>
+<table style="width: 100%" class="indextable genindextable"><tr>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="sqllab.html#superset.jinja_context.PrestoTemplateProcessor.latest_partition">latest_partition() (superset.jinja_context.PrestoTemplateProcessor method)</a>
+</li>
+  </ul></td>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="sqllab.html#superset.jinja_context.PrestoTemplateProcessor.latest_partitions">latest_partitions() (superset.jinja_context.PrestoTemplateProcessor method)</a>
+</li>
+  </ul></td>
+</tr></table>
+
+<h2 id="P">P</h2>
+<table style="width: 100%" class="indextable genindextable"><tr>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="sqllab.html#superset.jinja_context.PrestoTemplateProcessor">PrestoTemplateProcessor (class in superset.jinja_context)</a>
+</li>
+  </ul></td>
+</tr></table>
+
+<h2 id="U">U</h2>
+<table style="width: 100%" class="indextable genindextable"><tr>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="sqllab.html#superset.jinja_context.url_param">url_param() (in module superset.jinja_context)</a>
+</li>
+  </ul></td>
+</tr></table>
+
 
 
            </div>
diff --git a/installation.html b/installation.html
index 89e4f78..77803b7 100644
--- a/installation.html
+++ b/installation.html
@@ -494,6 +494,122 @@ You’ll need to install the required packages for the database you
 want to use as your metadata database as well as the packages needed to
 connect to the databases you want to access through Superset.</p>
 <p>Here’s a list of some of the recommended packages.</p>
+<table class="docutils align-default">
+<colgroup>
+<col style="width: 17%" />
+<col style="width: 37%" />
+<col style="width: 46%" />
+</colgroup>
+<thead>
+<tr class="row-odd"><th class="head"><p>database</p></th>
+<th class="head"><p>pypi package</p></th>
+<th class="head"><p>SQLAlchemy URI prefix</p></th>
+</tr>
+</thead>
+<tbody>
+<tr class="row-even"><td><p>Amazon Athena</p></td>
+<td><p><code class="docutils literal notranslate"><span class="pre">pip</span> <span class="pre">install</span> <span class="pre">&quot;PyAthenaJDBC&gt;1.0.9&quot;</span></code></p></td>
+<td><p><code class="docutils literal notranslate"><span class="pre">awsathena+jdbc://</span></code></p></td>
+</tr>
+<tr class="row-odd"><td><p>Amazon Athena</p></td>
+<td><p><code class="docutils literal notranslate"><span class="pre">pip</span> <span class="pre">install</span> <span class="pre">&quot;PyAthena&gt;1.2.0&quot;</span></code></p></td>
+<td><p><code class="docutils literal notranslate"><span class="pre">awsathena+rest://</span></code></p></td>
+</tr>
+<tr class="row-even"><td><p>Amazon Redshift</p></td>
+<td><p><code class="docutils literal notranslate"><span class="pre">pip</span> <span class="pre">install</span> <span class="pre">sqlalchemy-redshift</span></code></p></td>
+<td><p><code class="docutils literal notranslate"><span class="pre">redshift+psycopg2://</span></code></p></td>
+</tr>
+<tr class="row-odd"><td><p>Apache Drill</p></td>
+<td><p><code class="docutils literal notranslate"><span class="pre">pip</span> <span class="pre">install</span> <span class="pre">sqlalchemy-drill</span></code></p></td>
+<td><p>For the REST API:``
+<code class="docutils literal notranslate"><span class="pre">drill+sadrill://</span></code>
+For JDBC
+<code class="docutils literal notranslate"><span class="pre">drill+jdbc://</span></code></p></td>
+</tr>
+<tr class="row-even"><td><p>Apache Druid</p></td>
+<td><p><code class="docutils literal notranslate"><span class="pre">pip</span> <span class="pre">install</span> <span class="pre">pydruid</span></code></p></td>
+<td><p><code class="docutils literal notranslate"><span class="pre">druid://</span></code></p></td>
+</tr>
+<tr class="row-odd"><td><p>Apache Hive</p></td>
+<td><p><code class="docutils literal notranslate"><span class="pre">pip</span> <span class="pre">install</span> <span class="pre">pyhive</span></code></p></td>
+<td><p><code class="docutils literal notranslate"><span class="pre">hive://</span></code></p></td>
+</tr>
+<tr class="row-even"><td><p>Apache Impala</p></td>
+<td><p><code class="docutils literal notranslate"><span class="pre">pip</span> <span class="pre">install</span> <span class="pre">impyla</span></code></p></td>
+<td><p><code class="docutils literal notranslate"><span class="pre">impala://</span></code></p></td>
+</tr>
+<tr class="row-odd"><td><p>Apache Kylin</p></td>
+<td><p><code class="docutils literal notranslate"><span class="pre">pip</span> <span class="pre">install</span> <span class="pre">kylinpy</span></code></p></td>
+<td><p><code class="docutils literal notranslate"><span class="pre">kylin://</span></code></p></td>
+</tr>
+<tr class="row-even"><td><p>Apache Pinot</p></td>
+<td><p><code class="docutils literal notranslate"><span class="pre">pip</span> <span class="pre">install</span> <span class="pre">pinotdb</span></code></p></td>
+<td><p><code class="docutils literal notranslate"><span class="pre">pinot+http://CONTROLLER:5436/</span></code>
+<code class="docutils literal notranslate"><span class="pre">query?server=http://CONTROLLER:5983/</span></code></p></td>
+</tr>
+<tr class="row-odd"><td><p>Apache Spark SQL</p></td>
+<td><p><code class="docutils literal notranslate"><span class="pre">pip</span> <span class="pre">install</span> <span class="pre">pyhive</span></code></p></td>
+<td><p><code class="docutils literal notranslate"><span class="pre">jdbc+hive://</span></code></p></td>
+</tr>
+<tr class="row-even"><td><p>BigQuery</p></td>
+<td><p><code class="docutils literal notranslate"><span class="pre">pip</span> <span class="pre">install</span> <span class="pre">pybigquery</span></code></p></td>
+<td><p><code class="docutils literal notranslate"><span class="pre">bigquery://</span></code></p></td>
+</tr>
+<tr class="row-odd"><td><p>ClickHouse</p></td>
+<td><p><code class="docutils literal notranslate"><span class="pre">pip</span> <span class="pre">install</span> <span class="pre">sqlalchemy-clickhouse</span></code></p></td>
+<td></td>
+</tr>
+<tr class="row-even"><td><p>Exasol</p></td>
+<td><p><code class="docutils literal notranslate"><span class="pre">pip</span> <span class="pre">install</span> <span class="pre">sqlalchemy-exasol</span></code></p></td>
+<td><p><code class="docutils literal notranslate"><span class="pre">exa+pyodbc://</span></code></p></td>
+</tr>
+<tr class="row-odd"><td><p>Google Sheets</p></td>
+<td><p><code class="docutils literal notranslate"><span class="pre">pip</span> <span class="pre">install</span> <span class="pre">gsheetsdb</span></code></p></td>
+<td><p><code class="docutils literal notranslate"><span class="pre">gsheets://</span></code></p></td>
+</tr>
+<tr class="row-even"><td><p>IBM Db2</p></td>
+<td><p><code class="docutils literal notranslate"><span class="pre">pip</span> <span class="pre">install</span> <span class="pre">ibm_db_sa</span></code></p></td>
+<td><p><code class="docutils literal notranslate"><span class="pre">db2+ibm_db://</span></code></p></td>
+</tr>
+<tr class="row-odd"><td><p>MySQL</p></td>
+<td><p><code class="docutils literal notranslate"><span class="pre">pip</span> <span class="pre">install</span> <span class="pre">mysqlclient</span></code></p></td>
+<td><p><code class="docutils literal notranslate"><span class="pre">mysql://</span></code></p></td>
+</tr>
+<tr class="row-even"><td><p>Oracle</p></td>
+<td><p><code class="docutils literal notranslate"><span class="pre">pip</span> <span class="pre">install</span> <span class="pre">cx_Oracle</span></code></p></td>
+<td><p><code class="docutils literal notranslate"><span class="pre">oracle://</span></code></p></td>
+</tr>
+<tr class="row-odd"><td><p>PostgreSQL</p></td>
+<td><p><code class="docutils literal notranslate"><span class="pre">pip</span> <span class="pre">install</span> <span class="pre">psycopg2</span></code></p></td>
+<td><p><code class="docutils literal notranslate"><span class="pre">postgresql+psycopg2://</span></code></p></td>
+</tr>
+<tr class="row-even"><td><p>Presto</p></td>
+<td><p><code class="docutils literal notranslate"><span class="pre">pip</span> <span class="pre">install</span> <span class="pre">pyhive</span></code></p></td>
+<td><p><code class="docutils literal notranslate"><span class="pre">presto://</span></code></p></td>
+</tr>
+<tr class="row-odd"><td><p>Snowflake</p></td>
+<td><p><code class="docutils literal notranslate"><span class="pre">pip</span> <span class="pre">install</span> <span class="pre">snowflake-sqlalchemy</span></code></p></td>
+<td><p><code class="docutils literal notranslate"><span class="pre">snowflake://</span></code></p></td>
+</tr>
+<tr class="row-even"><td><p>SQLite</p></td>
+<td></td>
+<td><p><code class="docutils literal notranslate"><span class="pre">sqlite://</span></code></p></td>
+</tr>
+<tr class="row-odd"><td><p>SQL Server</p></td>
+<td><p><code class="docutils literal notranslate"><span class="pre">pip</span> <span class="pre">install</span> <span class="pre">pymssql</span></code></p></td>
+<td><p><code class="docutils literal notranslate"><span class="pre">mssql://</span></code></p></td>
+</tr>
+<tr class="row-even"><td><p>Teradata</p></td>
+<td><p><code class="docutils literal notranslate"><span class="pre">pip</span> <span class="pre">install</span> <span class="pre">sqlalchemy-teradata</span></code></p></td>
+<td><p><code class="docutils literal notranslate"><span class="pre">teradata://</span></code></p></td>
+</tr>
+<tr class="row-odd"><td><p>Vertica</p></td>
+<td><p><code class="docutils literal notranslate"><span class="pre">pip</span> <span class="pre">install</span>
+<span class="pre">sqlalchemy-vertica-python</span></code></p></td>
+<td><p><code class="docutils literal notranslate"><span class="pre">vertica+vertica_python://</span></code></p></td>
+</tr>
+</tbody>
+</table>
 <p>Note that many other databases are supported, the main criteria being the
 existence of a functional SqlAlchemy dialect and Python driver. Googling
 the keyword <code class="docutils literal notranslate"><span class="pre">sqlalchemy</span></code> in addition of a keyword that describes the
diff --git a/objects.inv b/objects.inv
index 1eaca94..1290054 100644
Binary files a/objects.inv and b/objects.inv differ
diff --git a/searchindex.js b/searchindex.js
index a9b2ec1..9f3c493 100644
--- a/searchindex.js
+++ b/searchindex.js
@@ -1 +1 @@
-Search.setIndex({docnames:["druid","faq","gallery","import_export_datasources","index","installation","misc","security","sqllab","tutorial","videos","visualization"],envversion:{"sphinx.domains.c":1,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":1,"sphinx.domains.javascript":1,"sphinx.domains.math":2,"sphinx.domains.python":1,"sphinx.domains.rst":1,"sphinx.domains.std":1,"sphinx.ext.viewcode":1,sphinx:56},filenames:["druid.rst","faq.rst","gallery.rst","impo [...]
\ No newline at end of file
+Search.setIndex({docnames:["druid","faq","gallery","import_export_datasources","index","installation","misc","security","sqllab","tutorial","videos","visualization"],envversion:{"sphinx.domains.c":1,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":1,"sphinx.domains.javascript":1,"sphinx.domains.math":2,"sphinx.domains.python":1,"sphinx.domains.rst":1,"sphinx.domains.std":1,"sphinx.ext.viewcode":1,sphinx:56},filenames:["druid.rst","faq.rst","gallery.rst","impo [...]
\ No newline at end of file
diff --git a/sqllab.html b/sqllab.html
index 3023591..dd8297d 100644
--- a/sqllab.html
+++ b/sqllab.html
@@ -219,6 +219,198 @@ Superset’s Jinja context:</p>
 <li><p><code class="docutils literal notranslate"><span class="pre">relativedelta</span></code>: <code class="docutils literal notranslate"><span class="pre">dateutil.relativedelta.relativedelta</span></code></p></li>
 </ul>
 <p><a class="reference external" href="http://jinja.pocoo.org/docs/dev/templates/">Jinja’s builtin filters</a> can be also be applied where needed.</p>
+<dl class="function">
+<dt id="superset.jinja_context.current_user_id">
+<code class="sig-prename descclassname">superset.jinja_context.</code><code class="sig-name descname">current_user_id</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/superset/jinja_context.html#current_user_id"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#superset.jinja_context.current_user_id" title="Permalink to this definition">¶</a></dt>
+<dd><p>The id of the user who is currently logged in</p>
+<dl class="field-list simple">
+<dt class="field-odd">Return type</dt>
+<dd class="field-odd"><p><code class="xref py py-data docutils literal notranslate"><span class="pre">Optional</span></code>[<code class="xref py py-class docutils literal notranslate"><span class="pre">int</span></code>]</p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="function">
+<dt id="superset.jinja_context.current_username">
+<code class="sig-prename descclassname">superset.jinja_context.</code><code class="sig-name descname">current_username</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/superset/jinja_context.html#current_username"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#superset.jinja_context.current_username" title="Permalink to this definition">¶</a></dt>
+<dd><p>The username of the user who is currently logged in</p>
+<dl class="field-list simple">
+<dt class="field-odd">Return type</dt>
+<dd class="field-odd"><p><code class="xref py py-data docutils literal notranslate"><span class="pre">Optional</span></code>[<code class="xref py py-class docutils literal notranslate"><span class="pre">str</span></code>]</p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="function">
+<dt id="superset.jinja_context.url_param">
+<code class="sig-prename descclassname">superset.jinja_context.</code><code class="sig-name descname">url_param</code><span class="sig-paren">(</span><em class="sig-param">param</em>, <em class="sig-param">default=None</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/superset/jinja_context.html#url_param"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#superset.jinja_context.url_param" title="Permalink to this definition">¶</a></dt>
+<dd><p>Read a url or post parameter and use it in your SQL Lab query</p>
+<p>When in SQL Lab, it’s possible to add arbitrary URL “query string”
+parameters, and use those in your SQL code. For instance you can
+alter your url and add <cite>?foo=bar</cite>, as in
+<cite>{domain}/superset/sqllab?foo=bar</cite>. Then if your query is something like
+SELECT * FROM foo = ‘{{ url_param(‘foo’) }}’, it will be parsed at
+runtime and replaced by the value in the URL.</p>
+<p>As you create a visualization form this SQL Lab query, you can pass
+parameters in the explore view as well as from the dashboard, and
+it should carry through to your queries.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>param</strong> (<code class="xref py py-class docutils literal notranslate"><span class="pre">str</span></code>) – the parameter to lookup</p></li>
+<li><p><strong>default</strong> (<code class="xref py py-data docutils literal notranslate"><span class="pre">Optional</span></code>[<code class="xref py py-class docutils literal notranslate"><span class="pre">str</span></code>]) – the value to return in the absence of the parameter</p></li>
+</ul>
+</dd>
+<dt class="field-even">Return type</dt>
+<dd class="field-even"><p><code class="xref py py-data docutils literal notranslate"><span class="pre">Optional</span></code>[<code class="xref py py-data docutils literal notranslate"><span class="pre">Any</span></code>]</p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="function">
+<dt id="superset.jinja_context.filter_values">
+<code class="sig-prename descclassname">superset.jinja_context.</code><code class="sig-name descname">filter_values</code><span class="sig-paren">(</span><em class="sig-param">column</em>, <em class="sig-param">default=None</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/superset/jinja_context.html#filter_values"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#superset.jinja_context.filter_values" title="Permalink to this defin [...]
+<dd><p>Gets a values for a particular filter as a list</p>
+<dl class="simple">
+<dt>This is useful if:</dt><dd><ul class="simple">
+<li><p>you want to use a filter box to filter a query where the name of filter box
+column doesn’t match the one in the select statement</p></li>
+<li><p>you want to have the ability for filter inside the main query for speed
+purposes</p></li>
+</ul>
+</dd>
+</dl>
+<p>This searches for “filters” and “extra_filters” in <code class="docutils literal notranslate"><span class="pre">form_data</span></code> for a match</p>
+<p>Usage example:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">SELECT</span> <span class="n">action</span><span class="p">,</span> <span class="n">count</span><span class="p">(</span><span class="o">*</span><span class="p">)</span> <span class="k">as</span> <span class="n">times</span>
+<span class="n">FROM</span> <span class="n">logs</span>
+<span class="n">WHERE</span> <span class="n">action</span> <span class="ow">in</span> <span class="p">(</span> <span class="p">{{</span> <span class="s2">&quot;&#39;&quot;</span> <span class="o">+</span> <span class="s2">&quot;&#39;,&#39;&quot;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">filter_values</span><span class="p">(</span><span class="s1">&#39;action_type&#39;</span><span class="p">))</span> <span class="o">+</span> <span clas [...]
+<span class="n">GROUP</span> <span class="n">BY</span> <span class="n">action</span>
+</pre></div>
+</div>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>column</strong> (<code class="xref py py-class docutils literal notranslate"><span class="pre">str</span></code>) – column/filter name to lookup</p></li>
+<li><p><strong>default</strong> (<code class="xref py py-data docutils literal notranslate"><span class="pre">Optional</span></code>[<code class="xref py py-class docutils literal notranslate"><span class="pre">str</span></code>]) – default value to return if there’s no matching columns</p></li>
+</ul>
+</dd>
+<dt class="field-even">Return type</dt>
+<dd class="field-even"><p><code class="xref py py-class docutils literal notranslate"><span class="pre">List</span></code>[<code class="xref py py-class docutils literal notranslate"><span class="pre">str</span></code>]</p>
+</dd>
+<dt class="field-odd">Returns</dt>
+<dd class="field-odd"><p>returns a list of filter values</p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="function">
+<dt id="superset.jinja_context.CacheKeyWrapper.cache_key_wrapper">
+<code class="sig-prename descclassname">superset.jinja_context.CacheKeyWrapper.</code><code class="sig-name descname">cache_key_wrapper</code><span class="sig-paren">(</span><em class="sig-param">self</em>, <em class="sig-param">key</em><span class="sig-paren">)</span><a class="headerlink" href="#superset.jinja_context.CacheKeyWrapper.cache_key_wrapper" title="Permalink to this definition">¶</a></dt>
+<dd><p>Adds values to a list that is added to the query object used for calculating
+a cache key.</p>
+<dl class="simple">
+<dt>This is needed if the following applies:</dt><dd><ul class="simple">
+<li><p>Caching is enabled</p></li>
+<li><p>The query is dynamically generated using a jinja template</p></li>
+<li><p>A username or similar is used as a filter in the query</p></li>
+</ul>
+</dd>
+</dl>
+<p>Example when using a SQL query as a data source</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">SELECT</span> <span class="n">action</span><span class="p">,</span> <span class="n">count</span><span class="p">(</span><span class="o">*</span><span class="p">)</span> <span class="k">as</span> <span class="n">times</span>
+<span class="n">FROM</span> <span class="n">logs</span>
+<span class="n">WHERE</span> <span class="n">logged_in_user</span> <span class="o">=</span> <span class="s1">&#39;{{ cache_key_wrapper(current_username()) }}&#39;</span>
+<span class="n">GROUP</span> <span class="n">BY</span> <span class="n">action</span>
+</pre></div>
+</div>
+<p>This will ensure that the query results that were cached by <cite>user_1</cite> will
+<strong>not</strong> be seen by <cite>user_2</cite>, as the <cite>cache_key</cite> for the query will be
+different. <code class="docutils literal notranslate"><span class="pre">cache_key_wrapper</span></code> can be used similarly for regular table data
+sources by adding a <cite>Custom SQL</cite> filter.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><p><strong>key</strong> (<code class="xref py py-data docutils literal notranslate"><span class="pre">Any</span></code>) – Any value that should be considered when calculating the cache key</p>
+</dd>
+<dt class="field-even">Return type</dt>
+<dd class="field-even"><p><code class="xref py py-data docutils literal notranslate"><span class="pre">Any</span></code></p>
+</dd>
+<dt class="field-odd">Returns</dt>
+<dd class="field-odd"><p>the original value <code class="docutils literal notranslate"><span class="pre">key</span></code> passed to the function</p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="class">
+<dt id="superset.jinja_context.PrestoTemplateProcessor">
+<em class="property">class </em><code class="sig-prename descclassname">superset.jinja_context.</code><code class="sig-name descname">PrestoTemplateProcessor</code><span class="sig-paren">(</span><em class="sig-param">database=None</em>, <em class="sig-param">query=None</em>, <em class="sig-param">table=None</em>, <em class="sig-param">extra_cache_keys=None</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/superset/jinja [...]
+<dd><p>Presto Jinja context</p>
+<p>The methods described here are namespaced under <code class="docutils literal notranslate"><span class="pre">presto</span></code> in the
+jinja context as in <code class="docutils literal notranslate"><span class="pre">SELECT</span> <span class="pre">'{{</span> <span class="pre">presto.some_macro_call()</span> <span class="pre">}}'</span></code></p>
+<dl class="method">
+<dt id="superset.jinja_context.PrestoTemplateProcessor.first_latest_partition">
+<code class="sig-name descname">first_latest_partition</code><span class="sig-paren">(</span><em class="sig-param">table_name</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/superset/jinja_context.html#PrestoTemplateProcessor.first_latest_partition"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#superset.jinja_context.PrestoTemplateProcessor.first_latest_partition" title="Permalink to this definition">¶</a></dt>
+<dd><p>Gets the first value in the array of all latest partitions</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><p><strong>table_name</strong> (<code class="xref py py-class docutils literal notranslate"><span class="pre">str</span></code>) – table name in the format <cite>schema.table</cite></p>
+</dd>
+<dt class="field-even">Return type</dt>
+<dd class="field-even"><p><code class="xref py py-class docutils literal notranslate"><span class="pre">str</span></code></p>
+</dd>
+<dt class="field-odd">Returns</dt>
+<dd class="field-odd"><p>the first (or only) value in the latest partition array</p>
+</dd>
+<dt class="field-even">Raises</dt>
+<dd class="field-even"><p><strong>IndexError</strong> – If no partition exists</p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="method">
+<dt id="superset.jinja_context.PrestoTemplateProcessor.latest_partition">
+<code class="sig-name descname">latest_partition</code><span class="sig-paren">(</span><em class="sig-param">table_name</em><span class="sig-paren">)</span><a class="headerlink" href="#superset.jinja_context.PrestoTemplateProcessor.latest_partition" title="Permalink to this definition">¶</a></dt>
+<dd><p>Gets the first value in the array of all latest partitions</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><p><strong>table_name</strong> (<code class="xref py py-class docutils literal notranslate"><span class="pre">str</span></code>) – table name in the format <cite>schema.table</cite></p>
+</dd>
+<dt class="field-even">Return type</dt>
+<dd class="field-even"><p><code class="xref py py-class docutils literal notranslate"><span class="pre">str</span></code></p>
+</dd>
+<dt class="field-odd">Returns</dt>
+<dd class="field-odd"><p>the first (or only) value in the latest partition array</p>
+</dd>
+<dt class="field-even">Raises</dt>
+<dd class="field-even"><p><strong>IndexError</strong> – If no partition exists</p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="method">
+<dt id="superset.jinja_context.PrestoTemplateProcessor.latest_partitions">
+<code class="sig-name descname">latest_partitions</code><span class="sig-paren">(</span><em class="sig-param">table_name</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/superset/jinja_context.html#PrestoTemplateProcessor.latest_partitions"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#superset.jinja_context.PrestoTemplateProcessor.latest_partitions" title="Permalink to this definition">¶</a></dt>
+<dd><p>Gets the array of all latest partitions</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><p><strong>table_name</strong> (<code class="xref py py-class docutils literal notranslate"><span class="pre">str</span></code>) – table name in the format <cite>schema.table</cite></p>
+</dd>
+<dt class="field-even">Return type</dt>
+<dd class="field-even"><p><code class="xref py py-class docutils literal notranslate"><span class="pre">List</span></code>[<code class="xref py py-class docutils literal notranslate"><span class="pre">str</span></code>]</p>
+</dd>
+<dt class="field-odd">Returns</dt>
+<dd class="field-odd"><p>the latest partition array</p>
+</dd>
+</dl>
+</dd></dl>
+
+</dd></dl>
+
+<dl class="class">
+<dt id="superset.jinja_context.HiveTemplateProcessor">
+<em class="property">class </em><code class="sig-prename descclassname">superset.jinja_context.</code><code class="sig-name descname">HiveTemplateProcessor</code><span class="sig-paren">(</span><em class="sig-param">database=None</em>, <em class="sig-param">query=None</em>, <em class="sig-param">table=None</em>, <em class="sig-param">extra_cache_keys=None</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/superset/jinja_c [...]
+<dd></dd></dl>
+
 </div>
 <div class="section" id="extending-macros">
 <h3>Extending macros<a class="headerlink" href="#extending-macros" title="Permalink to this headline">¶</a></h3>
diff --git a/genindex.html b/tutorials.html
similarity index 50%
copy from genindex.html
copy to tutorials.html
index ca3e720..c1981c1 100644
--- a/genindex.html
+++ b/tutorials.html
@@ -1,6 +1,5 @@
 
 
-
 <!DOCTYPE html>
 <!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
 <!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
@@ -9,7 +8,7 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
-  <title>Index &mdash; Apache Superset  documentation</title>
+  <title>Tutorials &mdash; Apache Superset  documentation</title>
   
 
   
@@ -34,8 +33,10 @@
   
   <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
   <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
-    <link rel="index" title="Index" href="#" />
-    <link rel="search" title="Search" href="search.html" /> 
+    <link rel="index" title="Index" href="genindex.html" />
+    <link rel="search" title="Search" href="search.html" />
+    <link rel="next" title="Creating your first dashboard" href="admintutorial.html" />
+    <link rel="prev" title="Installation &amp; Configuration" href="installation.html" /> 
 </head>
 
 <body class="wy-body-for-nav">
@@ -79,9 +80,13 @@
               
             
             
-              <ul>
+              <ul class="current">
 <li class="toctree-l1"><a class="reference internal" href="installation.html">Installation &amp; Configuration</a></li>
-<li class="toctree-l1"><a class="reference internal" href="tutorial.html">Tutorial - Creating your first dashboard</a></li>
+<li class="toctree-l1 current"><a class="current reference internal" href="#">Tutorials</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="admintutorial.html">Creating your first dashboard</a></li>
+<li class="toctree-l2"><a class="reference internal" href="usertutorial.html">Exploring data with Apache Superset</a></li>
+</ul>
+</li>
 <li class="toctree-l1"><a class="reference internal" href="security.html">Security</a></li>
 <li class="toctree-l1"><a class="reference internal" href="sqllab.html">SQL Lab</a></li>
 <li class="toctree-l1"><a class="reference internal" href="gallery.html">Visualizations Gallery</a></li>
@@ -133,7 +138,7 @@
     
       <li><a href="index.html">Docs</a> &raquo;</li>
         
-      <li>Index</li>
+      <li>Tutorials</li>
     
     
       <li class="wy-breadcrumbs-aside">
@@ -150,11 +155,34 @@
           <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
            <div itemprop="articleBody">
             
-
-<h1 id="index">Index</h1>
-
-<div class="genindex-jumpbox">
- 
+  <div class="section" id="tutorials">
+<h1>Tutorials<a class="headerlink" href="#tutorials" title="Permalink to this headline">¶</a></h1>
+<div class="toctree-wrapper compound">
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="admintutorial.html">Creating your first dashboard</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="admintutorial.html#connecting-to-a-new-database">Connecting to a new database</a></li>
+<li class="toctree-l2"><a class="reference internal" href="admintutorial.html#adding-a-new-table">Adding a new table</a></li>
+<li class="toctree-l2"><a class="reference internal" href="admintutorial.html#exploring-your-data">Exploring your data</a></li>
+<li class="toctree-l2"><a class="reference internal" href="admintutorial.html#creating-a-slice-and-dashboard">Creating a slice and dashboard</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="usertutorial.html">Exploring data with Apache Superset</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="usertutorial.html#enabling-upload-a-csv-functionality">Enabling Upload a CSV Functionality</a></li>
+<li class="toctree-l2"><a class="reference internal" href="usertutorial.html#obtaining-and-loading-the-data">Obtaining and loading the data</a></li>
+<li class="toctree-l2"><a class="reference internal" href="usertutorial.html#table-visualization">Table Visualization</a></li>
+<li class="toctree-l2"><a class="reference internal" href="usertutorial.html#dashboard-basics">Dashboard basics</a></li>
+<li class="toctree-l2"><a class="reference internal" href="usertutorial.html#pivot-table">Pivot Table</a></li>
+<li class="toctree-l2"><a class="reference internal" href="usertutorial.html#line-chart">Line Chart</a></li>
+<li class="toctree-l2"><a class="reference internal" href="usertutorial.html#markup">Markup</a></li>
+<li class="toctree-l2"><a class="reference internal" href="usertutorial.html#filter-box">Filter box</a></li>
+<li class="toctree-l2"><a class="reference internal" href="usertutorial.html#publishing-your-dashboard">Publishing your dashboard</a></li>
+<li class="toctree-l2"><a class="reference internal" href="usertutorial.html#taking-your-dashboard-further">Taking your dashboard further</a></li>
+<li class="toctree-l2"><a class="reference internal" href="usertutorial.html#annotations">Annotations</a></li>
+<li class="toctree-l2"><a class="reference internal" href="usertutorial.html#advanced-analytics">Advanced Analytics</a></li>
+</ul>
+</li>
+</ul>
+</div>
 </div>
 
 
@@ -163,6 +191,15 @@
           </div>
           <footer>
   
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="admintutorial.html" class="btn btn-neutral float-right" title="Creating your first dashboard" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
+      
+      
+        <a href="installation.html" class="btn btn-neutral float-left" title="Installation &amp; Configuration" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
+      
+    </div>
+  
 
   <hr/>
 
diff --git a/usertutorial.html b/usertutorial.html
new file mode 100644
index 0000000..63f4ad4
--- /dev/null
+++ b/usertutorial.html
@@ -0,0 +1,624 @@
+
+
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+  <meta charset="utf-8">
+  
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  
+  <title>Exploring data with Apache Superset &mdash; Apache Superset  documentation</title>
+  
+
+  
+  
+  
+  
+
+  
+  <script type="text/javascript" src="_static/js/modernizr.min.js"></script>
+  
+    
+      <script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
+        <script type="text/javascript" src="_static/jquery.js"></script>
+        <script type="text/javascript" src="_static/underscore.js"></script>
+        <script type="text/javascript" src="_static/doctools.js"></script>
+        <script type="text/javascript" src="_static/language_data.js"></script>
+    
+    <script type="text/javascript" src="_static/js/theme.js"></script>
+
+    
+
+  
+  <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+    <link rel="index" title="Index" href="genindex.html" />
+    <link rel="search" title="Search" href="search.html" />
+    <link rel="next" title="Security" href="security.html" />
+    <link rel="prev" title="Creating your first dashboard" href="admintutorial.html" /> 
+</head>
+
+<body class="wy-body-for-nav">
+
+   
+  <div class="wy-grid-for-nav">
+    
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side">
+      <div class="wy-side-scroll">
+        <div class="wy-side-nav-search" >
+          
+
+          
+            <a href="index.html" class="icon icon-home"> Apache Superset
+          
+
+          
+          </a>
+
+          
+            
+            
+          
+
+          
+<div role="search">
+  <form id="rtd-search-form" class="wy-form" action="search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" />
+    <input type="hidden" name="check_keywords" value="yes" />
+    <input type="hidden" name="area" value="default" />
+  </form>
+</div>
+
+          
+        </div>
+
+        <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+          
+            
+            
+              
+            
+            
+              <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="installation.html">Installation &amp; Configuration</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="tutorials.html">Tutorials</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="admintutorial.html">Creating your first dashboard</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Exploring data with Apache Superset</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#enabling-upload-a-csv-functionality">Enabling Upload a CSV Functionality</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#obtaining-and-loading-the-data">Obtaining and loading the data</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#table-visualization">Table Visualization</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#dashboard-basics">Dashboard basics</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#pivot-table">Pivot Table</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#line-chart">Line Chart</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#markup">Markup</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#filter-box">Filter box</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#publishing-your-dashboard">Publishing your dashboard</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#taking-your-dashboard-further">Taking your dashboard further</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#annotations">Annotations</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#advanced-analytics">Advanced Analytics</a><ul>
+<li class="toctree-l4"><a class="reference internal" href="#setting-up-the-base-chart">Setting up the base chart</a></li>
+<li class="toctree-l4"><a class="reference internal" href="#rolling-mean">Rolling mean</a></li>
+<li class="toctree-l4"><a class="reference internal" href="#time-comparison">Time Comparison</a></li>
+<li class="toctree-l4"><a class="reference internal" href="#resampling-the-data">Resampling the data</a></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="security.html">Security</a></li>
+<li class="toctree-l1"><a class="reference internal" href="sqllab.html">SQL Lab</a></li>
+<li class="toctree-l1"><a class="reference internal" href="gallery.html">Visualizations Gallery</a></li>
+<li class="toctree-l1"><a class="reference internal" href="druid.html">Druid</a></li>
+<li class="toctree-l1"><a class="reference internal" href="misc.html">Misc</a></li>
+<li class="toctree-l1"><a class="reference internal" href="faq.html">FAQ</a></li>
+</ul>
+
+            
+          
+        </div>
+      </div>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" aria-label="top navigation">
+        
+          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+          <a href="index.html">Apache Superset</a>
+        
+      </nav>
+
+
+      <div class="wy-nav-content">
+        
+        <div class="rst-content">
+        
+          
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+
+  <ul class="wy-breadcrumbs">
+    
+      <li><a href="index.html">Docs</a> &raquo;</li>
+        
+          <li><a href="tutorials.html">Tutorials</a> &raquo;</li>
+        
+      <li>Exploring data with Apache Superset</li>
+    
+    
+      <li class="wy-breadcrumbs-aside">
+        
+            
+        
+      </li>
+    
+  </ul>
+
+  
+  <hr/>
+</div>
+          <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
+           <div itemprop="articleBody">
+            
+  <div class="section" id="exploring-data-with-apache-superset">
+<h1>Exploring data with Apache Superset<a class="headerlink" href="#exploring-data-with-apache-superset" title="Permalink to this headline">¶</a></h1>
+<p>In this tutorial, we will introduce key concepts in Apache Superset
+through the exploration of a real dataset which contains the flights
+made by employees of a UK-based organization in 2011. The following
+information about each flight is given:</p>
+<ul class="simple">
+<li><p>The traveller’s department. For the purposes of this tutorial the
+departments have been renamed Orange, Yellow and Purple.</p></li>
+<li><p>The cost of the ticket.</p></li>
+<li><p>The travel class (Economy, Premium Economy, Business and First
+Class).</p></li>
+<li><p>Whether the ticket was a single or return.</p></li>
+<li><p>The date of travel.</p></li>
+<li><p>Information about the origin and destination.</p></li>
+<li><p>The distance between the origin and destination, in kilometers (km).</p></li>
+</ul>
+<div class="section" id="enabling-upload-a-csv-functionality">
+<h2>Enabling Upload a CSV Functionality<a class="headerlink" href="#enabling-upload-a-csv-functionality" title="Permalink to this headline">¶</a></h2>
+<p>You may need to enable the functionality to upload a CSV to your
+database. The following section explains how to enable this
+functionality for the examples database.</p>
+<p>In the top menu, select <span class="menuselection">Sources ‣ Databases</span>. Find the
+<span class="guilabel">examples</span> database in the list and select the edit record
+button.</p>
+<img alt="_images/edit-record.png" src="_images/edit-record.png" />
+<p>Within the <span class="guilabel">Edit Database</span> page, check the
+<span class="guilabel">Allow Csv Upload</span> checkbox.</p>
+<p>Finally, save by selecting <span class="guilabel">Save</span> at the bottom of the page.</p>
+</div>
+<div class="section" id="obtaining-and-loading-the-data">
+<h2>Obtaining and loading the data<a class="headerlink" href="#obtaining-and-loading-the-data" title="Permalink to this headline">¶</a></h2>
+<p>Download the data for this tutorial to your computer from
+<a class="reference external" href="https://raw.githubusercontent.com/apache-superset/examples-data/master/tutorial_flights.csv">Github</a>.</p>
+<p>In the top menu, select <span class="menuselection">Sources ‣ Upload a CSV</span>.</p>
+<img alt="_images/upload_a_csv.png" src="_images/upload_a_csv.png" />
+<p>Then, enter the <span class="guilabel">Table name</span> as <cite>tutorial_flights</cite>
+and select the <span class="guilabel">CSV file</span> from your computer.</p>
+<img alt="_images/csv_to_database_configuration.png" src="_images/csv_to_database_configuration.png" />
+<p>Next enter the text <cite>Travel Date</cite> into the
+<span class="guilabel">Parse Dates</span> field.</p>
+<img alt="_images/parse_dates_column.png" src="_images/parse_dates_column.png" />
+<p>Leaving all the other options in their default settings, select
+<span class="guilabel">Save</span> at the bottom of the page.</p>
+</div>
+<div class="section" id="table-visualization">
+<h2>Table Visualization<a class="headerlink" href="#table-visualization" title="Permalink to this headline">¶</a></h2>
+<p>In this section, we’ll create our first visualization: a table to show
+the number of flights and cost per travel class.</p>
+<p>To create a new chart, select the <span class="menuselection">New ‣ Chart</span>.</p>
+<img alt="_images/add_new_chart.png" src="_images/add_new_chart.png" />
+<p>Once in the <span class="guilabel">Create a new chart</span> dialogue, select
+<span class="guilabel">tutorial_flights</span> from the <span class="guilabel">Chose a datasource</span>
+dropdown.</p>
+<img alt="_images/chose_a_datasource.png" src="_images/chose_a_datasource.png" />
+<p>Next, select the visualization type as <span class="guilabel">Table</span>.</p>
+<img alt="_images/select_table_visualization_type.png" src="_images/select_table_visualization_type.png" />
+<p>Then, select <span class="guilabel">Create new chart</span> to go into the chart view.</p>
+<p>By default, Apache Superset only shows the last week of data: in our
+example, we want to look at all the data in the dataset. No problem -
+within the <span class="guilabel">Time</span> section, remove the filter on
+<span class="guilabel">Time range</span> by selecting on <span class="guilabel">Last week</span> then
+changing the selection to <span class="guilabel">No filter</span>, with a final
+<span class="guilabel">OK</span> to confirm your selection.</p>
+<img alt="_images/no_filter_on_time_filter.png" src="_images/no_filter_on_time_filter.png" />
+<p>Now, we want to specify the rows in our table by using the
+<span class="guilabel">Group by</span> option. Since in this example, we want to
+understand different Travel Classes, we select <span class="guilabel">Travel Class</span>
+in this menu.</p>
+<p>Next, we can specify the metrics we would like to see in our table with
+the <span class="guilabel">Metrics</span> option. <span class="guilabel">Count(*)</span>, which represents the number of
+rows in the table (in this case corresponding to the number of flights
+since we have a row per flight), is already there. To add cost, within
+<span class="guilabel">Metrics</span>, select <span class="guilabel">Cost</span>. <span class="guilabel">Save</span> the
+default aggregation option, which is to sum the column.</p>
+<img alt="_images/sum_cost_column.png" src="_images/sum_cost_column.png" />
+<p>Finally, select <span class="guilabel">Run Query</span> to see the results of the table.</p>
+<img alt="_images/tutorial_table.png" src="_images/tutorial_table.png" />
+<p>Congratulations, you have created your first visualization in Apache
+Superset!</p>
+<p>To save the visualization, click on <span class="guilabel">Save</span> in the top left of
+the screen. Select the <span class="guilabel">Save as</span> option, and enter the chart
+name as Tutorial Table (you will be able to find it again through the
+<span class="guilabel">Charts</span> screen, accessible in the top menu). Similarly,
+select <span class="guilabel">Add to new dashboard</span> and enter <cite>Tutorial Dashboard</cite>.
+Finally, select <span class="guilabel">Save &amp; go to dashboard</span>.</p>
+<img alt="_images/save_tutorial_table.png" src="_images/save_tutorial_table.png" />
+</div>
+<div class="section" id="dashboard-basics">
+<h2>Dashboard basics<a class="headerlink" href="#dashboard-basics" title="Permalink to this headline">¶</a></h2>
+<p>Next, we are going to explore the dashboard interface. If you’ve
+followed the previous section, you should already have the dashboard
+open. Otherwise, you can navigate to the dashboard by selecting
+<span class="guilabel">Dashboards</span> on the top menu, then <span class="guilabel">Tutorial dashboard</span>
+from the list of dashboards.</p>
+<p>On this dashboard you should see the table you created in the previous
+section. Select <span class="guilabel">Edit dashboard</span> and then hover over the
+table. By selecting the bottom right hand corner of the table (the
+cursor will change too), you can resize it by dragging and dropping.</p>
+<img alt="_images/resize_tutorial_table_on_dashboard.png" src="_images/resize_tutorial_table_on_dashboard.png" />
+<p>Finally, save your changes by selecting <span class="guilabel">Save changes</span> in the
+top right.</p>
+</div>
+<div class="section" id="pivot-table">
+<h2>Pivot Table<a class="headerlink" href="#pivot-table" title="Permalink to this headline">¶</a></h2>
+<p>In this section, we will extend our analysis using a more complex
+visualization, Pivot Table. By the end of this section, you will have
+created a table that shows the monthly spend on flights for the first
+six months, by department, by travel class.</p>
+<p>As before, create a new visualization by selecting
+<span class="menuselection">New ‣ Chart</span> on the top menu. Choose tutorial_flights
+again as a datasource, then click on the visualization type to get to
+the visualization menu. Select the <span class="guilabel">Pivot Table</span> visualization
+(you can filter by entering text in the search box) and then
+<span class="guilabel">Create a new chart</span>.</p>
+<p>In the <span class="guilabel">Time</span> section, keep the Time Column as Travel Date
+(this is selected automatically as we only have one time column in our
+dataset). Then select <span class="guilabel">Time Grain</span> to be month as having daily
+data would be too granular to see patterns from. Then select the time
+range to be the first six months of 2011 by click on Last week in the
+<span class="guilabel">Time Range</span> section, then in <span class="guilabel">Custom</span> selecting a
+<span class="guilabel">Start / end</span> of 1<sup>st</sup> January 2011 and 30<sup>th</sup>
+June 2011 respectively by either entering directly the dates or using
+the calendar widget (by selecting the month name and then the year, you
+can move more quickly to far away dates).</p>
+<img alt="_images/select_dates_pivot_table.png" src="_images/select_dates_pivot_table.png" />
+<p>Next, within the <span class="guilabel">Query</span> section, remove the default COUNT(*)
+and add Cost, keeping the default SUM aggregate. Note that Apache
+Superset will indicate the type of the metric by the symbol on the left
+hand column of the list (ABC for string, # for number, a clock face for
+time, etc.).</p>
+<p>In <span class="guilabel">Group by</span> select <span class="guilabel">Time</span>: this will automatically
+use the Time Column and Time Grain selections we defined in the Time
+section.</p>
+<p>Within <span class="guilabel">Columns</span>, select first <span class="guilabel">Department</span> and then
+<span class="guilabel">Travel Class</span>. All set – let’s <span class="guilabel">Run Query</span> to see
+some data!</p>
+<img alt="_images/tutorial_pivot_table.png" src="_images/tutorial_pivot_table.png" />
+<p>You should see months in the rows and Department and Travel Class in the
+columns. To get this in our dashboard, select <span class="guilabel">Save</span>, name the
+chart Tutorial Pivot and using
+<span class="guilabel">Add chart to existing dashboard</span> select
+<span class="guilabel">Tutorial Dashboard</span>, and then finally
+<span class="guilabel">Save &amp; go to dashboard</span>.</p>
+</div>
+<div class="section" id="line-chart">
+<h2>Line Chart<a class="headerlink" href="#line-chart" title="Permalink to this headline">¶</a></h2>
+<p>In this section, we are going to create a line chart to understand the
+average price of a ticket by month across the entire dataset. As before,
+select <span class="menuselection">New ‣ Chart</span>, and then
+<span class="guilabel">tutorial_flights</span> as the datasource and
+<span class="guilabel">Line Chart</span> as the visualization type.</p>
+<p>In the Time section, as before, keep the <span class="guilabel">Time Column</span> as
+Travel Date and <span class="guilabel">Time Grain</span> as month but this time for the
+<span class="guilabel">Time range</span> select <span class="guilabel">No filter</span> as we want to look
+at entire dataset.</p>
+<p>Within <span class="guilabel">Metrics</span>, remove the default <span class="guilabel">COUNT(*)</span> and
+add <span class="guilabel">Cost</span>. This time, we want to change how this column is
+aggregated to show the mean value: we can do this by selecting
+<span class="guilabel">AVG</span> in the <span class="guilabel">aggregate</span> dropdown.</p>
+<img alt="_images/average_aggregate_for_cost.png" src="_images/average_aggregate_for_cost.png" />
+<p>Next, select <span class="guilabel">Run Query</span> to show the data on the chart.</p>
+<p>How does this look? Well, we can see that the average cost goes up in
+December. However, perhaps it doesn’t make sense to combine both single
+and return tickets, but rather show two separate lines for each ticket
+type.</p>
+<p>Let’s do this by selecting <span class="guilabel">Ticket Single or Return</span> in the
+<span class="guilabel">Group by</span> box, and the selecting <span class="guilabel">Run Query</span> again.
+Nice! We can see that on average single tickets are cheaper than returns
+and that the big spike in December is caused by return tickets.</p>
+<p>Our chart is looking pretty good already, but let’s customize some more
+by going to the <span class="guilabel">Customize</span> tab on the left hand pane. Within
+this pane, try changing the <span class="guilabel">Color Scheme</span>, removing the range
+filter by selecting No in the <span class="guilabel">Show Range Filter</span> drop down
+and adding some labels using <span class="guilabel">X Axis Label</span> and
+<span class="guilabel">Y Axis Label</span>.</p>
+<img alt="_images/tutorial_line_chart.png" src="_images/tutorial_line_chart.png" />
+<p>Once you’re done, <span class="guilabel">Save</span> as Tutorial Line Chart, use
+<span class="guilabel">Add chart to
+existing dashboard</span> to add this chart to the previous ones on the
+Tutorial Dashboard and then <span class="guilabel">Save &amp; go to dashboard</span>.</p>
+</div>
+<div class="section" id="markup">
+<h2>Markup<a class="headerlink" href="#markup" title="Permalink to this headline">¶</a></h2>
+<p>In this section, we will add some text to our dashboard. If you’re there
+already, you can navigate to the dashboard by selecting
+<span class="guilabel">Dashboards</span> on the top menu, then
+<span class="guilabel">Tutorial dashboard</span> from the list of dashboards. Got into
+edit mode by selecting <span class="guilabel">Edit dashboard</span>.</p>
+<p>Within the Insert components pane, drag and drop a <span class="guilabel">Markdown</span>
+box on the dashboard. Look for the blue lines which indicate the anchor
+where the box will go.</p>
+<img alt="_images/blue_bar_insert_component.png" src="_images/blue_bar_insert_component.png" />
+<p>Now, to edit the text, select the box. You can enter text, in markdown
+format (see <a class="reference external" href="https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet">this Markdown
+Cheatsheet</a>
+for more information about this format). You can toggle between
+<span class="guilabel">Edit</span> and <span class="guilabel">Preview</span> using the menu on the top of
+the box.</p>
+<img alt="_images/markdown.png" src="_images/markdown.png" />
+<p>To exit, select any other part of the dashboard. Finally, don’t forget
+to keep your changes using <span class="guilabel">Save changes</span>.</p>
+</div>
+<div class="section" id="filter-box">
+<h2>Filter box<a class="headerlink" href="#filter-box" title="Permalink to this headline">¶</a></h2>
+<p>In this section, you will learn how to add a filter to your dashboard.
+Specifically, we will create a filter that allows us to look at those
+flights that depart from a particular country.</p>
+<p>A filter box visualization can be created as any other visualization by
+selecting <span class="menuselection">New ‣ Chart</span>, and then
+<span class="guilabel">tutorial_flights</span> as the datasource and
+<span class="guilabel">Filter Box</span> as the visualization type.</p>
+<p>First of all, in the <span class="guilabel">Time</span> section, remove the filter from
+the <span class="guilabel">Time
+range</span> selection by selecting <span class="guilabel">No filter</span>.</p>
+<p>Next, in <span class="guilabel">Filters Configurations</span> first add a new filter by
+selecting the plus sign and then edit the newly created filter by
+selecting the pencil icon.</p>
+<p>For our use case, it makes most sense to present a list of countries in
+alphabetical order. First, enter the column as
+<span class="guilabel">Origin Country</span> and keep all other options the same and then
+select <span class="guilabel">Run Query</span>. This gives us a preview of our filter.</p>
+<p>Next, remove the date filter by unchecking the <span class="guilabel">Date Filter</span>
+checkbox.</p>
+<img alt="_images/filter_on_origin_country.png" src="_images/filter_on_origin_country.png" />
+<p>Finally, select <span class="guilabel">Save</span>, name the chart as Tutorial Filter, add
+the chart to our existing Tutorial Dashboard and then
+<span class="guilabel">Save &amp; go to
+dashboard</span>. Once on the Dashboard, try using the filter to show only
+those flights that departed from the United Kingdom – you will see the
+filter is applied to all of the other visualizations on the dashboard.</p>
+</div>
+<div class="section" id="publishing-your-dashboard">
+<h2>Publishing your dashboard<a class="headerlink" href="#publishing-your-dashboard" title="Permalink to this headline">¶</a></h2>
+<p>If you have followed all of the steps outlined in the previous section,
+you should have a dashboard that looks like the below. If you would
+like, you can rearrange the elements of the dashboard by selecting
+<span class="guilabel">Edit dashboard</span> and dragging and dropping.</p>
+<p>If you would like to make your dashboard available to other users,
+simply select <span class="guilabel">Draft</span> next to the title of your dashboard on
+the top left to change your dashboard to be in <span class="guilabel">Published</span>
+state. You can also favorite this dashboard by selecting the star.</p>
+<img alt="_images/publish_dashboard.png" src="_images/publish_dashboard.png" />
+</div>
+<div class="section" id="taking-your-dashboard-further">
+<h2>Taking your dashboard further<a class="headerlink" href="#taking-your-dashboard-further" title="Permalink to this headline">¶</a></h2>
+<p>In the following sections, we will look at more advanced Apache Superset
+topics.</p>
+</div>
+<div class="section" id="annotations">
+<h2>Annotations<a class="headerlink" href="#annotations" title="Permalink to this headline">¶</a></h2>
+<p>Annotations allow you to add additional context to your chart. In this
+section, we will add an annotation to the Tutorial Line Chart we made in
+a previous section. Specifically, we will add the dates when some
+flights were cancelled by the UK’s Civil Aviation Authority in response
+to the eruption of the Grímsvötn volcano in Iceland (23-25 May 2011).</p>
+<p>First, add an annotation layer by navigating to
+<span class="menuselection">Manage ‣ Annotation Layers</span>. Add a new annotation
+layer by selecting the green plus sign to add a new record. Enter the
+name Volcanic Eruptions and save. We can use this layer to refer to a
+number of different annotations.</p>
+<p>Next, add an annotation by navigating to
+<span class="menuselection">Manage ‣ Annotations</span> and then create a new annotation
+by selecting the green plus sign. Then, select the
+<span class="guilabel">Volcanic Eruptions</span> layer, add a short description Grímsvötn
+and the eruption dates (23-25 May 2011) before finally saving.</p>
+<img alt="_images/edit_annotation.png" src="_images/edit_annotation.png" />
+<p>Then, navigate to the line chart by going to <span class="guilabel">Charts</span> then
+selecting <span class="guilabel">Tutorial
+Line Chart</span> from the list. Next, go to the
+<span class="guilabel">Annotations and Layers</span> section and select
+<span class="guilabel">Add Annotation Layer</span>. Within this dialogue:</p>
+<ul class="simple">
+<li><p>name the layer as <cite>Volcanic Eruptions</cite></p></li>
+<li><p>change the <span class="guilabel">Annotation Layer Type</span> to <span class="guilabel">Event</span></p></li>
+<li><p>set the <span class="guilabel">Annotation Source</span> as <span class="guilabel">Superset annotation</span></p></li>
+<li><p>specify the <span class="guilabel">Annotation Layer</span> as <span class="guilabel">Volcanic Eruptions</span></p></li>
+</ul>
+<img alt="_images/annotation_settings.png" src="_images/annotation_settings.png" />
+<p>Select <span class="guilabel">Apply</span> to see your annotation shown on the chart.</p>
+<img alt="_images/annotation.png" src="_images/annotation.png" />
+<p>If you wish, you can change how your annotation looks by changing the
+settings in the <span class="guilabel">Display configuration</span> section. Otherwise,
+select <span class="guilabel">OK</span> and finally <span class="guilabel">Save</span> to save your chart.
+If you keep the default selection to overwrite the chart, your
+annotation will be saved to the chart and also appear automatically in
+the Tutorial Dashboard.</p>
+</div>
+<div class="section" id="advanced-analytics">
+<h2>Advanced Analytics<a class="headerlink" href="#advanced-analytics" title="Permalink to this headline">¶</a></h2>
+<p>In this section, we are going to explore the Advanced Analytics feature
+of Apache Superset that allows you to apply additional transformations
+to your data. The three types of transformation are:</p>
+<dl class="simple">
+<dt>Moving Average</dt><dd><p>Select a rolling window <a class="footnote-reference brackets" href="#f1" id="id1">1</a>, and then apply a calculation on it (mean,
+sum or standard deviation). The fourth option, cumsum, calculates the
+cumulative sum of the series <a class="footnote-reference brackets" href="#f2" id="id2">2</a>.</p>
+</dd>
+<dt>Time Comparison</dt><dd><p>Shift your data in time and, optionally, apply a calculation to compare the
+shifted data with your actual data (e.g. calculate the absolute difference
+between the two).</p>
+</dd>
+<dt>Python Functions</dt><dd><p>Resample your data using one of a variety of methods <a class="footnote-reference brackets" href="#f3" id="id3">3</a>.</p>
+</dd>
+</dl>
+<div class="section" id="setting-up-the-base-chart">
+<h3>Setting up the base chart<a class="headerlink" href="#setting-up-the-base-chart" title="Permalink to this headline">¶</a></h3>
+<p>In this section, we’re going to set up a base chart which we can then
+apply the different Advanced Analytics features to. Start off by
+creating a new chart using the same <span class="guilabel">tutorial_flights</span>
+datasource and the <span class="guilabel">Line Chart</span> visualization type. Within the
+Time section, set the <span class="guilabel">Time Range</span> as 1<sup>st</sup> October
+2011 and 31<sup>st</sup> October 2011.</p>
+<p>Next, in the query section, change the <span class="guilabel">Metrics</span> to the sum of
+<span class="guilabel">Cost</span>. Select <span class="guilabel">Run Query</span> to show the chart. You
+should see the total cost per day for each month in October 2011.</p>
+<img alt="_images/advanced_analytics_base.png" src="_images/advanced_analytics_base.png" />
+<p>Finally, save the visualization as Tutorial Advanced Analytics Base,
+adding it to the Tutorial Dashboard.</p>
+</div>
+<div class="section" id="rolling-mean">
+<h3>Rolling mean<a class="headerlink" href="#rolling-mean" title="Permalink to this headline">¶</a></h3>
+<p>There is quite a lot of variation in the data, which makes it difficult
+to identify any trend. One approach we can take is to show instead a
+rolling average of the time series. To do this, in the
+<span class="guilabel">Moving Average</span> subsection of <span class="guilabel">Advanced Analytics</span>,
+select mean in the <span class="guilabel">Rolling</span> box and enter 7 into both Periods
+and Min Periods. The period is the length of the rolling period
+expressed as a multiple of the <span class="guilabel">Time Grain</span>. In our example,
+the <span class="guilabel">Time Grain</span> is day, so the rolling period is 7 days, such
+that on the 7th October 2011 the value shown would correspond to the
+first seven days of October 2011. Lastly, by specifying
+<span class="guilabel">Min Periods</span> as 7, we ensure that our mean is always
+calculated on 7 days and we avoid any ramp up period.</p>
+<p>After displaying the chart by selecting <span class="guilabel">Run Query</span> you will
+see that the data is less variable and that the series starts later as
+the ramp up period is excluded.</p>
+<img alt="_images/rolling_mean.png" src="_images/rolling_mean.png" />
+<p>Save the chart as Tutorial Rolling Mean and add it to the Tutorial
+Dashboard.</p>
+</div>
+<div class="section" id="time-comparison">
+<h3>Time Comparison<a class="headerlink" href="#time-comparison" title="Permalink to this headline">¶</a></h3>
+<p>In this section, we will compare values in our time series to the value
+a week before. Start off by opening the Tutorial Advanced Analytics Base
+chart, by going to <span class="guilabel">Charts</span> in the top menu and then selecting
+the visualization name in the list (alternatively, find the chart in the
+Tutorial Dashboard and select Explore chart from the menu for that
+visualization).</p>
+<p>Next, in the <span class="guilabel">Time Comparison</span> subsection of
+<span class="guilabel">Advanced Analytics</span>, enter the <span class="guilabel">Time Shift</span> by
+typing in “minus 1 week” (note this box accepts input in natural
+language). <span class="guilabel">Run Query</span> to see the new chart, which has an
+additional series with the same values, shifted a week back in time.</p>
+<img alt="_images/time_comparison_two_series.png" src="_images/time_comparison_two_series.png" />
+<p>Then, change the <span class="guilabel">Calculation type</span> to
+<span class="guilabel">Absolute difference</span> and select <span class="guilabel">Run
+Query</span>. We can now see only one series again, this time showing the
+difference between the two series we saw previously.</p>
+<img alt="_images/time_comparison_absolute_difference.png" src="_images/time_comparison_absolute_difference.png" />
+<p>Save the chart as Tutorial Time Comparison and add it to the Tutorial
+Dashboard.</p>
+</div>
+<div class="section" id="resampling-the-data">
+<h3>Resampling the data<a class="headerlink" href="#resampling-the-data" title="Permalink to this headline">¶</a></h3>
+<p>In this section, we’ll resample the data so that rather than having
+daily data we have weekly data. As in the previous section, reopen the
+Tutorial Advanced Analytics Base chart.</p>
+<p>Next, in the <span class="guilabel">Python Functions</span> subsection of
+<span class="guilabel">Advanced Analytics</span>, enter 7D, corresponding to seven days,
+in the <span class="guilabel">Rule</span> and median as the <span class="guilabel">Method</span> and show
+the chart by selecting <span class="guilabel">Run Query</span>.</p>
+<img alt="_images/resample.png" src="_images/resample.png" />
+<p>Note that now we have a single data point every 7 days. In our case, the
+value showed corresponds to the median value within the seven daily data
+points. For more information on the meaning of the various options in
+this section, refer to the <a class="reference external" href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.resample.html">Pandas
+documentation</a>.</p>
+<p>Lastly, save your chart as Tutorial Resample and add it to the Tutorial
+Dashboard. Go to the tutorial dashboard to see the four charts side by
+side and compare the different outputs.</p>
+<p class="rubric">Footnotes</p>
+<dl class="footnote brackets">
+<dt class="label" id="f1"><span class="brackets"><a class="fn-backref" href="#id1">1</a></span></dt>
+<dd><p>See the Pandas <a class="reference external" href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.rolling.html">rolling method documentation</a> for more information.</p>
+</dd>
+<dt class="label" id="f2"><span class="brackets"><a class="fn-backref" href="#id2">2</a></span></dt>
+<dd><p>See the Pandas <a class="reference external" href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.cumsum.html">cumsum method documentation</a> for more information.</p>
+</dd>
+<dt class="label" id="f3"><span class="brackets"><a class="fn-backref" href="#id3">3</a></span></dt>
+<dd><p>See the Pandas <a class="reference external" href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.resample.html">resample method documentation</a> for more information.</p>
+</dd>
+</dl>
+</div>
+</div>
+</div>
+
+
+           </div>
+           
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="security.html" class="btn btn-neutral float-right" title="Security" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
+      
+      
+        <a href="admintutorial.html" class="btn btn-neutral float-left" title="Creating your first dashboard" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+
+    </p>
+  </div> 
+
+</footer>
+
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+
+  <script type="text/javascript">
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script>
+
+  
+  
+    
+   
+
+</body>
+</html>
\ No newline at end of file