LookerがBIツールではない2つの理由


こんにちは。「LookerはBIツールではなくデータプラットフォームです」と言われて、結局何がどう違うのかわからないという方も多いと思います。
実際に10以上のBIツールと比較検討した上でLookerを導入して10ヶ月程度たった一人ビジネスパーソンとして、その他のBIツールと明らかに違う点が2つあると思っています。

1. LookMLというSQLを抽象化する言語で集計ロジックを一言管理し運用負荷を下げられること
2. Lookerを経由して他システムに必要なデータを正確にデリバリーできること

1だけで３日間くらい語り明かしてしまいそうなので、1については[こちら](https://blog.smartdrive.co.jp/lookerseminar/)で詳細を記事にしておりますのでぜひ読んでみてください。
本記事では2の部分について掘り下げてお話しようと思います。

# 柔軟なデータデリバリーを実現する３の機能

1. [SSO Embed](https://docs.looker.com/reference/embedding/sso-embed)
2. [Schedules](https://docs.looker.com/ja/sharing-and-publishing/scheduling-and-sharing/scheduling-email#%E3%82%B9%E3%82%B1%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB%E3%81%AE%E4%BD%9C%E6%88%90%E3%81%A8%E7%B7%A8%E9%9B%86)
3. [Action](https://docs.looker.com/ja/reference/field-params/action)

# SSO Embed

実際にプロダクトのダッシュボード機能として埋め込みを行っており、Lookerで作成したダッシュボードをシームレスにプロダクトのユーザー様に提供しています。さらにSalesforceにも埋め込みを行い社内での意思決定を促進するダッシュボードもSalesforceのUI上で提供しております。実際にこういった埋め込みを行おうとすると権限管理やダッシュボードの運用保守にかなりの開発工数を割かれるところですが、大幅に削減し短期間でリリースすることができました。

# Schedules

個人的にはこれがなかなか秀逸な機能だと思っているのですが、一般的には「Slackにダッシュボード定期配信する機能でしょ？」と思われている節があるので少し応用的な話になりますが、 [datagroup_trigger](https://docs.looker.com/reference/view-params/datagroup_trigger)を引き合いにただのバッチスケジューリングではないことを強調したいと思います。

datagroup_triggerにSQLをセットしSchedulingすると、Lookerは5分に一回データベースにクエリを発行し、5分前の実行結果と違う結果がデータベースから返却されるとトリガーが発火し、データの配信が行われます。

この機能を応用するとzapierやintegromatのようなシステム間のデータ連携のhubとして使われるRPAツールとほぼ同じ役割かそれ以上の役割をLookerが担ってくれます。internalなユースケースだと数え切れないほどのワークフローを自動化できると思いますが、思い切ってプロダクト開発におけるAlert機能のプロトタイピングの際に使用したりもしました。

# Action

SSO EmbedとSchedulesのバッチスケジューリングに関しては他BIツールでもよく見る機能ですが、Action機能についてはLookerがユニークで持つ機能ではないかと思っています。ダッシュボードからデリバリーしたいデータを探索したのちに、1レコード単位で他システムにデータを送信できます。

実際にAccreteというSMS配信システムとLINEWORKSの2つのシステムと連携しましたので紹介します。

# Action機能を用いたLookerとAccreteの連携

今回はLookerから[AWS lamda](https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/welcome.html)にデータを送信しAccreteのAPIをcallしてSMS送信を行います。

```
  dimension: phone_number{
    type: string
    label: "電話番号"
    sql: ${TABLE}.phone_number ;;
    action: {
      label: "Send SMS Message"
      url: "{{lamda_url}}"
      icon_url: "{{icon_url}}"
      param: {
        name: "telno"
        value: "{{ value }}"
      }
      param: {
        name: "text"
        value: "こんにちは。テストメッセージです。"
      }
    }
  }
```
ここではLamdaの中身については割愛します。
実際に位置情報を元に車両を検索し、対象車両のドライバーにSMS送信を行う画面のキャプチャがこちらになります。

![スクリーンショット 2020-12-15 22.48.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/877875/89febd13-6417-5b47-3ef4-24194d847b12.png)


# Action機能を用いたLookerとLINE WORKSの連携

```
  dimension: line_works_id{
    type: string
    label: "LINE_WORKS_ID"
    sql: ${TABLE}.line_works_id ;;
    action: {
      label: "Send LINE WORKS Message"
      url: "{{lamda_url}}"
      icon_url: "{{icon_url}}"
      param: {
        name: "line_works_id"
        value: "{{ value }}"
      }
      param: {
        name: "text"
        value: "こんにちは。テストメッセージです。"
      }
    }
  }
```
ここでもLamdaの中身については割愛します。
実際に位置情報を元に車両を検索し、対象車両のドライバーにLINEWORKSでメッセージ送信を行う画面のキャプチャがこちらになります。

![スクリーンショット 2020-12-15 22.48.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/877875/4c534397-69a5-bf64-cc10-e853cd17b1a3.png)


# まとめ

LookerがBIツールではない理由をお話してきました。
ある程度BIツールを使い込んでいる方は「いろなところで謎定義のダッシュボードができて、結局正しい数値かどうか確認しないといけなくて意思決定にストレスがかかり保守も作った人しかできない」「ダッシュボードではデータみれてるけど、他のシステムにデータを渡すには結局別のツール導入や開発が必要」という状況はあるあるかなと思いますのでぜひ検討してみてはいかがでしょうか。