Looker Blocksについて

# Blocksとは

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/76913/0404715a-8c6a-8438-532f-ea16916fec98.png)

Looker Blocks。Lookerを利用する上でのテンプレート集。
View自体を作るものだったり、外部サービスとの連携、外部データの取り込み、ツールへの埋め込みなど。

これを利用すれば、ViewやDashboardの構築が効率よくできる、という期待があります。

BlocksのTOPページを見ると、以下の様な記載がありました。

>Looker Blocks®は、デザインに組み込んで分析を高速化できる、あらかじめ用意されたコードのビルディングブロックです。いちから構築するよりすでにあるものを再利用し、それぞれの仕様に合わせてブロックをカスタマイズします。

ref. [LookerでのBlocksのTop](https://ja.looker.com/platform/directory/home)


docs（マニュアル）（英語）は[こちら](https://docs.looker.com/ja/data-modeling/looker-blocks)。

## 6つのカテゴリ

このBlocksは、大きく6つのカテゴリがあります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/76913/ba36f377-76ad-c8a7-f811-9f33b1983775.png)

* 分析
* ソース
* データ
* データツール
* ビジュアリゼーション
* 組み込み型

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/76913/63e3c8f7-ddfe-1099-4726-186edd5fe776.png)


Block一覧で見ると結構多いです。
ぱっと見、ソースブロックが多い。（赤いやつ）
Google Analytics や Zendesk、Karteなんかもあります。

# 調べてみた

## 数があったので、リストアップしてみました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/76913/c79a0d05-3ecd-78f6-1048-aac3e3240a0c.png)


こちらの[GoogleSpreadSheet](https://docs.google.com/spreadsheets/d/1bRwvHkEf6G_WsQyXNe9K4FfBGoyc850Qgc-SFCHtN8I/edit?folder=0AFU68WFoAyazUk9PVA#gid=0)にまとめています。

※HTMLのタグベースでの抽出。
※集計の都合上、ActionHubも混じっています。

## 集計しました。

全部で、**124個**ありました。
※Action Hub (アクション) 除く


| 分類(訳) | Block |
|:--|--:|
| ソース | 76 |
| 分析 | 21 |
| アクション | 16 |
| 組み込み型 | 12 |
| Viz | 8 |
| データ | 5 |
| データツール | 2 |
| **Grand Total** | **140** |


やはり`ソース`が多いのは、フィルタにもある`著作者`など、接続を提供している企業が多いのがありそうですね。
Looker社を除くと、44社が Blocks / Actions を提供していました。

## Googleで検索すると。。。

Lookerサイト以外だと、あまり少ないですね。
Developers.IO(クラスメソッドさん)には、Blocksの解説がいくつかありました。

[[Developers.IO]Looker Blocks™のSource Blocksを試してみる #looker](https://dev.classmethod.jp/business/business-analytics/looker-blocks-source-blocks-try-looker/)
AdventCalender 12/12の記事でもあります。


[Looker Blocksを使ってZendeskのデータをお手軽にビジュアライズ #looker](https://dev.classmethod.jp/business/business-analytics/looker-blocks-zendesk-stitch/)
こちらは、ソースブロックの解説（Zendesk）です。

[Looker Blocks™のViz Blocksを試してみる #looker](https://dev.classmethod.jp/business/business-analytics/looker-blocks-viz-blocks-try/)
こちらは、Vizブロックの解説です。

[KarteさんのBlocks導入](https://cxclip.karte.io/product/looker-blocks/)
KarteさんのData Hubと、そのままView / Dashboardの雛形が入っている。
データさえあれば、速攻で可視化でき、まさにBlocksのテンプレートの真骨頂。

# 使ってみた

ここでは記事になっていなかった、分析、データ、データツールの３つを試してみました。
※細かい部分は別記事でまとめる予定です。

## 分析ブロック

試したのは、「[統計的有意性判定を用いたABテスト](https://looker.com/platform/blocks/analytic/ab-testing-with-statistical-significance)」です。


### 1. データセットの準備

データセットはこちらのものをお借りしました。
[[Kaggle]A/B testing](https://www.kaggle.com/zhangluyuan/ab-testing/data#)

### 2. Blockの利用

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/76913/dcc24e00-c901-1281-2e8e-feb9c6fd6de8.png" width=70%>

Blockを選択すると、こちらのページに飛びます。
ここでは、このBlockがどういうものか概要レベルで記載されています。

「See the Code」のボタンをクリック後、今度は[Helpページ](https://help.looker.com/hc/en-us/articles/360023802373--Analytic-Block-AB-Testing-with-Statistical-Significance)に飛びます。

どうやらここではcodeを配るのではなく、考え方のレクチャーに近い感じでした。


### 3. ページ記載に従って、実装

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/76913/a9cc5c23-6059-421b-ceb4-cfbd9cea3e50.png" width=80%>

* 結構時間がかかりました。
* 突然現れた派生テーブル：user_order_facts
  * 内容が分からないので、ある程度想定しながら。
* BigQuery(Legacy)に対応していない関数使っていた（POWER / STEDEV ALL）
* )閉じがない。。。  

```yaml
sql: 1.0 * STDDEV(all CASE WHEN NOT ${a_b} THEN ${user_order_facts.lifetime_orders} ELSE NULL END ;;
```

### 分析ブロックを使ってみて


* 何個か見てみたけど、基本的に、discourseやhelpのページに飛ぶ。
* 作るに当たっての導出と、lookmlの一部が書いてある感じ。
* でも、ここから自分の環境に合わせて、カスタマイズが必要。
  * **内容をある程度理解して、手元のデータセットに合わせてある程度修正が必要。** 
  * ここが少し時間かかるし、サンプルのlookmlがそのまま使えないかも。
  * ABテストのときは、t_score出す計算式が予め書いていたので、そこは楽かも。

## データツールブロック

２つしかないので、「[コホート分析](https://looker.com/platform/blocks/data-tool/cohort-analysis)」を試してみました。

### 中身は？

> This block builds on the concepts described in our Cohort Block and allows for further customization based on user-selected criteria.

このBlockは、分析ブロックにある「Cohort Block」をベースにし、メジャーをパラメータで可変にできるのがポイントらしいです。

記載されていたのは、parameterによって、表示するmeasureを動的に変えるtipsでした。

```yaml
parameter: measure_picker {
  type: string
  allowed_value: { value: "Cumulative Revenue" }
  allowed_value: { value: "Transactions" }
  allowed_value: { value: "User Count" }
  allowed_value: { value: "Active Users" }
}

measure: cohort_values {
  type: number
  hidden: yes
  sql: CASE WHEN {% parameter measure_picker %} = 'Cumulative Revenue' THEN ${cumulative_revenue}
      WHEN {% parameter measure_picker %} = 'Transactions' THEN ${order_count}
      WHEN {% parameter measure_picker %} = 'User Count' THEN ${user_count}
      WHEN {% parameter measure_picker %} = 'Active Users' THEN ${active_user_count}
      ELSE 0
      END ;;
}
```

以上でした。

## データブロック

試したのは、「[人口統計データ](https://looker.com/platform/blocks/data/demographic-data)」です。

こちらはLookerが用意しているデータ＋LookMLが提供されるので、自環境に取り込んでExploreなどで使用していくイメージです。


### 1. まずは、Githubに移動

https://github.com/llooker/datablocks-acs

こちらには、以下が格納されています。
* readme
* 各データソース（Redshift, BigQueryなど）に対応したModel/Viewファイル

### 2. データの取得

データソースは、S3にあります。
readmeにも、AWS S3→Redshiftへの送信方法が記載されていました。

また、Google Cloud Storageにもあるらしいです。([ソースはこちら](https://discourse.looker.com/t/retired-data-block-data-block-setup-instructions-and-everything-in-between/5949/12
))
gsutilを使って、ダウンロードできます。

```bash
bash-3.2$ gsutil ls gs://looker-datablocks/acs_fast_facts
gs://looker-datablocks/acs_fast_facts/
gs://looker-datablocks/acs_fast_facts/acs_answers_2015_leaf
gs://looker-datablocks/acs_fast_facts/acs_questions_2015
gs://looker-datablocks/acs_fast_facts/block_group_attribs
gs://looker-datablocks/acs_fast_facts/fast_facts
gs://looker-datablocks/acs_fast_facts/geo_2015
gs://looker-datablocks/acs_fast_facts/geography_map
gs://looker-datablocks/acs_fast_facts/zcta_distances
gs://looker-datablocks/acs_fast_facts/zcta_distances_0
gs://looker-datablocks/acs_fast_facts/zcta_distances_1
gs://looker-datablocks/acs_fast_facts/zcta_distances_2
gs://looker-datablocks/acs_fast_facts/zcta_distances_3
gs://looker-datablocks/acs_fast_facts/zcta_distances_4
gs://looker-datablocks/acs_fast_facts/zcta_distances_5
gs://looker-datablocks/acs_fast_facts/zcta_distances_6
gs://looker-datablocks/acs_fast_facts/zcta_distances_7
gs://looker-datablocks/acs_fast_facts/zcta_distances_8
gs://looker-datablocks/acs_fast_facts/zcta_distances_9
gs://looker-datablocks/acs_fast_facts/zcta_to_tract_w_state
```

### 3. LookMLの設定
使用しているデータソースに応じた、model/explore/viewのLookMLファイルが置いてあるので、これを使用します。

connectionや接続先のテーブル名などは予め記載されているので、自環境と情報が違う場合は修正が必要です。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/76913/51ff1ca2-999a-aa9b-0d17-01521002cbf0.png" width=70%>
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/76913/370291d6-8a38-6eda-2ad3-35d82119723c.png" width=70%>

## おもしろBlock

最後に、Blocksを見ていて気になったのがコチラです。
[LookVR](https://looker.com/platform/blocks/embedded/lookvr)

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/76913/ed2555e6-c9ef-7257-4310-47560a0fc5c6.png" width=70%>

動画を見ると、ちょっとおもしろいなって思いました。
（巨大な棒グラフに登っている）
https://youtu.be/u76ww3NJFgE

こちらの[Blog](https://looker.com/blog/creation-of-lookvr)や[Steam](https://store.steampowered.com/app/595490/LookVR/)のページによると、自分のデータセットを使ってみることも可能そうでした。
Oculusが身近にあるので、来年ちょっとチャンレンジしたいと思いました。

# まとめ :  Blockを使ってみて

* Blockは6つのカテゴリ、ソースブロックが充実している。
* 分析ブロックは、さくっと横展開できず、自分のデータセットと照らし合わせて作る必要がある。
* データブロックが少ない & USA中心なのが寂しい。
* データツールブロックは一度見れば十分かも。
* Blocksは追加できるようだけど、個人レベルではしんどそう？

種類もそれなりにありますが、分析ブロックなどはさくっと使えるという印象じゃなかったです。
ただ、ナレッジとテンプレートという意味では良いと思うので、もっと色んな角度のものが増えるといいなと思いました。