[レポート]Technical Deep Dive on Looker — The Enterprise BI Solution for Google Cloud #GoogleCloudNext

GCPの新メンバーを紹介しまーす!
2020.08.12

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

大阪オフィス所属だが現在は奈良県でリモートワーク中の玉井です。

現在、2020年7月14日から9月8日までの数週間にわたってGoogle Cloudのデジタルイベント『Google Cloud Next '20: OnAir』が開催されています。

このイベントでは、2020年7月14日から毎週、異なるテーマで様々なセッションや催しのコンテンツが公開されています。(コンテンツは PDT[米国太平洋標準時(夏時間)]での火曜日午前9時→JST[日本時間]の水曜午前1時に配信される形になっています)

  1. [2020/07/14〜] Industry Insights
  2. [2020/07/21〜] Productivity & Collaboration
  3. [2020/07/28〜] Infrastructure
  4. [2020/08/04〜] Security
  5. [2020/08/11〜] Data Analytics
  6. [2020/08/18〜] Data Management & Databases
  7. [2020/08/25〜] Application & Modernization
  8. [2020/09/01〜] Cloud AI
  9. [2020/09/08〜] Business Application & Platform

当エントリでは、その中から「Data Analytics」のセッションとして公開された『Technical Deep Dive on Looker — The Enterprise BI Solution for Google Cloud』の内容について紹介していきたいと思います。

セッション概要

公式ページで紹介されているセッションの概要情報は以下の通り。

Title(タイトル)
Technical Deep Dive on Looker — The Enterprise BI Solution for Google Cloud

Speakers(講演者):
Olivia Morgan (Enterprise Customer Engineer / Looker)

Description(説明):
Thousands of users accessing petabytes of data on a daily basis — a challenging proposition, without a doubt, but Looker makes it possible. Beyond just accessing data though, Looker's platform transforms your company's relationship with data. In this session we will go under the hood of Looker to show how LookML empowers developers to take advantage of powerful data warehouses like BigQuery & ultimately enhance the workflows of end users.
We'll dive into LookML's ability to use Google Cloud Functions & Search API to enhance dashboards, leverage BQML within our modeling layer to give users access to forecasts, tie in BigQuery's public datasets to add richness to analysis, and show off LookML's ability to handle nested tables for faster performance on transaction analysis all through a complete end to end demo.

(何千人ものユーザーが毎日ペタバイトのデータにアクセスしています。しかし、Lookerのプラットフォームは単にデータにアクセスするだけではなく、企業とデータの関係を変革します。このセッションでは、LookMLがどのように開発者にBigQueryのような強力なデータウェアハウスを活用させ、最終的にはエンドユーザーのワークフローを向上させるのか、Lookerに深く潜っていきます。
Google Cloud Functions & Search APIを使用してダッシュボードを強化したり、モデリングレイヤー内のBQMLを活用してユーザーが回帰予測にアクセスできるようにしたり、BigQueryのパブリックデータセットと連携して分析にリッチさを加えたり、入れ子になったテーブルを処理してトランザクション分析のパフォーマンスを向上させたりするLookMLの能力を、エンドツーエンドの完全なデモを通して紹介していきます。)

セッションレポート

はじめに

本日のセッションでは、Google CloudのエンタープライズBIソリューションであるLookerについて技術的に深く掘り下げていきたいと思います。

まず、今日のセッションのほとんどをTechnical Deep Dive(デモ)に費やす予定です。ただし、まずはLookerの概要やアーキテクチャの概要を説明するために、BIのランドスケープと、データをどのように体験するかを説明するところから始めたいと思います。ここで言いたいのは、データをどのように体験するかということで、これまでのような効果的なダッシュボードも素晴らしいんですけど、Lookerプラットフォームはそれ以上にデータの可能性を切り開いてくれるということです。

Looker Overview

アーキテクチャなど

このスライドの一番下を見ると、Google Ads、Shopify、HubSpotなど、たくさんの異なるデータソースが表示されています。これらのソースは、すべてデータウェアハウスやデータレイクに連携されています。BIプラットフォームとしてのLookerは、これらのデータベースやデータウェアハウスの上に配置されます。Lookerは強力なAPIレイヤーでもあり、エンドユーザーやITエンジニアに様々なメリットをもたらします。l

ここで重要なのは、メトリクスをLookerで管理していることです。LookerはDBの上に存在しているので、ワンストップショップ型のバージョン管理モデリングレイヤーと言えます。ビジネスロジックを定義し、そのビジネスロジックを視覚的にバージョン管理された方法で繰り返し(DBに対して)実行します。

また、最高クラスのAPIも提供しています。データ用のAPIだけでなく、Lookerのインスタンスを管理するためのAPI、ユーザーグループやユーザーの属性を管理するためのAPIも用意しています。また、カスタムアプリケーションを構築する場合には、各種SDKも提供しています。

Lookerをデータベースの上に乗せるというのは、車に乗ることに例えられます。BigQueryという車に乗った場合、Lookerは、BigQueryのすべての機能を強化し、恩恵を受けることができます。これらの機能に加えて、バージョン管理されているのでセキュリティも強化されていますし、クラウドファーストなので、LookerはGCPや他のクラウドを問わないマルチクラウドのアプローチをとっています。

また、BIを様々な方法で考えている場合、4つの異なる手法で運用することができ、様々なエンドユーザーにアナリティクスを提供することができます。

Looker4つの使い方

最初の赤いBOXは「Modern BI and Analyrics」です。これは従来のBIデータの消費…つまりレポートやダッシュボードといったものになります。「Customer 360」のダッシュボードの構築が使用例として挙げられるかもしれません。

緑色の「Integrated Insights」は、チャネルやメディアの顧客を見るために、ユーザーがすでにデータを消費している場所にデータを持ってくるというアプローチです。例えば、Salesforceで運用している営業担当者がいる場合、彼らに別のアプリケーションにログインするように求めるのではなく、アプリケーションを使用して、彼らが使用しているツールにインサイトを埋め込むのです。アプリケーションを使用して、それらのインサイトを彼らがすでに知っていて愛用しているツールに埋め込むのです。

黄色の「Data-driven Workflow」は、 基本的に前述した2つを自動化します。これは、BIツールを使ってインサイトを引き出し、Lookerを使って、顧客のヘルスチェックのスコアに基づいて、顧客のヘルスチェックが変化しそうな顧客を見つけ出すことができるようにするというものです。そして、アプリケーションの中で、アプリケーションを使って、顧客のヘルスチェックのスコアが低い場合に、その顧客にメールを送るというアクションを起こすことができます。

青色は「Custom Application」です。カスタムアプリケーションは、どんな形でも作成することができます。Lookerがこれほど強力な方法でこれを開放している大きな理由は、データベースだけでなく、強力なAPIスイートを持っているからです。バージョン管理とデータガバメントレイヤーからメトリクスを引き出すことができれば、多くのカスタムアプリケーションを作成することができ、APIを使用してビジュアライゼーションやデータポイントをレンダリングし、夢のようなカスタムワークフローを作成することができます。

デモ

デモのポイント

それでは本日のデモに入ります。

  • 今回使用するLookerインスタンスはGCP上でホストされており、BigQueryの上に存在することを強調したいと思います。
  • デモではGoogle Cloud Functionsを使用します。また、商品画像の検索などには検索APIを使用します。
  • 商品の販売と在庫予測のためのLookerモデルをBQMLで作成します。
  • BigQueryの天気の公開データセットも使用する予定です。これにより、分析をよりリッチにするためにパブリックデータセットとの対話を開始できる例を見ることができます。
  • 入れ子になったテーブルを活用して、トランザクション分析のパフォーマンスを高速化しています。
  • 最後に、BIエンジンとLookerのAggregate Awarenessを使用して、より高速で効率的なクエリを利用することができます。

LookerとGCP

ここでは、GCPとBigQueryの上でLookerを使うTechnical Deep Diveを紹介したいと思います。このLookerは、GCPでホストされ、BigQueryと連携しています。小売業のデータセットを使用しています。デモの目標は、マーチャンダイジングVPやリージョナルVPがログインしてパフォーマンスを見るようなエンドユーザーエクスペリエンスをサポートできるようにすることです。今日はほとんどの時間を画面上部のDeveloperタブに費やします。しかし、まず私たちがすることは、Adminタブでデータベース接続を作成することから始めます。一度データベース接続を作成すると、Developerタブで、LookerのセマンティックモデルやLookを構築します。DeveloperタブはLookerのセマンティックモデルを構築する場所です。私たちが開発してLookMLを作成している場合は、それらのModelをExploreタブを介してエンドユーザーに公開します。エンドユーザーのために、Exploreタブで構築したものは、Browseタブに表示され、エンドユーザーのためのボードやフォルダも表示されます。

今回のデモでは、すでにデータとの接続が確立されています。それでは、この接続を編集して、どのように設定されているかを確認してみましょう。Lookerのデータ接続では、接続しているDBはBigQueryですが、このパネルを開くと、レガシースタンダードの「Postgres SQL」や「Cloud SQL」、「Cloud Spanner」など、様々なサービスが表示されます。プロジェクト名とデータセット名を選択してLookerに接続することができますが、もう少し動的な使い方をしたい場合は、ユーザー属性を使って、ユーザーやグループの値を動的に設定することもできます。別々のプロジェクト名やデータセットを指定している場合には、ユーザー属性を使用して動的に値を設定します。

GoogleではOAuthを使用している人が多いかもしれません。LookerはOAuthと統合しており、IAMとの統合やサービスアカウントをサポートしています。これはLooker内で認証と接続設定をサポートするもう一つの方法です。ユーザー名とパスワードを入力して、下の方にある「ユーザー名」と「パスワード」を入力してください。

もう一つの興味深い機能は、1つのBig Queryクエリの取得最大バイト数を設定したい場合のMax Billing Gigabytesです。これもユーザーやグループに対してこの値を動的に設定することができます。これで接続が確立されました。

Projectの作成~派生テーブルの解説

※ここでは、Project、Model、View、dimension、measureといった、Lookerの基本要素の説明が行われました。下記等を見れば同様の内容はカバーできるので、本レポートでは割愛します。

BigQuery MLとの連携

LookerでBQML(BigQuery ML)を利用する例として、在庫予測テーブルと顧客クラスタリングテーブルがあります。

画面にはstock_forecastingというViewがあります。このBQMLモデルを使って、transactionテーブルから約200件の学習データ入力を行い、最終的にはBQMLの線形回帰を使って、店舗別のアイテム別・週別の売上を予測しています。

ここで回帰を行うとします。このSQL派生テーブルでsql_createを使用して、派生テーブルの名前を作成または置換し、線形回帰を使用していることがわかります。これらはLookMLで定義されているので、線形回帰を変更したり、これらのBQMLモデルを反復処理したりしたい場合は、これらのModelを簡単に反復処理して、フロントエンドで検証したりテストしたりすることができます。

次は顧客クラスタリングです。これは顧客セグメントを作成するためにクラスタリングを使用した良い例です。ここでも顧客クラスタリングのInputがあります。上の方にLookerのネイティブ派生テーブルを定義しています。ここでクラスタリングモデルを定義します。ここでは4つのクラスタを定義しました。そして、これらのクラスターを使って、フロントエンドでは、Exploreを使って、ミレニアル世代、ジェネレーションX世代、新規顧客など、様々な顧客セグメントの探索を始めることができます。

下の方には顧客クラスタリング予測もあります。これが何をしているのかというと、これは私たちのブロックを使って、顧客を分類して、ミレニアル世代や退職した世代、ジェネレーションX世代などに分類するのに役立ちます。繰り返しになりますが、このBlocksは箱から出してすぐに使うことができますし、このModelを反復したり、どんな形でもカスタマイズしたい場合にも使えます。

BigQueryのパブリックデータセットをLookerで利用

store_weatherテーブルを見てみます。これは、BigQueryの天気に関するパブリックデータセットを使用して、小売店の店舗を最寄りの気象観測所にマップする例です。この例では、BigQueryのグローバル天気予報パブリックデータセットを使用して、小売店の店舗を最寄りの気象観測所にマップしています。BigQueryのパブリックデータセットを利用して、様々な年ごとにLooker上でマッピングを行っているのがわかります。

Google App Engineとの連携

このダッシュボードでは、エンドユーザーが株式予測と顧客クラスタリングのすべてを見るために来ることになります。このデモに置いたパブリックデータセットは、簡単に利用できるフォーマットになっており、視覚的に見ることができます。自分の店舗がどこにあるかを地理的に見ることができます。また、トップムーバーを掘り下げたい場合は、店舗別の変化とカテゴリー別の変化を見ることができます。そして、これらに対して簡単に行動を起こすことができます。

そこで今、Google App Engineと統合して、店舗の店長に連絡するためのテキストや通話機能を作成したいとします。その店長に素早くテキストを送ることができるので、先に行って彼らの受信箱にヒットするリンクをつかむことができます。

そのリンクを開くと、私のロサンゼルスの店舗の詳細が表示されます。そして、私は簡単に店のパフォーマンスが低いかもしれない理由の調査を開始することができます。

同業店比較を見ている、 同業他社との比較を見ることができます。天候の傾向を見て、私の取引の減少が天候と関係しているかどうかを確認できます。次に、在庫予測に移ると、予測値と比較してどのくらいの商品の在庫があるかを簡単に確認することができます。在庫の差は何なのか。もしこれらの情報のいずれかにアクションを起こす必要がある場合は、ここから先に進んで調査し、レポート作成インターフェースに戻って、アラートを出すことができます。

この場合、私の株価差が特定の値以上になるかもしれません。もちろん、これはBI分析のワークフローに過ぎませんので、より高度なものにしたい場合は、カスタムアプリケーションに埋め込むiframeにする必要があるかもしれません。この連携のポイントは、いずれもAPIエンドポイントやクエリエンドポイントになり、カスタムアプリケーションやカスタムワークフローに引き込むことができます。

おわりに

ガッツリなLookerデモでした。しかしいつもと違うのは、Lookerの周りが全部GoogleCloudだということです。

Googleファミリーになったということで、GCPとの連携が凄まじいものになっています。個人的にはBQMLが強力だと思っていて、これがあれば、Looker側で機械学習の作業を実施することができてしまいます。どこかで技術検証してブログにしたいですね。

Google Cloud Next ’20: OnAir | シリーズ | Developers.IO