Skip to content

Commit

Permalink
Merge branch 'master' into admin-settings-to-redux
Browse files Browse the repository at this point in the history
  • Loading branch information
agilliland committed Jun 22, 2016
2 parents 17590d5 + 3ab6f42 commit 370599a
Show file tree
Hide file tree
Showing 40 changed files with 336 additions and 201 deletions.
1 change: 1 addition & 0 deletions .dir-locals.el
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
(put 'defannotation 'clojure-doc-string-elt 2)
(put 'defendpoint 'clojure-doc-string-elt 3)
(put 'defsetting 'clojure-doc-string-elt 2)
(put 'setting/defsetting 'clojure-doc-string-elt 2)

;; Define custom indentation for functions inside metabase.
;; This list isn't complete; add more forms as we come across them.
Expand Down
36 changes: 20 additions & 16 deletions docs/developers-guide-osx.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,21 +2,25 @@

## Prereqs

You'll need to run the following commands before building the app:

```bash
# Fetch and initialize git submodule
git submodule update --init

# Install libcurl (needed by WWW::Curl::Simple)
brew install curl && brew link curl --force

# Install Perl modules used by ./setup and ./release
sudo cpan install File::Copy::Recursive JSON Readonly String::Util Text::Caml WWW::Curl::Simple

# Copy JRE and uberjar
./bin/osx-setup
```
1. Install XCode.

2. Run `./bin/build` to build the latest version of the uberjar.

3. Next, you'll need to run the following commands before building the app:

```bash
# Fetch and initialize git submodule
git submodule update --init

# Install libcurl (needed by WWW::Curl::Simple)
brew install curl && brew link curl --force

# Install Perl modules used by ./setup and ./release
sudo cpan install File::Copy::Recursive JSON Readonly String::Util Text::Caml WWW::Curl::Simple

# Copy JRE and uberjar
./bin/osx-setup
```

`./bin/osx-setup` will build run commands to build the uberjar for you if needed.
Run `./bin/osx-setup` again at any time in the future to copy the latest version of the uberjar into the project.
Expand Down Expand Up @@ -45,5 +49,5 @@ You'll probably also want an Apple Developer ID Application Certificate in your
After that, you are good to go:
```bash
# Bundle entire app, and upload to s3
./release
./bin/osx-release
```
2 changes: 1 addition & 1 deletion docs/users-guide/01-what-is-metabase.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,4 @@ Metabase is an open source business intelligence tool. It lets you ask questions

Your questions can be saved for later, making it easy to come back to them, or you can group questions into great looking dashboards. Metabase also makes it easy to share questions and dashboards with the rest of your team.

To fully understand how to use Metabase, it’s useful to have at least a high level understanding of databases, so we'll discuss [the basics of databases](02-database-basics.md) next.
To fully understand how to use Metabase, it’s useful to have at least a high-level understanding of databases, so we'll discuss [the basics of databases](02-database-basics.md) next.
25 changes: 14 additions & 11 deletions docs/users-guide/02-database-basics.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
### A Short Overview of Databases
Before you jump into working with Metabase, it's helpful to know a few key database terms.
Before you jump into working with Metabase, it's helpful to know a few key database terms.

#### Tables
Fundamentally, databases are *collections of tables*. Tables contain one or more *columns* and one or more *rows*. A row is made up of *cells*, and each cell has a *value* that corresponds to the column it falls under.
Expand All @@ -23,10 +23,10 @@ Columns are also sometimes interchangeably referred to as *fields*. Each field h

* **String Types** (TEXT, CHAR, VCHAR, etc.) - In the world of technology, snippets of text are referred to as “strings.” (You’ve probably heard of a “string of text” before.) These fields store things like names, addresses, or anything else that is text.

* **Numerical Types** (Integer, Float, DoubleFloat, Decimal, etc.) - These fields store numbers. Integers are whole numbers; Floats and Decimals are ways to store numbers with decimals in them. Numerical types store things like ages, bank account balances, costs, latitudes, and longitudes.
* **Numerical Types** (Integer, Float, DoubleFloat, Decimal, etc.) - These fields store numbers. Integers are whole numbers; Floats and Decimals are ways to store numbers with decimals in them. Numerical types store things like ages, bank account balances, costs, latitudes, and longitudes.

* **Time Types** (Timestamp, etc.) - These fields are a special number format used to store dates and times (or both), called “timestamps.” Sometimes databases store an integer timestamp which is either seconds or milliseconds, such as `00:00:00 Coordinated Universal Time (UTC), Thursday, 1 January 1970`. This convention allows for compact storage of timestamps.

* **IDs** (also called **primary keys**) - This field in a table uniquely identifies each row. For example, imagine a car reservation app where you can book a car in advance. The ID of the reservation could be the reservation number, and no two reservations would share the same reservation number, allowing each reservation to be uniquely identified by its reservation number.

**Example**
Expand All @@ -42,18 +42,18 @@ In the above table, the `Reservation ID` field is the ID (primary key). The `Nam


#### Relationships
Tables can contain references to other tables, which establishes a relationship between them.
Tables can contain references to other tables, which establishes a relationship between them.

For example, in our hypothetical car booking app’s database, we could have two tables: one for reservations (let's call it **Reservations**) and one for customers, (we'll call this one **Customers**).

To connect the reservation data to the corresponding customer data, you can use a *foreign key*. A foreign key is a special kind of field in a table that references the same column in a different table. Almost always, the field that the foreign key points to is the *ID* or *primary key* in the other table.
To connect the reservation data to the corresponding customer data, you can use a *foreign key*. A foreign key is a special kind of field in a table that references the same column in a different table. Almost always, the field that the foreign key points to is the *ID* or *primary key* in the other table.

For example, in our hypothetical car booking app, we could connect each reservation in the Reservations table to the corresponding customer that made the reservation by having the `Customer` column of the reservation contain the same value as the `ID` column of the customer who made the reservation.

**Reservations**

| Customer | Date | Car |
| ---- | --- | --- |
| Customer | Date | Car |
| ---- | --- | --- |
| 11 | 12/20/2015 | Toyota Camry |
| 12 | 1/2/2016 | Range Rover |

Expand All @@ -65,10 +65,13 @@ For example, in our hypothetical car booking app, we could connect each reservat
| 11| John | 25 |
| 12| Jenny | 31 |

If we wanted to analyze our hypothetical app's database with Metabase, we could ask a question, like:
If we wanted to analyze our hypothetical app's database with Metabase, we could ask a question, like:

What's the average age of all customers who made reservations in February of 2015?

To do this, we’d open up the Reservation table, add a filter to only look at reservations between February 1 and February 28, 2015, select Average for the View. For the Field, now we put our foreign key to use and select Age from the *Customers* table that our Reservations table references — each reservation will now have a corresponding customer age, matched up by the customer ID.

Now that we have a shared vocabulary and a basic understanding of databases, let's learn more about [Asking Questions](03-asking-questions.md)
---

## Next: Asking questions
Now that we have a shared vocabulary and a basic understanding of databases, let's learn more about [asking questions](03-asking-questions.md)
3 changes: 3 additions & 0 deletions docs/users-guide/03-asking-questions.md
Original file line number Diff line number Diff line change
Expand Up @@ -146,4 +146,7 @@ To try it out, type the command `select sum(subtotal), created_at from orders gr

Questions asked using SQL can be saved, downloaded, or added to a dashboard just like questions asked using the question builder.

---

## Next: Creating charts
Once you have an answer to your question, you can now learn more about [visualizing answers](04-visualizing-results.md).
9 changes: 6 additions & 3 deletions docs/users-guide/04-visualizing-results.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,10 @@ To change how the answer to your question is displayed, click on the Visualizati
![visualizechoices](images/VisualizeChoices.png)

If a particular visualization doesn’t really make sense for your answer, the format option will appear faded in the dropdown menu.

Once a question is answered, you can save or download the answer, or add it to a dashboard.

Learn more about [Sharing Answers](05-sharing-answers.md) next.
Once a question is answered, you can save or download the answer, or add it to a dashboard.

---

## Next: Sharing and organizing questions
Now let's learn about [sharing and organizing your saved questions](05-sharing-answers.md).
76 changes: 2 additions & 74 deletions docs/users-guide/05-sharing-answers.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,79 +42,7 @@ Sometimes questions outlive their usefulness and need to be sent to Question Hea

If you have second thoughts and want to bring an archived question back, you can see all your archived questions from the **Archive** link at the bottom of the left menu. To unarchive a question, hover over it and click the box icon that appears on the far right.

## Dashboards
---
### What is a dashboard?
A **dashboard** is a collection of saved questions that you want to refer back to and view regularly. It displays groups of questions and their corresponding answers.

Questions on a dashboard are meant to be viewed together, so they’re usually grouped by some kind of theme or topic, like Users, Inventory, or Reservations. A reservations dashboard could show the number of reservations by day of week, time of day, geographical region, and more.

Have a few key performance indicators that you want to be able to easily check? Make a dashboard featuring questions that show your key metrics and share it with your team.

You can make as many dashboards as you want. Go nuts.

### How to Create a Dashboard
Once you have a question saved, you can create a dashboard. Click the **Dashboards** dropdown at the top of the screen, then **Create a new dashboard**. Give your new dashboard a name and a description, then click **Create**, and you’ll be taken to your shiny new dashboard. You can always get to your dashboards from the dropdown at the very top of the screen.

![Create Dashboard](images/dashboards/DashboardCreate.png)

### Adding saved questions to a dashboard
You can add a newly saved question to a dashboard directly from the window that pops up after you save the question, or by clicking the Add to Dashboard icon in the top-right of a question page. You can also go to one of your dashboards and click the plus icon in the top right to add any of your saved questions to the dashboard.

Once you add a question to your dashboard, it’ll look something like this:

![First Dashboard](images/dashboards/FirstDashboard.png)

### Arranging cards
Each question on a dashboard is in its own card that you can move around or resize as you see fit; just click the edit icon that looks like a pencil in the top-right of the dashboard screen.

Once you're in edit mode you'll see a grid appear. You can move and resize the cards in the dashboard to your liking and they'll snap to the grid.

![Editing dashboard](images/dashboards/DashboardEdit.png)

- To move cards just click and drag.
- To resize a card just click and drag the handle at the bottom right corner of the card.
- To remove a card, click the X icon in the top right corner.

Questions in your dashboard will automatically update their display based on the size you choose to make sure your data looks great at any size.


## Deleting a dashboard
Deleting a dashboard does not delete the individual saved questions on it — it just deletes the dashboard. Remember — dashboards are shared by everyone on your team, so think twice before you delete something that someone else might be using!

To delete a dashboard, click the pencil-looking **Edit** icon in the top right of the dashboard, then click **Delete**.

## Fullscreen dashboards

After you've made your ideal dashboard you may want to put it on a TV or present it in some other visible space to help keep your team up-to-date throughout the day.

To enter fullscreen mode just click the fullscreen icon in the top right of the dashboard.

Once you've entered fullscreen mode you can also switch the dashboard into "Night mode" for higher contrast.

![Night mode](images/dashboards/DashboardNightMode.png)

## Auto refresh
If your data is more realtime in nature you can set your dashboard up to auto refresh.

![Autorefresh](images/dashboards/DashboardAutorefresh.png)

You can set your dashboard to update in 1, 5, 10, 15, 30, and 60 minute intervals depending on how fresh you need the data to be.

Enabling auto refresh will re-run all the queries on the dashboard at the interval you choose, so keep the size of the dashboard and the complexity of the questions in mind when setting up auto refresh.

Combining fullscreen mode and auto refresh is a great way to keep your team in sync with your data throughout the day.

## Configuring dashboard using URL

It is possible to amend URL of the dashboard to automatically enter fullscreen, enable night mode or autorefresh the dashboard. This allows you to configure the dashboard even when you do not have any input access to the device where dashboard will be displayed, for example, scripted screens.

To configure dashboard using URL address, you can append it with hash keys like `fullscreen`, `night`, or `refresh`. Consider this example:

`https://metabase.mydomain.com/dash/2#refresh=60&fullscreen&night`

This URL will make dashboard enter night mode, fullscreen and refresh every 60 seconds.

---

Next, we'll offer up some suggestions on how to create useful dashboards, in our [Tips on Dashboards](06-dashboard-tips.md).
## Next: Creating dashboards
Next, we'll learn about [creating dashboards and adding questions to them](06-dashboards.md).
15 changes: 0 additions & 15 deletions docs/users-guide/06-dashboard-tips.md

This file was deleted.

Loading

0 comments on commit 370599a

Please sign in to comment.