Loading
BLOG 開発者ブログ
  • ホーム>
  • 開発者ブログ>
  • GCP上のデータを可視化するには?データポータル(旧データスタジオ)で簡単レポート作成...

2019年2月7日

GCP上のデータを可視化するには?データポータル(旧データスタジオ)で簡単レポート作成

 

Googleから無料で提供されるデータポータル(旧データスタジオ)を利用することでデータの可視化、ダウンロードなどが簡単にできるようになります。

本記事はデータポータルを利用して、BigQueryの一般公開データでレポートを作成する操作を紹介しています。

データポータルをよく知らない初心者の方にも、どういうレポートが作成できるのか把握できるよう、基本操作を一通り書いていますので一度お試しください。

 

目次

 

はじめに

こんにちは。
クラウドソリューショングループ、Google認定 GCPクラウドアーキテクトのtomono.tです。

サービスを提供してデータを蓄積していると、次はそのデータを見える化したいと思うのは世の常だと思います。

データの見える化はデータ活用に向けた第一歩だと思いますが、結構労力を取られがちな部分でもあります。

 

例えば、データを分析したい人がBigQueryやMySQLなどのデータを、エクセルやCSVといった表形式のデータとして欲しいと思ったとします。

これはSQLが使えれば良いですが、使えない人にとっては問題です。

こういうとき、エンジニアへデータを出してほしいと依頼があったりするのですが、いつもエンジニアが代わりに出力の作業を担当していると、仕事が増えて大変になっていきます。

 

他にも、データを利用する人から、ダッシュボードのような形でグラフィカルにデータを表示したい、という話が出てくることもよくあります。

エンジニアがこれを実現しようとすると、Webなどで画面を作ったりする必要がありますし、もし出したいものが変化すればまた大変な労力をかけて変更するといった手間がかかります。

無駄が多いですよね。

 

この労力を解消するためのツールはいくつもあるとは思いますが、今回は選択肢の一つとしてGoogleが提供するデータポータル(旧 データスタジオ)というツールをご紹介します。

 

本記事ではデータポータルの説明のほか、BigQueryの一般公開データを利用してデータポータルでレポートを作成する手順に関しても説明します。

一通り試してもらうと、データポータルの基本操作に関しては掴めると思います。

特にディメンションや指標の違いなど、初めて使う時に戸惑う部分については読んでおいていただくと役に立つと思います。

 

 

データポータルとは

データポータルはGoogleが提供するデータ分析ツールです。近頃、「データスタジオ」という名称が変更され「データポータル」というサービス名で提供されています。日本では、どうやら「Data Portal」よりも日本語で「データポータル」と表示されることが多いようなので、本記事でもそちらに記述を統一します。

 

以下、データポータルの特徴です。

  • GCPやGoogleの各種サービスとの親和性が高い
    • BigQuery
    • Cloud SQL
    • Google Analytics
    • Google Search Console
      • etc…
  • 基本的に無料
    • BigQueryなどのGCPサービスと連携する場合、通常のサービス利用分の料金はかかります
  • GCPのアカウントは無くても良い
    • ただし、Googleアカウントは必要
  • 誰でも使える
    • ただし、レポートを作るには少し慣れが必要かも(この記事で解消してください!!)
  • Google Drive上にレポートを保管
    • Googleドキュメントやスプレッドシートのように、Googleアカウント内での共有などが可能
    • 自動で保存
  • 作成したレポート画面をURLで公開したり、iframeでhtmlに埋め込むことが可能
  • レポートからCSVファイル、スプレッドシートを出力可能
    • SQLを書けなくても、DB上のデータを必要に応じてCSVファイルやスプレッドシートに出力できます

 

特にCSVファイルのダウンロード機能は超便利だと思っているので、これだけでも使う価値アリと考えています。

色々とサンプルやテンプレートが提供されているので、どんなことができそうかは下記リンク先を見ていただくとイメージできるかと思います。

Data Portal | Report Gallery

 

2019年1月現在での感覚では、データポータル上でガチャガチャとデータをいじって分析するというBIツール的な側面において、まだまだ使いにくさは否めません。

しかしながら、簡単にレポートを作りたい、簡単なダッシュボードを作りたい、SQLを書かないでデータをダウンロードしたい、といった場合には非常に強力なツールとなるかと思います。

サービス名を変えたり、比較的頻繁に新機能をリリースしたりと、力が入れられているように見えるので、今後に期待しているGoogleサービスの一つです。

 

さて、誰でも使えると書きましたが、始めてデータポータルを使ってレポートを作る際には戸惑うことも多いというのが私の実感です。

ここからは使い方について説明していこうと思います。

MySQLやCSVファイルなどからレポートを作成することもできるのですが、今回は誰でも試してもらえるよう、BigQueryの一般公開されているデータに接続してグラフを出してみましょう。

BigQueryを使うので、GCPのアカウントがない人は用意しておいてくださいね!

 

使用するBigQueryのデータセットと料金について

今回はGoogleのドキュメントでも紹介されているNOAA International Comprehensive Ocean-Atmosphere Data Setという一般公開データセットを利用してみようと思います。

以下はNOAA紹介文の引用です。

“””

ICOADS データセットには世界中の海洋データが含まれています。これらのデータは、現在の天候や海洋条件(波高、海水温度、風速など)に応じて詳細な情報を捕捉する船舶(商船、軍艦、調査船)とブイのそれぞれから収集されたものです。各レコードには正確な観測地が記録されるため、可視化するには最適です。履歴データもかなり包括的に蓄積されており、1662 年にまでさかのぼるレコードもあります。

“””

 

今回は一般公開データを使用しますが、自身のデータを利用する場合も基本操作はほとんど変わりません。

 

私がこの記事を書くにあたりBigQueryで料金がかかりませんでしたので、ここで紹介しているデータのサイズで多額の料金がかかることは無いと思いますが(大半のテーブルサイズは約5GB〜15GBで、icoads_core_1662_2000という巨大なテーブルだと70GB近くになります)、何度も繰り返しクエリを発行すると料金がかかる恐れもあります。確認のうえ、ご自身の責任で使用をお願いします。

2019/1現在におけるBigQueryの料金は、クエリ発行に関して月あたり1TBまで無料です。

BigQuery 料金

“””

クエリ(分析) 処理されるクエリデータは毎月 1 TB まで無料。

“””

 

BigQueryでどのようなクエリが発行されているかは、BigQueryのWebコンソールでクエリ履歴を表示すると確認できますので、不安な方はそちらを参照しながら作成してみてください。

クエリが発行された場合、以下のようにログとして表示されるようになっています。

 

準備

まずは、データポータルにアクセスしてください。Google Driveっぽいデザインの画面が表示されるかと思います。

でっかく表示されている空白のプラスマークか、もしくは画像にはありませんが画面右下のプラスマークをクリックすると新しいレポートが作成されます。

初回作成時は利用規約の承認や下記のようなアンケートを答えないといけないので面倒ですが、完了すると新しくレポートを作成できるようになります。

 

データソースの追加

BigQueryと接続し、データをデータポータル上で利用できるようにします。

画面右下に表示される、「新しいデータソースを追加」からデータソースを新規に追加できます。

作成済みのデータソースがある場合は、この一覧に追加されていきます。

以下のようなコネクタの選択画面が表示されます。

BigQuery、Cloud SQL(MySQL)やCloud Storage(CSVファイル)、Google Analytics、Googleスプレッドシート、SearchConsoleなど、Googleのサービスに幅広く対応しています。

 

更に、MySQLやPostgreSQLとも連携できるので、GCPを使用していなくても既存システムのDBに対して利用することもできますし、Twitterとの連携なども用意されているようです。

 

今回はBigQueryを選択します。

 

 

自分のデータにつなぎたい場合は「マイプロジェクト」、直接SQLでデータを取得したい場合は「カスタムクエリ」を使用します。

今回は「一般公開データセット」を選択し、noaa_icoads > icoads_core_2013と選択して「接続」をクリックしてください。

2013年のデータは比較的軽量なため、これを使用していきたいと思います。

 

データセットを選択するとスキーマ情報が表示されます。

ここでフィールド名やタイプ(カラム定義)、集計方法というものを変更できます。

latitudeとlongitudeというフィールドのタイプを「地域」 > 「緯度・経度」など、数値以外のタイプに変更しておいてください。

また、wind_speedというフィールドの集計値を最大値へ変更してください。

 

これらに関しては後ほど説明しますので、ひとまずは先に進めましょう。

完了をクリックすると、元のレポート作成画面に戻ります。

 

別のデータソースを追加したい場合やデータソースを編集したい場合、ヘッダの「リソース」から「追加済みのデータソースの管理」で操作できます。

 

レポート作成

ここからは追加したデータソースを利用してレポートを作成していきます。

作成したレポートは右上のビュー/編集 を押すことで随時、確認と編集を切り替えることができます。

 

テーマ・画像・文字

レポートのテーマはヘッダの「レイアウトとテーマ」>「現在のテーマ」から変更できます。

現在、素材として使えるテーマは2種類のみで、シンプル(暗)を選択すると背景が黒のテーマになります。

 

更に背景でオリジナリティを出したい場合など、画像を入れることができます。

今回は、背景素材フリードットコムさんから背景に使えそうな画像を頂いてきました。

 

ヘッダの「挿入」>「画像」で表示される右側のプロパティに画像を入力します。

基本的に要素のデザインをいじりたい場合は、右側にプロパティが表示されているので、ここから操作します。

 

ヘッダの「グラフを追加」から表を追加可能です。

 

今回は2013年の海洋気象データから、日付と緯度、経度、最大の風速の一覧表を表示してみたいと思います。

最も最大風速の強かった日付と場所のランキングにしてみましょう。

 

表を追加し、画面の右に次のデータを設定してください。

 

期間のディメンション: timestamp

ディメンション:

  • timestamp
  • latitude
  • longitude

指標: wind_speed (最大値)

並び替え: wind_speed 降順

 

表には「ディメンション」と「指標」で選択した項目が出力されます。

この「ディメンション」と「指標」という概念はデータポータルを最初に使った時に困惑するポイントなので、説明をしておきます。

 

「ディメンション」と「指標」の違いは集計(合計/平均/最大/最小など)を行うかどうかです。

「ディメンション」は集計を行わない項目、「指標」は集計を行うことを前提とした項目となります。

そのため、「指標」には数値データのフィールドのみが表示されます。

「ディメンション」に使用可能なフィールドは緑色、「指標」に使用可能なフィールドは青色で表示されます。

 

 

ディメンションで指定した項目別に、指標の値が計算されます。

SQLを書く人にとっては、「ディメンション」はGROUP BYを行うフィールド、「指標」は集計関数を使用するフィールドという説明の方がわかりやすいかもしれません。

 

指標は集計値の表示を前提とするため、レコードが集約されて表示されます。

集約させないで生のレコードデータがほしい場合は、フィールドのタイプを文字列などにする必要があるようです1)

 

期間フィルタ

前述の表を作成した際に、「期間のディメンション」という項目が存在していたかと思います。

この項目は期間フィルタで取得してくるデータを制限する際に使用します。

この機能を利用すると使用者が自由にフィルタできるボタンがレポート上に表示されるようになります。

 

期間フィルタを入れてみましょう。

ページ上部のカレンダーマークをクリックすると追加できます。

フィルタを配置したら、右上のビューを選択して動作を確認してみてください。

期間フィルタで期間を選択すると、「期間のディメンション」で指定したフィールドの値が期間に含まれるデータのみが表示されるようになります。

 

注意すべき点として、期間フィルタはレポート内の全データで共通のため、表やグラフごとに別々の期間を選択することはできません。

2期間での比較などをどうしてもしたい場合は、ブラウザで別のタブを開いて表示させるなどが必要なようです。

 

その他のフィルタ

期間以外で絞り込みを行いたい場合はこちらの方法を利用してください。

ヘッダのフィルタオプションを選択し、「ディメンション」で絞り込みを行いたい項目を設定します。

 

こちらの画像は特定の緯度・経度の地点におけるデータのみを表示したものになります。

期間フィルタと同様に、レポート内全ての表・グラフでデータが絞り込まれます。

ただし、期間フィルタと異なり、データソースごとにフィルタが行われるため、フィルタしていないデータソースには影響しません2)

 

グラフ

基本は表と同じです。

 

試しに折れ線グラフで風速の変化を時系列に表示してみました(緯度と経度で特定の位置でのデータのみ表示しています)。

 

「グラフを追加」で折れ線グラフを追加し、横軸(時間ディメンション)と縦軸(指標)を指定します。

複数の線で内訳を表示したい場合は、「内訳ディメンション」で基準とするフィールドを指定してください。

表示項目を増やしたい場合は「指標」を追加すれば追加できます。

 

棒グラフも作ってみましょう。

「グラフを追加」で棒グラフを追加し、横軸(ディメンション)と縦軸(指標)を指定します。

こちらは、国別のデータ量を表示したグラフです。横軸はcountry_code、縦軸はRecord Count(デフォルトで登録されるレコード数の指標)です。

どうやら、country_codeが存在しないデータが多数存在するようです。

こういう場合はグラフ自体にフィルタを適用することで必要なデータのみを表示することが可能です。

フィルタを追加という場所から、除外する項目を指定し、国コードが入っていない空のデータを取り除くようにしました。

 

 

無事フィルタリングできたようです。

 

地図

地図は癖が強いですが、使えると便利な機能の一つかと思います。

 

地図を利用する場合、都市名や国名などを入力することで地図上にデータを表示できるのですが、

今回は緯度と経度で直接位置を指定して地図上にデータをプロットする方法で作成します。

地図上にデータソースのデータがサンプリングされた場所を表示してみましょう。

グラフを追加から地図を選択し、

指標はデータの個数、

ディメンションは「フィールドを作成」から、「緯度経度」というフィールドを作成して選択しました。

 

地図の入力に緯度と経度を使う場合、カンマ区切りで値を入力してやる必要があります。

“18.3,-64.8”

CONCAT()というGoogleスプレッドシートなどでよく使う文字列結合の関数を使用し、緯度と経度をカンマ区切りにしたフィールドとして定義します。

フィールドのタイプは「緯度、経度」を選択してください。

 

 

CSVダウンロード機能

データポータルの便利な機能として、結果をCSV形式、CSV形式(エクセル)、スプレッドシートに出力することができます!

これが個人的には超便利で、これを使ってデータをダウンロードできるようにしておけば、SQLを書かない人でもCSVデータを取得することができるようになります。

使い方は通常どおりにレポートを表示し、表やグラフにカーソルをあわせて右クリックすると表示されるリンクからダウンロードするだけです。

簡単ですね。

 

ただし注意点として、膨大なデータをCSV形式で取得しようとするとタイムアウトしますし、スプレッドシートはべらぼうに時間がかかるケースがあります。

その場合は、前述のフィルタ機能を利用してデータ量を絞り込むか、無理をせずにBigQueryなどから直接データを出力する方法をおすすめします。

 

 

おわりに

一通り、データポータルでできることの例を書きました。

今回は練習がてらBigQueryでレポートを書いてみましたが、データポータルはGCPや各種Googleサービスとの親和性が高く、スプレッドシートなどからレポートを作成したりできる他、他のDBに接続してデータを取得してくることもできます。

もっと詳しいことを知りたいという方はデータポータルのヘルプページを参照していただくと、より詳しい説明が見れるかと思います。

 

…え、私が書いてるレポートにデザインセンスが無い?なにそれ美味しいの?

えっと、デザインに凝りたい人はこういうのを参考にしてくださいね!

Data Portal | Report Gallery

 

それでは!

 

 

脚注

      1. ディメンションの値が共通のレコードは集約されてしまうことに注意してください。Record Countを表示した際に、値が2以上となっていたら、レコードが集約されています。これはGROUP BYでcount関数を使用した場合と同じ挙動です。確実に生データを取れるようにするにはidなどの一意のデータをテーブルにもたせておく必要があります。
      2. これを利用して一つのレポート内で2群の比較を行うといったことが可能です。同じデータを参照するデータソースを2つ用意し、表やグラフ、フィルタを異なるデータソースで2つずつ作成するといった形で実現可能です。
のブログ