見出し画像

BigQueryで行うデータ分析の基礎

WEBサービスやWEBサイトの分析において重要なのはデータです。
このデータですが、普段はどのような形で接しているでしょうか?
ポピュラーな分析ツールとしてはGoogle analytics (以下 GA)があるかと思います。
おそらく大体の分析はGAでできるかと思いますが、GAのみでは限界もあります。
今回はGAのみで分析を行う課題とその課題のソリューション(の一つ)であるBigQueryについて説明します。

[この記事の対象者]
BigQueryを使ってみたい方、また使う前にどのように活用するか理解したい方。

概要

BigQueryはGCP (Google Cloud Platform)内のサービスで、データをRDBMS形式で保存でき、SQL(のようなもの、ほぼSQLと同じ)を利用し、データを閲覧できるサービスとなります。

RDBMSとの違いの説明の前にまずWEBサービスにおける2つの種類のデータについて説明します。
1. マスターデータ (ストック)
2. フローデータ (ログ)
の2つがあります。
※マスターデータはリードレプリカを活用する際、マスター・スレーブなどのような使い方もありますが、今回はその意味ではありません。

1. マスターデータについて
こちらはWEBサービスにおいて、長い間保存される前提で保存しているデータをマスターデータとします。
この説明だとわかりにくいのであるEC(Eコマース、ネット通販サイトのこと)を考えます。

ECにおけるマスターデータは
 1. 会員登録されたユーザーデータ
 2. 商品データ
 3. ショップデータ
 …etc
などがあります。

また、今回の場合はトランザクションデータ(商品の購入など)もマスターに含めます。(場合によってはフローに位置することもありますが、今回の説明上はマスターとします)

これらマスターデータの性質は、
 1. 長期間保存される前提で管理
 2. テーブル単位で考えた時、変更や削除などが発生する(トランザクションデータは除く)
 3. テーブル間でのリレーションが発生する
 ...etc
などの性質があります。

3について説明すると、例えばあるショップがある商品を登録しているというケースを考えた時、データ的にはリレーションしているというような言い方となります。

さらにショップから見たとき商品は複数、商品から見たとき、ショップは1つという関係の場合、
ショップ : 商品は1 : nのリレーションというような言い方となります。

2. フローデータについて
一方で、マスターデータとは異なる性質を持つデータをフローデータと言います。
まずは具体例として、ECで考えると、
 1. ユーザーのアクセスログ
 2. 1を集計したもの
 3. 外部のデータ
...etc
があります。

性質としては、マスターデータの逆なので、
 1. 長期保存を考えない(例えばユーザーのアクセスログであれば長くて3ヶ月)
 2. 変更や削除はほとんど発生しない
 3. テーブル間ではほとんどリレーションしない
 ...etc
というような性質があります。また、保存方法はテキストベースでJSONやCSVのような形式で保存されます。

また、データ量のオーダーとしては、RDBMSで保存するデータの数10 ~ 1000倍またはそれ以上となります。
そのため、RDBMSでフローデータを保存するとDBの処理限界にすぐに到達してしまい、DBサーバーが止まるというような現象が発生してしまいます。

長くなりましたが、ここで理解してほしいのがデータには2種類、マスターデータとフローデータがあるということです。

BigQueryは、主に2のフローデータを保存し、活用するためのサービスとなります。

フローデータを活用する目的・メリット

そもそもなぜフローデータを活用する必要があるかについて説明します。

定番の理由としては、非会員(匿名ユーザー)の分析というのがよくあがります。
会員データはサービスに登録してくれた名前や生年月日などが登録されているマスターデータです。
非会員データはサービスに登録していない、訪問のみしたユーザーを非会員データというように定義します。

仮に会員数を伸ばすという施策をしたいと考えます。
その時、「サイトにきたけど登録しなかった」ユーザーについて深く分析をしたいとき、この非会員データが役立ちます。

非会員データをCookieをキーに訪問した経路や訪問した際のサイトフローなどを分析します。いずれもGAでも分析可能ですが、あえてBigQueryを活用するメリットを説明します。

BigQueryの目的・メリット

概要での説明通り、BigQueryはフローデータを保存し、活用するためのサービスと説明しましたが、BigQueryが出る前のフローデータの保存・活用について説明します。

これまでフローデータはテキストベースで保存し、AWSではS3、GCPではGCSで保存されます。
もちろん保存自体はBigQueryが提供された後も利用しますが、テキストベースでは活用ができませんでした。

もちろん活用する方法として、
生データのテキストをダウンロード => RやPythonで処理などは可能ですが、日ごとに別れているデータをマージしたり、一日のデータでも数100MB ~ 数GB以上のデータがあることから処理が重くなるという課題がありました。

BigQueryはその処理を簡単にすることが大きな特徴となります。
処理をSQLでかけるのでRやPythonを使わなくても集計ならびに解析が可能となります。
さらにマスターデータの一部をBigQueryにも入れ込むことで、マスターデータとのリレーション込みで分析可能というメリットもあります。

※解析はデータを処理すること、分析は生データもしくは処理したデータから考察することという定義で書き分けています。

リレーションはさらに自社のマスターだけではなく外部のデータを取り込みマージすることも可能です。
3rd party DMPと呼ばれる、Cookieに対し属性を付与し提供するサービスを活用すると、フローデータの一つである非会員データの属性を分析することが可能です。

そのCookieにひもづく属性が
 -年齢
 -性別
などのデモグラフィック
 -興味・関心
 -購入可能性
などのサイコグラフィック
 -住所
 -位置
などのジオグラフィック
を紐付け様々な分析が可能となります。

応用方法

さらに応用するとユーザーの購入情報と紐付けたユーザーの属性を元に、どのようなユーザーが購入しやすいかなどの予測ができます。
ただし、BigQuery単体ではなく、AutoMLなどの機械学習ツールとの連携が必要になります。

どちらもGCP内のツールなのでシームレスに連携できることがBigQueryならではの強みとなります。

さいごに

今回はBigQueryの基礎の部分を説明させていただきました。
皆さまのお役に立てると幸いです!

◆Twitter
お役立ち情報発信中です。フォローよろしくお願いします。

------------------------------------
SNS運用サポートのご相談はサイトよりお願いします。
▼お問い合わせ
and,a(https://and-aaa.com/)
------------------------------------


この記事が気に入ったらサポートをしてみませんか?