Lookerで出てくる用語をまとめ

# はじめに
Lookerを初めてみて、最初に気になるのは独特の単語。
構造を知る上で重要だけど、けっこう分からないのでそこんとこまとめました。
随時追加していくので、コメントいただけると幸いです :pray:  

※前提として、BigQueryにデータを置いて、それをLookerで使うスタイルを取っています。

## Looker
このツールの名前。
https://looker.com/

概要はこのブログ記事を見るのが良い。
[エンジニアを魅了する次世代 BI ツール『Looker』を Quipper が導入した理由（わけ）](https://quipper.hatenablog.com/entry/2018/06/04/080000)

## LookML
Lookerの中核を成すもの。
データベースの接続や項目の定義、計算式、など、Looker上で可視化を表現するために必要なことを定義していく。

これ自体は、YAMLベースで書いている。
そのため、TableauなどGUIのBI系使い慣れている方には抵抗あるかと。
一方、定義ファイルなので、Lookerの特徴であるGitによるリポジトリ管理ができるという利点もある。

ちなみに、Lookerのマニュアルにはこう書いている。
`LookMLはSQLデータベース内のディメンション、集計、計算、およびデータ関係を記述するための言語です。`
[（公式マニュアル）LookMLとは?](https://docs.looker.com/ja/data-modeling/learning-lookml/what-is-lookml)
※このマニュアルが日本語化されていて、構造もわかってとてもいいです。

## Project
後述する一連のLooker周りの資産をまとめたもの。
可視化したいプロダクトやドメイン単位で分けるとよいかと。
あまり細かく分け過ぎると、Project間をいったりきたりする必要があるので、ある程度の粒度がいいかも。

## Model
ViewがLooker上で利用できるようにするために、Exploreとして定義するところ。
ここで記載したものが、Exploreに表示される。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/76913/c0fc28a1-ebae-94a3-d309-0d1870bb43b6.png" width=20%>


新しいテーブルを追加したときは、まずここにExploreを定義していくとよい。

公式には、
`モデルには、使用するテーブルとテーブルの結合方法に関する情報が含まれます。`
とある。
[(公式マニュアル)モデル](https://docs.looker.com/ja/data-modeling/learning-lookml/lookml-terms-and-concepts#%E3%83%A2%E3%83%87%E3%83%AB)

## View
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/76913/a7222b01-6ed3-b668-9ef5-36cfff8f1dd7.png" width=80%>

入力元となるテーブルに合わせて、表示したいフィールドを定義する。
フィールドには、大きく２つ種類に分かれる。

* dimension
* measure

テーブルを読み込むだけではダメで、ここで使いたい項目を定義しないといけないのは、Tableauユーザーとしては手間に感じるかも。

[(公式マニュアル)ビュー](https://docs.looker.com/ja/data-modeling/learning-lookml/lookml-terms-and-concepts#%E3%83%93%E3%83%A5%E3%83%BC)

### dimension
いわゆる切り口、クロス集計の縦軸と横軸の部分。
パラメータを使って、動的に変動させることも可能で、こねくり回せば結構応用が効く。

### measure
ディメンションごとに、指定された計算式で集計した値を表示する。
定義済みのメジャーを組み合わせて新しい計算式を作ることができる。


```yaml
  measure: sales {
    type: sum
    sql: ${sales_amount} ;;
  }
  measure: uu {
    type: count
    sql: ${user_id} ;;
  }
  measure: sales_avg_uu {
    type: number
    sql: ${sales_amount} / ${user_id} ;;
  }
```

### ドリルダウン
フィールドには、ドリルダウンを設定できる。
ドリルダウンは、Exploreで定義した切り口のレポートから、さらに細分化した数値を表示する機能。

measureで設定することが多い印象。
表示結果の数値部分をクリックすると、dimensionに従った詳細な数値が得られるイメージ。

ex) 
日別の売上グラフがあり、商品名をドリルダウンに指定すると、
各日の売上をクリックすると、その日の商品別の売上が出るイメージ。

[(公式マニュアル)ドリルダウン](https://docs.looker.com/ja/data-modeling/learning-lookml/lookml-terms-and-concepts#%E3%83%89%E3%83%AA%E3%83%AB%E3%83%80%E3%82%A6%E3%83%B3)

### set
複数のフィールドをひとまとめにするリスト。
ドリルダウンと組み合わせて使う。

複数のmeasureで同じドリルダウンのフィールドを使うとき、setに記載することで、再帰的に利用できる。

```yaml
  measure: sales {
    type: sum
    sql: ${sales_amount} ;;
    drill_fields: [sales_drill_set*, sales]
  }

set: sales_drill_set {
  fields: [
    product_name,  # 商品名
    prefecture_name,  # 都道府県名
    gender # 性別
  ]
}
```

## Explore
ここで作成したViewを使った探索的な分析やグラフとかの作成を行う画面。
フィールドを設定した後、正しい挙動になっているかはこの画面で実際のデータを確認して進めていくのがよい。

ここまで来るには、 

* Viewに、使いたい項目（Dimension, Measure）などを定義
* Modelに、先程のViewをExploreとして定義
* Exploreメニューから分析したいExplore（View）を選択する

公式では、`ユーザーがクエリできる画面`とある。
[(公式マニュアル)](https://docs.looker.com/ja/data-modeling/learning-lookml/lookml-terms-and-concepts#explore)

## Look
Exploreで作ったグラフ、定義したフィルタ情報を名前をつけて保存したもの。

LookはそれぞれSpaceに保存されます。
個人のSpaceなら閉じたところで、SharedされたSpaceなら、全体に公開されていきます。

## Dashboard
こんな画面で１つ１つが`タイル`と呼ばれるカードみたいなのの集合体。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/76913/f9b8a051-0337-1c45-f312-cfb1bdf132a4.png" width=80%>

このDashboardにある、それぞれのタイル（グラフ）をクリックすると、その定義を引き継いだExploreが立ち上がる。
もとのLookを修正するときは、各タイルに付随するメニューから、`View Original Look`の手順でアクセスする。

## Space
LookやDashboardを保存する場所。
主に２種類のSpaceがある。

* `Shared Space` 共有されたSpace
* People配下の個人Space

# まとめ
Tableauには慣れていたので、最初の始め方で単語やアプローチが分からなかった。

今回の用語についての詳細、特にLookML周りはこちらも補完していくとより理解が深まってよいと思います。
[(公式マニュアル)LookMLプロジェクト](https://docs.looker.com/ja/data-modeling/learning-lookml/lookml-terms-and-concepts#lookml%E3%83%97%E3%83%AD%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88)