集中演習 SQL入門 Google BigQueryではじめるビジネスデータ分析

ちょっとはわかってた方がよさそうと思ったので1冊読んで勉強してみることにした。

いつもは読み終わってから感想を書いているけれど、学習記録とメモを書きながらやってみる。

 2021/08/01

  • 3章までざーっと読んだら、3章の最後に演習問題が出てきたけれど、覚えるつもりでは読んでなかったので、3章を読み直すことにした。
  • 3章の途中まで読み終わった。
  • 【感想】レビューしてもらうにしても、そもそもの条件が間違っていたら、間違っている条件で正しく書けているかがチェックされてしまうことになるし、nullが混ざってて集計データが狂ったりもしそうだから、恐ろしいなと思った。200件程度のデータで目視でも確認ができる量のデータならいいけれど、何万件もあるデータで合っているかどうかをどうやって確認するんだろう。

2021/08/03

  • 途中まで読んでいた3章を読み終わったので、演習問題をやった
  • まあまあできたけれど、自分で書いてみると、日付を「"」で囲うのを忘れたりというのがあったりした
  • 誕生日は昇順にすると年齢が高い順になる
  • IN や LIKE はカッコ ( ) が必要
  • 条件で抽出したいときは WHERE
  • LIMIT 5 OFFSET 100 は101~105番。OFFSETを指定しないときが0と考えるとわかりやすいかも?
  • 元のデータを見ながら、そこから出力されるデータをイメージしてから書くと書きやすい
  • 【感想】自分で何も見ずに書けるようになるのを目指すのは大変なので、最初は目指さなくてよさそう。一通り学習して読める状態になればよさそう。

2021/08/04

  • 4章(グループ化とデータの集計)をやった
  • 演習用のサンプルデータが小規模なので、絞り込んだり、頻出順に並べたりするのは、スプレッドシートでやったらすぐできるのにと思いながらやっていた。
  • データが大量にあってもBigQueryだと結果が返ってくるのが速いからメリットを感じられるそうな。たしかにスプレッドシートで処理するのにめちゃめちゃ時間がかかることがある。
  • 【感想】書き方が複数あったり、省略できるものはレビューするのが大変そうだなと思った。

2021/08/05

  • 5章 テーブルの集合まで。残り半分は明日やる
  • 慣れるまでは図を書いてからじゃないとできなそう。いきなり頭の中で組み立てるのは無理そう。
  • 同じものだったら最初にテーブル作る際にフィールド名を統一しておいた方がよさそうだけど、実際には統一されないことがあるのかな。同じものなのに違うフィールド名になっているときの書き方もわかったのはよかったけれど。
  • 【感想】まだいきなりは書くことはできないけれど、こういうものがあるのだなということだけ覚えておいて、あとは実際に使うときに参照しながらできればよさそう。

2021/08/07

  • 5章の続きでテーブルの集合演算と仮想テーブルの作成
  • テーブルの結合よりはわかりやすかった。ここからずっと取っつきにくかったらどうしようと思ってたけど、よかった。他の本の目次を見るとテーブルの結合はあとの方に出てくるものもあった。
  • 【感想】出したいデータは書き方は複数あったりしそうなので、数をこなして身につけるしかないんだろうなーとここまでやってきて思った。
  • 図書館でやわらかそうなタイトルの本を借りてきて、パラパラ見てみたらよさそうなのでいったんここまでにして他の本を読んでからにしようかな。

8月10日~8月14日までは他の本を読んでた。

picora.hatenadiary.org

 2021/08/17

  • 6章 サブクエリの半分まで
  • 書く順と実行順が違うから、先に定義されていないものがでてきたりするので混乱する。WITHで仮想テーブル作るやつでは、テーブルにないものがいきなり先に出てきてこれはなんだ?となったりする

2021/08/18

  • 6章 サブクエリの残り半分を読んだ
  • テーブルを縦持ちや横持ちにするのは理解するのがむずかしかった
  • 商品をカテゴライズしたり、ある条件でフラグを立てるとかは実用的なのかもしれないけれど、どうやって組み立てるかを考えるのがむずかしい

2021/08/19

  • 6章 サブクエリの演習問題を3問やった
  • 問題18の FROM(カッコ)をカッコにするやつはよくわからなかったので、あとで戻って調べる。GROUP BY に2つのカラムを指定すると重複なしのレコードになる。重複といえばDISTINCTかと思ったけれど違った。DISTINCTでも書けるのかもしれないけれど。
  • 6章の問題はまだ2個残っている
  • 2時半になってしまったので寝る

2021/08/20

  • 6章 サブクエリの演習問題のこり2問をやった
  • 7章 いろいろな関数の途中まで
  • MOD関数:余りを求める。2で割った余りが0のやつをまとめるとデータを半分に減らすことができたりする。
  • RAND関数:ORDER BY RAND() でランダムに並び替えができる
  • CONCAT関数(コンカティネート):連結できる。名前に様をつけたりできる。フィールドの値を連結することもできる
  • SUBSTR関数:開始位置をマイナスで指定すると右端から数えた場所を指定できる
  • INSTR関数とSUBSTR関数を組み合わせてURLのディレクトリを抜き出して別カラムに表示させる方法と、LENGTH関数とREPLACE関数を使ってアンケート回答に「満足」という文字列が何回でてきたかをカウントするやり方がおもしろかった

2021/08/21

  • 7章 いろいろな関数の途中から最後の演習問題まで
  • 正規表現、日付・時刻、統計集計
  • ここらへんはサンプルがありそうだから自分で考えるよりコピペでやった方がよさそうと思った

2021/08/22

  • 8章 ウィンドウ関数
  • データ分析手法を知っていることが前提なので、ウィンドウ関数を使うなら、そちらも勉強しないとだめだなと思った
  • 8章の演習問題はやってないけれど、今やっても勘でやっているという感じになりそうだからやらなかった

同じシリーズの本によさそうなタイトルの本があったから読んでみようかな。