この記事が役に立つかもしれない人
・一通りクエリは学んだけど実際書こうとすると手が動かない人
・サンプルデータに興味が湧かなくて困っている人
はじめに
はじめまして。半年ほど前に未経験で現在の部署に転職してきてから、ひいひい言いながらBIツールとSQLの勉強しております。勉強のアイデアを共有するので一緒に頑張ろうぜな記事です。
SQLが覚えられない
この半年でSQLの勉強は3回チャレンジしてきました。本やProgateや果てはデータサイエンティスト100本ノックにも手を出しました。が、全然身についておらず、いざデータを前にすると何も書けません。教材の問題というか、単に自分の頭で考えた回数が足りないのだと思います。
もっと回数をかけねばならぬ。しかしやる気が出ない。
なぜやる気がでないのか?を考えていたところ、「教材で使われているデータに興味がないから」という結論に至りました。このデータを詳しく知りたいというモチベーションがない。「本に書いてあった通り動いた!」で喜ぶだけになってしまう。それ以上は頑張れない。
そこで、SQLを生きたスキルとして体得すべく、勉強のアプローチを変えることにしました。
「自前のデータで勉強する」というアプローチです。
おもしろそうなデータと分析テーマを用意する
突然ですが、皆さんポイントカードって持ってますか。
私はほとんど持っていません。申込書を書くのがめんどくさいからです。
2年くらい通っているスーパーがあります。200円で1ポイントつくポイントカードがあるのですが、ずっと敬遠しています。
先日、「これだけ買い物してるなら、最初にポイントカードを作っておけば今頃ざくざくだったのではないか」と気づいてしまって以来、気になって仕方ありません。もしかしたら1万ポイントとか貯まってたんじゃないのか。
ちょうど前述の理由でSQLの勉強が煮詰まっていたので、こういう「大したことではないけど分かったら面白い分析」をするためにSQLを使って覚えることにします。
つまるところ、自分が何をしたいのかを考えて、その実現に必要なクエリを調べて書くアプローチです。網羅性はないですが面白いので続きそうです。
作業方針
基本クレジットカードで払っているので、明細データが残っています。これをダウンロードしてきて、このスーパーに払った合計額を計算して、ポイントカードを作っていたらいまごろ何ポイントあったかを計算します。しょうもないですね。
注意事項
・Excelでできますが、勉強のためにあえてSQLでやります。
・長くなるので分割して記事を書きます。この記事は準備編として、クレジット明細データのダウンロードして中身を確認するまでを行います。
・BigQueryが好きなのでBigQueryを使います。
クレジット明細データの中身を確認する
まずはクレジット明細をダウンロードします。
私の使っているカードは明細をCSVでダウンロードできて、かつ14ヶ月前まで遡ることができました。
マイページからダウンロードしてきて、そちらを使います。
一部伏せますが、実際のデータはこういう感じです。昨年の4月の明細です。
1列目が購入日付、2列目が支払先、3列目が購入額ですね。
地元感が強いので名前を伏せますが、今回集計したいのは「スーパーA」です。
これを見て初めて気づきましたがココカラファインに行きすぎですね。いい発見だった。
明細の見方
ちなみに、4月の明細データなのに日付が2月になってるのは、決済から引き落としまで1ヶ月半ほどタイムラグがあるからです。
クレジットカードって、毎月の締め日があって、そこまでで使った分を翌月くらいに払いますよね。
4月でいうと、2月16日〜3月15日までに使った分が4月に請求されます。
なので、1ヶ月半くらい前にカードを使った分が明細に記載されている、という状態です。
ファイルをまとめたい
今回は2021年4月から2022年5月までの明細が手に入りました。
14ヶ月分のファイルが手に入りましたが、毎月1ファイルごと分割されている状態では計算が面倒です。これらを1ファイルにまとめたい。
今回なにかキーを拾って結合することはなく、とにかく縦に行を追加していきたい。
こういうイメージなので、これはUNION結合でしょう。
という訳で、次回BigQueryにデータをアップしてUNION結合します。