イメージしやすいクエリを使用したデータ抽出の流れ【初心者】

データ抽出手法を教えてもらったけれども理解しきれてないことがあった。実際にデータ抽出を行った際に気づいたことがあったのでまとめておく。

データ構造

データ抽出の流れ

勉強していた際にはデータがすでに存在する状況だったのであまり考えませんでしたが、企業に入ってデータ抽出を行う際に意識するデータ抽出の流れをまとめてみました。

0.データ抽出の目的を理解する

まずは、データを抽出する目的を明確にすることが必要です。ほしいデータを依頼された際に目的をはっきりさせないままデータ抽出をしてしまってはほしいポイントが明確にならず、何度もリテイクをする羽目になってしまいます。

1.どのデータを出したいか明確化する(何を抽出するのかヒアリングする)

目的を理解したらどのデータを出すのが目的に沿っているのかを考えたうえで明確化していきましょう。

2.大まかでいいので完成予想テーブルを書く

上級者の方はすぐにイメージが沸くと思いますが、初心者の場合、「何を抽出したいのか」が明確になっていないことがあります。そのため、1で考えたことをアウトプットするとよいと思います。場所も項目も最初はわからないので抽出した際のテーブルと最低限ほしい情報を手書きで書いておく程度で良いかと思います。

3.データの取得場所を理解する

自分で構築したDBならすぐに何がどこにあるかを理解できますが、途中から入ったり、データ集約がまだされてない場合はどこにどの項目があるかわからないことがあります。
複雑になりやすいので、今回取得したいデータの取得場所を理解しておいてください。

  • DWH
  • DataMart
  • BQ
  • GA
  • ない(存在しないので取得するところから始める)

また、イベント計測を行う際にきれいに体系化されていないとイベントカテゴリ、イベントアクション、イベントラベルなどにMECEができてないことがあります。検索をするための情報が整備されてないので一番ここで時間がかかりました。

4.データの中の項目を理解する

3で探していたテーブルを見つけたのと同時に項目も確認してください。

5.先ほどの完成予想テーブルを詳細にする

3,4でテーブルと項目を見つけることができたので2で作成した完成予想テーブルをより細かくかけるようになります。ここで記載を詳細にしておくと複雑なテーブル結合でも間違えが減るかと思います。

6.クエリに直す

5で作成した完成予想テーブルから実際にクエリを書きます。
作成した後に以下の点に注意してデータ抽出してください。

・日付にミスがないか
・必要のない抽出条件が混じってないか
・iPhoneとAndroidなどまとめられるものはまとめて抽出してるか
・order byは使わなくても大丈夫か、必要な並べ順になっているか
・countは重複したものを数えていないか
・データ抽出したものはそのままダウンロードできる量か
(BQではDLできるのは16000行目まで)

BQを使用する際にはデータ量で課金されるので以下の記事を読むのをおすすめします。

クエリがはじめてだったらこういうことを知っとくと良いかも。

BQってなんですか
https://dev.classmethod.jp/articles/google-bigquery-debut/

課金を減らそう
https://www.slideshare.net/GoogleCloudPlatformJP/google-cloud-google-bigquery-03

GAをBQで使用する際に必要なアンネスト
https://ex-ture.com/blog/2017/12/13/unnest-ga360-bq-data-with-standardsql/

そんなに使わなかったけど知っておくとよいかも
https://www.slideshare.net/kumanoryo/sqlbigquerystandard-sql?next_slideshow=1