データ分析担当者とデータ分析したいエンジニア向け『ビッグデータ分析・活用のためのSQLレシピ』のご紹介

# はじめに

最近読んで感銘を受けた書籍のレビューです。

『ビッグデータ分析・活用のためのSQLレシピ』
著作者名：加嵜長門、 田宮直人
編集者名：丸山弘詩
ISBN：978-4-8399-6126-8

本書は、
データ分析担当者や、
データ分析を依頼されるエンジニア向けの
分析用途のSQLを解説する書籍です。

データ分析・データサイエンスといえば、
PythonやR＆豊富な分析ライブラリの活用が
デファクトスタンダードですが、
この本では、
実際のデータ分析活用事例を多数紹介しながら、
実践的なSQLが豊富に掲載されています。

ぜひこれはご紹介した方が良いと思い、
以下に簡単な概要を記載していきます。

# 読者対象

- データ分析担当者（営業担当者からデータ抽出・集計・分析を依頼される方）
- データエンジニア。データ処理は把握していても、データ分析目的やノウハウに明るくない方。
- データサイエンティスト。Python/Rを使わずSQLでデータ分析を済ませるケースなど
- データ分析に意欲的な、営業やマーケティング担当者の方。自分で分析系SQLを書けるようになれば、エンジニアやデータ分析担当者に依頼しなくても、ほしい分析結果が手に入る

では、さっそく目次と概要を解説していきます。

# 目次と概要解説

## Chapter1　ビッグデータ時代に求められる分析力とは
### 1　データを取り巻く環境の変化
- GoogleAnalyticsなどのアクセス解析ツールが登場した
- ビッグデータを収集したり分析したいという要望が出てきた

### 2　さまざまな課題

- 分析担当者の課題
 - ビッグデータそのものを扱う環境ができても、データ分析のノウハウがない
 - SQLを習得できていないと、SQLが書けるエンジニアに毎回依頼しないといけない
 - TableauなどのBIツールを導入しても、典型的なパターンしかデータ分析できない

- エンジニアの課題
 - SQLが書けても、データ分析スキル・ノウハウが無いと、必要なデータを取り出せない
 - 経営層や営業層が必要なデータを把握していない
 - 開発に時間を割く必要があり、データ分析に時間がとれない

- 職種を越えた横断的な分析力を身につける
 - 分析担当者とエンジニアが双方横断的に分析力を身につけて連携していくのが良い
 - 分析担当者はSQLを習得し、エンジニアに頼らなくてもデータ分析できるようにする
 - エンジニアは、データ分析依頼内容を把握し、データ分析ノウハウを習得する

以下、わかりやすい図解がありましたので、引用します。
<img width="694" alt="スクリーンショット 2018-10-12 0.13.55.png" src="https://qiita-image-store.s3.amazonaws.com/0/210660/9b4d2434-bcb3-2c2b-3e73-aa2c7c24ced6.png">

<img width="687" alt="スクリーンショット 2018-10-12 0.14.04.png" src="https://qiita-image-store.s3.amazonaws.com/0/210660/496ef2b2-5528-cdb0-575d-3b8173e01cf3.png">



２章からは、目次だけ記載して、
もし興味がある項目があれば、
ぜひ本書を手にとって読んでみることを
おすすめします。

特に４章以降、
売上分析・Web行動ログ分析・レコメンドなど、
かなりノウハウが詰まっているので、
データ分析業務に活かすヒントになると思います。

## Chapter2　本書で扱うツールとデータ群
### 1　システム
- PostgreSQL
- Apache Hive
- Amazon Redshift
- Google BigQuery
- SparkSQL


### 2　データ
- データの種類
- 業務データ
- ログデータ
- 2つのデータを利用することで生まれる価値

## Chapter3　データ加工のためのSQL
### 1　一つの値に対する操作
- コード値をラベルに置き換える
- URLから要素を取り出す
- 文字列を配列に分解する
- 日付やタイムスタンプを扱う
- 欠損値をデフォルト値に置き換える

### 2　複数の値に対する操作
- 文字列を連結する
- 複数の値を比較する
- 2つの値の比率を計算する
- 2つの値の距離を計算する
- 日付/時刻の計算をする
- IPアドレスを扱う

### 3　1つのテーブルに対する操作
- グループの特徴を捉える
- グループの中での順序を扱う
- 縦持ちのデータを横持ちに変換する
- 横持ちのデータを縦持ちに変換する

### 4　複数のテーブルに対する操作
- 複数のテーブルを縦に並べる
- 複数のテーブルを横に並べる
- 条件のフラグを0と1で表現する
- 計算したテーブルに名前を付けて再利用する
- 擬似的なテーブルを作成する

## Chapter4　売上を把握するためのデータ抽出
### 1　時系列に沿ってデータを集約する
- 日別の売上を集計する
- 移動平均を用いて日別の推移を見る
- 日別の売上を集計して、当月売上の累計を求める
- 月別の売上を集計し、昨対比を求める
- Zチャートで業績の推移を見る
- 売上を把握するための大事なポイント

### 2　多面的な軸を使ってデータを集約する
- カテゴリ別の売上と小計を計算する
- ABC分析で売れ筋とそうでないものを分ける
- ファンチャートで商品の売れ行きの伸び率を見る
- 購入価格帯を集計する

## Chapter5　ユーザーを把握するためのデータ抽出
### 1　ユーザー全体の特徴・傾向を見つける
- ユーザーのアクション数を集計する
- 年齢別区分を集計する
- 年齢別区分ごとの特徴を抽出する
- ユーザーの訪問頻度を集計する
- ベン図でユーザーのアクションを集計する
- デシル分析でユーザーを10段階のグループに分ける
- RFM分析でユーザーを3つの視点でグループ分けをする

### 2　時系列に沿ったユーザー全体の状態変化を見つける
- 登録数の推移、傾向を見る
- 継続率、定着率を算出する
- 継続、定着に影響すると見られるアクションを集計する
- アクション回数に応じた定着率を集計する
- 利用日数に応じた定着率を集計する
- ユーザーの残存率を集計する
- 訪問頻度からユーザーの属性を定義し集計する
- 訪問種別を定義し、成長指数を集計する
- 指標を改善する手順を身につける

### 3　時系列に沿ったユーザー個別のアクションを分析する
- ユーザーのアクション間隔を集計する
- カートに追加後、購入されているか把握する
- 登録からの売上を経過日数別に集計する

## Chapter6　Webサイトでの行動を把握するためのデータ抽出
### 1　サイト全体の特徴・傾向を見つける
- 日次の訪問回数・訪問者数・ページビューを集計する
- ページ毎の訪問回数・訪問者数・ページビューを集計する
- 流入元別に訪問回数やCVRを集計する
- アクセスされる曜日、時間帯を把握する

### 2　サイト内のユーザーの行動を把握する
- 入口ページと出口ページを把握する
- 離脱率、直帰率を計算する
- 成果に結びつくページを把握する
- ページの価値を調べる
- 検索条件毎のユーザー行動を可視化する
- フォールアウトレポートを用いてページ遷移を可視化する
- サイト内のユーザーフローを把握する
- ページを最後まで見ている割合を集計する
- ユーザー行動の全体像を可視化する

### 3　エントリーフォームを最適化する
- エラー率を集計する
- 入力～確認～完了までの遷移率を集計する
- フォーム直帰率を集計する
- エラーが発生している項目、内容を集計する

## Chapter7　データ活用の精度を高めるための分析術
### 1　データ加工による新たな切り口を作る
- IPから国、地域を補完する
- 都道府県に隣接都道府県情報を付与する
- 土日・祝日を判断できるようにする
- 一日の集計範囲を変更する

### 2　異常値を検出する
- データの分布を計算する
- クローラーを除外する
- データの妥当性を確認する
- 特定のIPからのデータを除外する

### 3　データの重複を検出する
- マスタデータの重複を検出する
- ログの重複を検出する

### 4　複数のデータセットを比較する
- データの差分を抽出する
- 2つのランキングの類似度を計算する

## Chapter8　データを武器にするための分析術
### 1　検索機能を評価する
- NoMatch率とそのワードを集計する
- 再検索率とそのワードを集計する
- 再検索ワードを分類して集計する
- 検索離脱率とそのワードを集計する
- 検索に関する指標を集計しやすくする
- 検索結果の網羅性を指標化する
- 検索結果の妥当性を指標化する
- 検索結果の順位を考慮した指標を計算する

### 2　データマイニング
- アソシエーション分析

### 3　レコメンド
- レコメンドシステムを広義に捉える
- このアイテムに興味がある人はこんなアイテムも見ています
- あなたにオススメの商品
- レコメンドシステムを改善するポイント
- レコメンド表示時の改善ポイント
- レコメンドに関するその他の指標を知る

### 4　スコアの計算
- 複数の値をバランスよく組み合わせてスコアを計算する
- 値の範囲が異なる指標を正規化して比較可能な状態にする
- 各データの偏差値を計算する
- 巨大な数値の指標を直観的にわかりやすく加工する
- 独自のスコアリング方法を定義してランキングを作成する

## Chapter9　知識に留めず行動を起こす
### 1　データ活用の現場
- データの活用方法を考える
- データに関わる登場人物を知る
- ログフォーマットを考える
- データを活用しやすい状態に整える
- データ分析のプロセスを習得する
- 分析のはじめの一歩を踏み出す
- 相手の職種・役職に応じたレポートを作成する
- さらなるデータ活用のスキルを磨く
- ビッグデータ時代のデータ分析者に向けて