5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Google Cloud + GamingAdvent Calendar 2020

Day 21

BigQueryとデータポータルでゲームデータを可視化する

Posted at

グレンジでは,アプリケーションのログデータをBigQueryに保存し,データポータルを利用して可視化しています.
データポータルは,さまざまなデータを視覚化,分析することができるツールで無料で利用することができます.
この記事では,その中で得られたTipsを様々なケースにそって解説していきます.

データポータルの使い方に関しては,基本的な使い方を参照してください.

データの連携

データポータルでは様々なコネクタと連携することができます.
コネクタには,BigQueryCloud SpannerGoogle Sheetsだけでなく,外部パートナーのデータをコネクタとして利用することができます.
接続できるデータの種類はConnect to Dataのページで確認することができます.

グレンジでは,主にBigQueryに出力されいているアプリケーションのデータを視覚化し分析しています.

BigQueryのScheduleの活用

BigQueryは,非常に高速にSQLを処理してくれますが,DataPortalに多くのグラフを追加しているとどうしても表示速度が落ちてしまいます.
例えば,1つのダッシュボードに1日目,2日目,・・・7日目までのそれぞれのユーザー数をiOS,Android,その合計の数を出しているダッシュボードがあると,1つのダッシュボード内で7(日)✕3種類(iOS,Android,合計)のSQLが流れることになります.

また,ユーザーのアクセスログなどはBigQuery内では,AccessLog_20201221などのように日付で分割しているので,7つのテーブルから集計することになります.

こういった大きなログをもつテーブルを日付をまたいで集計すると時間もコストもかかってしまうので,BiqQueryのクエリのスケジューリングを利用して1つのテーブルにデイリーで集計し,集計テーブルを参照するようにしています.

ゲームデータを連結する

ユーザーのデータとゲームデータ(アイテム情報やランク情報など)を紐付けてデータを出したいことがあります.
ゲームデータは,IDが数字であることが多く,その数字だけを見ても何のアイテムかが一見するとわかりにくいのでアイテム名(やくそうや鉄の剣など)やランク(AランクやSランクなど)を具体的な名称でグラフに表記しています.

グレンジでは,こういったデータをGoogleDrive上にcsv形式で保存しています.

BigQuery上で連結する

そこで利用しているのは,Google ドライブデータのクエリです.
この機能を利用することで,ゲームデータをBigQueryからクエリできるようにし,BigQuery上で連結させたデータをビューの機能を利用し作成したビューを参照させることでデータポータルから利用しています.

他にもビューを利用した方法は,イベントデータの集計などでも利用しています.
各イベントに参加したユーザーの進捗度や使ったアイテム数などをイベントごとにサマリしておき,イベントIDごとにsuffixをつけたテーブルに保存しておき,データポータルから特定のテーブルを取得するviewなどを作成して取得しています.

例えば,UserMisson_20201221のようなユーザーのミッション進捗が日付ごとにシャーディングされたテーブルがあり,それをUserMissionSummary_1(1はイベント名)のようにイベントIDを集計していたとします.

このとき,それぞれのテーブルは以下のような形になっています.

  • UserMisson_20201221
userId missionId datetime
1 10001 2020-12-21 11:11:11
2 10001 2020-12-21 12:34:56
1 10002 2020-12-21 13:45:00
  • UserMissionSummary_1
eventId missionId userCount
1 10001 2
1 10002 1

このようなUserMissionSummaryは,イベントごとに作成されている場合,BigQuery上で以下のようなビューを作成しています.

SELECT * FROM `UserMissionSummary_*`

このSQLをビューとして保存しデータポータルから参照しています.

こうすることで,各イベントのデータを一括で取得し,前のイベントとの比較などを行えるようにしています.

データポータル上で連結する

データポータルにもデータを連結させる機能があります.
データの統合を利用することによって,複数のデータをデータポータル上で統合させることができます.

ただし,この機能では1つの結合方法でしか複数のテーブルを結合することができないので注意が必要です.
A,B,Cというテーブルをx,yというキーで結合することができますが,A,Bというテーブルをx,yキーで,Cというテーブルはxキーのみで結合するなどはできません.

データポータルでBigQueryのカスタムクエリを利用する

データポータルでは,データソースとしてBigQueryを利用するときにカスタムクエリを作成することができます.
この機能は,BigQueryのテーブルやビューではなく,カスタムクエリを作成し,その結果をデータポータル上で利用できる機能です.
非常に柔軟にSQLを作成することができ,日付パラメータなどを扱える反面,カスタムクエリ作成者以外がカスタムクエリを変更できないのがデメリットです.
チームでデータポータルを作成している際に,特定のグラフだけ特定のカスタムクエリ作成者だけしか扱えないと変更したり内容を確認したりすることができないと不便です.
なのでグレンジでは,この機能は利用せずに,前に説明した「BigQuery上で連結」または,「データポータル上で連結」などを利用して対応しています.

さいごに

BigQueryとデータポータルを利用してゲーム内のデータを可視化する際のTipsを紹介しました.
グレンジでは,チームのメンバーがいつでもこのデータポータルにアクセスしゲームの状態を把握できるようにしています.
データを活用しゲーム内でのユーザーの動向を把握することで,イベントのアップデートや新規されるキャラクターやカードを作成する際の参考に利用しています.

是非みなさんもデータポータルを利用してよりよいゲーム開発に活用してみてください!

参考

5
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?