Tutorial for Superset Administrators
====================================

This tutorial targets a Superset administrator: someone configuring Superset 
for an organization on behalf of users. 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:: _static/img/tutorial/tutorial_01_sources_database.png
   :scale: 70%

On the resulting page, click on the green plus sign, near the top right:

.. image:: _static/img/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:: _static/img/tutorial/tutorial_03_database_name.png
   :scale: 70%

2. Provide the SQLAlchemy Connection URI and test the connection:

.. image:: _static/img/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 <http://docs.sqlalchemy.org/en/rel_1_0/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:: _static/img/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:: _static/img/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:: _static/img/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:: _static/img/tutorial/tutorial_08_sources_tables.png
   :scale: 70%

On the resulting page, click on the green plus sign, near the top left:

.. image:: _static/img/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:: _static/img/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:: _static/img/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:: _static/img/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:: _static/img/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:: _static/img/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:: _static/img/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:: _static/img/tutorial/tutorial_15_click_table_name.png

By default, you’ll be presented with a Table View:

.. image:: _static/img/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:: _static/img/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:: _static/img/tutorial/tutorial_18_choose_metric.png

Select the *COUNT(\*)* metric, then click the green **Query** button near the top 
of the explore:

.. image:: _static/img/tutorial/tutorial_19_click_query.png

You’ll see your results in the table:

.. image:: _static/img/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:: _static/img/tutorial/tutorial_21_group_by.png

and run the query:

.. image:: _static/img/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:: _static/img/tutorial/tutorial_23_group_by_more_dimensions.png

And replace *COUNT(\*)* with *max__measurement_flag*:

.. image:: _static/img/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:: _static/img/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:: _static/img/tutorial/tutorial_26_row_limit.png

We click **Query** and get the following results:

.. image:: _static/img/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 agains 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:: _static/img/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:: _static/img/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:: _static/img/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:: _static/img/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:: _static/img/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:: _static/img/tutorial/tutorial_32_save_slice_confirmation.png
   :scale: 70%

Let’s check out our new dashboard. We click on the **Dashboards** menu:

.. image:: _static/img/tutorial/tutorial_33_dashboard.png

and find the dashboard we just created:

.. image:: _static/img/tutorial/tutorial_34_weather_dashboard.png

Things seemed to have worked - our slice is here!

.. image:: _static/img/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:: _static/img/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.
