はてなカウンターのログをダウンロードする
はてなカウンター→ログ→ログのダウンロード
ダウンロードできるものはコンマ区切りのCSVファイルです。 こんな感じの。
2014-03-01 00:01:07,xxx.xxx.xxx,https://www.google.co.jp/,"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/xxxx (KHTML, like Gecko) Chrome/xxxx Safari/xxxx","ja,en-US;q=xx,en;q=xx",1680x1050,24,http://shigemk2.hatenablog.com/entry/20120403/1333457575 2014-03-01 00:02:44,xxx.xxx.xxx,https://www.google.co.jp/,"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/xxxx (KHTML, like Gecko) Chrome/xxxx Safari/xxxx","ja,en-US;q=xx,en;q=xx",1680x1050,24,http://shigemk2.hatenablog.com/entry/20120403/1333457575 2014-03-01 00:03:55,xxx.xxx.xxx,https://www.google.co.jp/,"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/xxxx (KHTML, like Gecko) Chrome/xxxx Safari/xxxx","ja,en-US;q=xx,en;q=xx",1680x1050,24,http://shigemk2.hatenablog.com/entry/20120403/1333457575
Treasure DataでインポートできるのはJSONだけみたいなので、 とりあえずCSVファイルをJSONに変換します。
その前に、1列目を
"time","ip","referer","browser","language","device","unknown","url"
にします。こうしないとTreasure DataにインポートできるJSONに変換できないので。 あと、僕はOpenOfficeで全部””でくくりました。
JSONに変換して、ごにょごにょしたJSONファイルを利用してTreasure Dataのテーブルにインポートします。
今回使ったのはcsvjsonです。
$ csvjson -i 0 101-2014-02.csv > shigemk2-3.json
Python製のcsvファイルを処理するためのコマンドラインツール「csvkit」 - brainstorm
で、変換されるのはこんなやつのJSONです。
[ { "language": "ja,en-US;q=xxx,en;q=xxx", "url": "http://shigemk2.hatenablog.com/entry/2013/11/25/%E3%83%97%E3%83%AD%E3%82%AD%E3%82%B7%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC_squid%E3%82%92%E7%AB%8B%E3%81%A6%E3%82%8B", "ip": "xxx.xxx.xxx.xx", "unknown": "24", "referer": "http://zenback.itmedia.co.jp/contents/shigemk2.hatenablog.com/entry/2013/11/25/%E3%83%97%E3%83%AD%E3%82%AD%E3%82%B7%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC_squid%E3%82%92%E7%AB%8B%E3%81%A6%E3%82%8B", "time": "2014-02-01 00:15:30", "device": "1366x768", "browser": "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/xxx (KHTML, like Gecko) Chrome/xxxx Safari/xxx" }, { "language": "ja,en-US;q=xxx,en;q=xxx", "url": "http://shigemk2.hatenablog.com/entry/20120605/1338832531", "ip": "xxx.xxx.xxx.xx", "unknown": "24", "referer": "https://www.google.co.jp/", "time": "2014-02-01 00:52:35", "device": "1920x1200", "browser": "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/xxx (KHTML, like Gecko) Chrome/xxx Safari/xxx" }, { "language": "ja-JP", "url": "http://shigemk2.hatenablog.com/entry/20120106/1325781987", "ip": "xxx.xxx.xxx.xx", "unknown": "24", "referer": "http://www.bing.com/search", "time": "2014-02-01 00:54:41", "device": "1255x706", "browser": "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/xxx; rv:xxx) like Gecko" }, ]
これでもまだ足りない。この状態でtd table:importをかましてもエラーまみれになる。なので、このJSONを変換する必要がある。
各ノードと各ハッシュの改行を消して、[]を消して、各ノードの,を消して…
みたいな作業をやりつつ、こんな感じのJSONに整える。
{"language": "ja,en-US;q=xxx,en;q=xxx","url": "http://shigemk2.hatenablog.com/entry/2013/11/25/%E3%83%97%E3%83%AD%E3%82%AD%E3%82%B7%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC_squid%E3%82%92%E7%AB%8B%E3%81%A6%E3%82%8B","ip": "xxx.xxx.xxx.xx","unknown": "24","referer": "http://zenback.itmedia.co.jp/contents/shigemk2.hatenablog.com/entry/2013/11/25/%E3%83%97%E3%83%AD%E3%82%AD%E3%82%B7%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC_squid%E3%82%92%E7%AB%8B%E3%81%A6%E3%82%8B","time": "2014-02-01 00:15:30","device": "1366x768","browser": "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/xxx (KHTML, like Gecko) Chrome/xxxx Safari/xxx" } {"language": "ja,en-US;q=xxx,en;q=xxx","url": "http://shigemk2.hatenablog.com/entry/20120605/1338832531","ip": "xxx.xxx.xxx.xx","unknown": "24","referer": "https://www.google.co.jp/","time": "2014-02-01 00:52:35","device": "1920x1200","browser": "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/xxx (KHTML, like Gecko) Chrome/xxx Safari/xxx" } {"language": "ja-JP","url": "http://shigemk2.hatenablog.com/entry/20120106/1325781987","ip": "xxx.xxx.xxx.xx","unknown": "24","referer": "http://www.bing.com/search","time": "2014-02-01 00:54:41","device": "1255x706","browser": "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/xxx; rv:xxx) like Gecko"}
これだけやってみて、さあ突っ込んでみよう。
$ td table:create test shigemk2 Table 'test.shigemk2' is created. $ td table:import test shigemk2 --format json shigemk2-3.json importing shigemk2-3.json... imported 10000 entries from shigemk2-3.json... imported 17829 entries from shigemk2-3.json... uploading 1051828 bytes... imported 20000 entries from shigemk2-3.json... imported 30000 entries from shigemk2-3.json... imported 35559 entries from shigemk2-3.json... uploading 1072781 bytes... uploading 141903 bytes... imported 37880 entries from shigemk2-3.json. done.
やったね。 あとはHiveでもなんでも使ってごにょごにょすればいいよ。
こうしてブログにまとめるとすごい面倒だよ。 理想はこれら全部の作業を自動化してくれることだろう。な。