はじめに
北米版アプリのサーバーサイド開発・データ分析を担当している大倉です。 今日はGoogleのデータスタジオで作ったレポートの表示速度を改善する方法を紹介したいと思います。
対象読者
- Googleのデータスタジオを使っている人で、レポートの表示速度が遅くてストレスがたまる人
レポートの表示速度を改善
それではレポートの速度改善をしていきます。 結論から言うと、BigQueryのスケジューリング機能を使って、テーブルのスナップショットを作成し、そのスナップショットをレポートで使用することで表示速度を改善します。 BigQueryのクエリスケジューリングの詳しい説明はこちらを参照してください。
私たちが頻繁に利用している、あるDataPortalのレポート表示に20秒程度かかっていました。このレポートはBigQueryにある約60GBのデータを加工し表示しています。 このレポートの表示速度を改善していきたいと思います。
クエリをスケジュールに設定する
やることは簡単です。このレポートで使っているクエリを抽出し、BigQueryのスケジューリングに登録します。
- BigQueryのスケジュールされたクエリページに接続します。
スケジュールされたクエリをエディタで作成
リンクをクリックします。クエリを書くページが表示されます。- レポートで使われているクエリを貼り付けます
- クエリを書く欄のタブにある
スケジュール/スケジュールされたクエリを新規作成
をクリックします。すると、新たにスケジュールされたクエリというページが表示されます。 - 下記のような設定にし、保存ボタンをクリックします。(BiqQuery側の更新により変更の可能性あり)
- 詳細とスケジュール
- スケジュールされたクエリの名前:任意の名前
- スケジュールオプション
- 繰り返しの頻度: 毎日
- 設定した時間に開始:チェック
- 開始日と実行時間:yyyy/mm/dd 8:00
- 終了しない:チェック
- クエリ結果の書き込み先
- データセット:任意
- Table Id: 任意(ここで指定した文字列がスナップショットの名前になります)
- テーブルを上書きする:チェック
以上の作業で、スケジュールクエリの設定が完了し、毎朝8:00に設定したクエリが実行されます。指定したデータセットの配下に、Table Idに設定した名称でデータのスナップショットが保存されます。
スケジュールされたクエリを実行する
上述の手順でクエリのスケジューリングは完了しましたが、次の日の朝を待たないとクエリは実行されません。なので、一旦は手動で実行し、スナップショットを作成してみましょう。
- BigQueryのスケジュールされたクエリページに接続します。
- スケジュールされたクエリのリストから先ほど作成したスケジュールを選択し、スケジュールされたクエリの詳細画面に遷移します
バックフィルのスケジュール構成
をクリックし、Run one time transfer
を選択した状態でOKボタンをクリックします。
以上の作業でスケジュールされたクエリが実行され、スナップショットが作成されます。
BigQueryのエクスプローラにて、 スケジュールを設定する際に指定したTable Idを検索すると、スナップショットが生成されていることが確認できます。
生成されたスナップショットを使ってレポートを更新する
次に、生成されたスナップショットを使ってレポートを更新します
- 編集したいレポートを開く
- タブから
データを追加
をクリックし、データのレポートへの追加ページを表示。 - Google ConnectorsリストからBigQueryを選択する。
- プロジェクト・データセット・表にて、スナップショットとして作成されたテーブルを選択し、「追加」ボタンをクリックする。
- データを反映させたいグラフのデータソースを新しく追加したデータに変更する
レポートの表示速度を確認
上記作業でレポートの表示速度改善の作業は終わりです。あとは実際に表示速度を測ってみます。 表示に20秒ほどかかっていたグラフがなんと2秒で表示されました。フィルターや期間などを変更してみてもサクサク動いてくれるで分析作業がかなり捗りそうです。
まとめ
BigQueryのスケジューリング機能を使ってスナップショットを作成し、そのスナップショットをデータとして利用することでレポートの表示速度を大幅に改善することができました。 速度は大幅に改善したものの、毎朝8:00にクエリが実行されるようにスケジュールが設定されているので、リアルタイムの情報をレポートでみたいという場合はこの方法は使えないのでご注意ください。
積極採用中です!
askenでは、一緒に働いてくれるエンジニアを募集しています。少しでも興味を持っていただけたら、ぜひ採用情報をご確認ください。