Googleデータアナリティクス：クリーニングの変遷を捉える（変更ログ）

# はじめに

本記事は、Googleデータアナリティクスのプロフェッショナル認定証のプログラムより、参照させて頂いています。興味を持った方は、是非受講してみてください。

https://www.coursera.org/professional-certificates/data-analytics-japanese

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2358573/b583930d-fecb-13ad-85a2-3f44e309d8a5.png" width="800">

# データセットがどのように変化したかを 記録しておくことのメリット

### <font color="MediumBlue">データクリーニングでのミスを 修復できる</font>

3 ヶ月前にやったことを 思い出そうと苦戦しないよう、 後で同じエラーに出くわしたときのために 頼りになるカンニングペーパーを 用意することができるのです。 既存のテーブルを 書き換えるのではなく、 クリーンなテーブルを作成しておくのも 良いでしょう。 この方法であれば、クリーニングを やり直す必要がある場合に備えて、 元のデータを残しておくことができます。 

### <font color="MediumBlue">あなたが行った変更を他のユーザーに 知らせることができる</font>
もし皆さんが休暇を取ったり、 昇進したりした場合 後任のデータアナリストが 参考資料に基づいて 確認することができます。 

### <font color="MediumBlue">分析に使用するデータの品質を 確認するのに役立つ</font>

最初の 2 つのメリットは、エラーが 修正不可能であることを前提としています。 しかし、もしエラーがあったとしても 記録があれば、データエンジニアに 参照すべき情報を提供できます。 また、データセットがエラーだらけで 将来的に避けるべきものであると 自分自身に警告することもできます。 もしエラーの修正に時間がかかるようなら 代わりに使える別のデータセットを 確認した方がいいかもしれません。 データアナリストは通常、 このような情報にアクセスするために 変更ログを使用します。 

# 変更ログ

変更ログは、プロジェクトに加えられた 時系列の変更点のリストを 含むファイルです。 これは表計算ソフトや SQLでも 使用・閲覧でき、同様の結果を 得ることができます。

### 表計算ソフト

 「変更履歴」のメニューを使えば 個々のセルからワークシート全体まで すべての変更点とその変更者を リアルタイムで追跡できます。 この機能を使うには ファイルタブをクリックし 変更履歴を選択します。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2358573/1b1878c7-1a19-8deb-3e04-da34ba65643b.png" width="400">

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2358573/32b65c3e-0c39-1f79-8419-10b061e3045e.png" width="600">

右側のパネルで、古い履歴を 選択します。すると、ファイルを編集した人、 その名前の横の列で彼らが行った変更を 見つけることができます。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2358573/afcfa632-50e3-a111-46e0-d4f74c2e4d53.png" width="３00">

現在のバージョンに戻るには 左上の戻るをクリックします。 

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2358573/16ff3b07-f127-2a5b-5b3b-c77b5ab76512.png" width="３00">

特定のセルでの変更を確認したい場合は 右クリックして編集履歴を表示を 選択してください。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2358573/1837590b-05d9-1caf-d592-1706ae9d37a2.png" width="３00">

また、他の人にもシートの変更履歴を 閲覧してほしい場合は、 権限を付与する必要があります。

### SQL

SQL で変更履歴を作成・閲覧する方法は 使用しているソフトによって異なります。 

- 基本的には、クエリを 新しく改良したクエリとして リポジトリに書き込む際に、 何を、なぜ行ったのかを 正確に指定すればよいのです。 これにより、以前私が経験したように 何かしたことでシステムが クラッシュしてしまった場合でも 以前のバージョンに戻せるのです。 
- もうひとつの方法は SQL でデータをクリーニングしている間に、 そのままコメントを追加していくことです。 これは、変更履歴を 後から作るうえで役立ちます。 今回は、実行したすべてのクエリを記録する クエリ履歴を確認します。

表示のどれかをクリックすると 以前のバージョンのクエリに戻したり 古いバージョンのクエリを表示して 変更した箇所を確認したりできます。 

私が今いるのが、クエリ履歴のタブです。 右下に日付と時間ごとに実行したクエリが リストアップされています。 

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2358573/4eed3b55-6029-a27f-7a92-f6a917718bd4.png" width="700">


個々のクエリの右側にある このアイコンをクリックすると、 クエリエディタが表示されます。 

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2358573/fce01343-abda-8f38-d16c-c52f8a78a6c3.png" width="700">

クエリエディタが表示されます。 

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2358573/507cbaae-c736-3dba-1345-9890cb25368d.png" width="700">

# 変更ログで最終仕上げ

変更ログでは、自動化されたバージョン履歴に加え、さらに詳細な作業記録を作成することができます。これは、データアナリストがデータに対して行ったすべての変更を記録するためのものです。ここで、別の見方をしましょう。バージョン履歴は、あるプロジェクトのデータ変更で何が行われたかを記録しますが、その理由までは教えてくれません。

変更ログは、変更が行われた理由を理解するのに非常に有効です。変更ログには決まった書式がなく、白紙の文書に記入することも可能です。しかし、変更ログを共有して使っている場合、すべてのログエントリーのフォーマットについて、他のデータアナリストと合意しておくことが望ましいでしょう。

一般的に、変更ログは以下のような情報を記録します。  

- 変更されたデータ、ファイル、数式、クエリ、またはその他のコンポーネント
- 変更されたデータの説明
- 変更日
- 変更を行った人
- 変更を承認した人 
- バージョン番号 
- 変更の理由

たとえば、表計算ソフトの数式を変更したときに、別のレポートでもその数式が使われているのを確認し、データを一致させ、一貫性を持たせたいと思ったとします。後になって、そのレポートが実は間違った数式を使用していたと分かった場合、自動バージョン履歴を使用すれば、変更を元に戻すことができます。

また、変更履歴に変更理由を記入しておけば、レポートの作成者に間違った数式が使われていると知らせることができます。しばらく前に生じた変更であれば、誰に連絡すればよいのか思い出せない場合もあります。そんなとき、変更ログを見ればそのような情報が記載されています。 

最後に、スプレッドシートやクエリに多くの変更が加えられた場合、変更ログはその効果を発揮します。例えば、あるアナリストが 4 つの変更を行い、2 つめの変更を元に戻したいとします。2 つめの変更を取り消すために取り消し機能を 3 回クリックして 3 つめと 4 つめにされた変更を消去してしまうかわりに、2 つめの変更だけを取り消し、他のすべての変更は維持することができます。この例では 4 つの変更だけでしたが、何百もの変更を追跡するために、この変更ログがどれほど重要であるか考えてみてください。


:::note info
もしデータアナリストが、会社全体で共有されている既存の SQL クエリに変更を加えたい場合、その会社はバージョン管理システムと呼ばれるものを使用していることがほとんどです。 
:::