あの家のあたたかみ、そして明るさについてのデータをKibana 4で可視化する(ところまでで力尽きました)
前回で、RからElasticsearchが使えることがわかったので、この勢いでKibanaを使って、Rで有名なデータを可視化してみたいと思います。
Kibana?
Elasticsearchに入れた時系列データをいい感じに可視化できるソフトです。
Rで有名なデータ?
そう、これです。Tokyo.R界隈ではポストiris
最有力候補と噂されるあのデータです。
Kibanaを動かす
Download Kibana Free • Get Started Now | Elastic
からアーカイブをダウンロードして解凍するとすぐ使えます。
wget https://download.elasticsearch.org/kibana/kibana/kibana-4.X.X-linux-x64.tar.gz
tar xf kibana-4.X.X-linux-x64.tar.gz
cd kibana-4.X.X-linux-x64
その前に、Elasticsearchのポートを変えたりしてる場合は設定ファイルを書き換える必要があります。
vi config/kibana.yml
elasticsearch_url
にElasticsearchのIPとホストを指定します。
# The Elasticsearch instance to use for all your queries. elasticsearch_url: "http://localhost:XXXX"
また、Kibanaのポートを変える場合はport
を指定します。
port: YYYY
あと、VPSとかに立てる場合は、ufwの設定とかも忘れずに。
データの読み込み
とりあえずレポジトリからCSVデータを取ってきて読み込みます。
library(httr) library(readr) res <- GET("https://github.com/dichika/mydata/raw/master/room.csv") roomdata <- read_csv(content(res, as = "text"))
データの中身はこんな感じです。
head(roomdata) #> Source: local data frame [6 x 3] #> #> time light temperature #> 1 2015-02-12 01:45:04 463.0 26.784 #> 2 2015-02-12 02:00:03 473.0 26.630 #> 3 2015-02-12 02:15:04 467.9 25.983 #> 4 2015-02-12 02:30:04 0.0 25.453 #> 5 2015-02-12 02:45:04 0.0 23.650 #> 6 2015-02-12 03:00:04 0.0 22.530
これにあわせてindexをつくります。
Kibanaは時系列データしか扱えません。@timestamp
というフィールドをつくる必要があるらしく、今回のデータの場合はtime
カラムをタイムスタンプとして使います。
参考:http://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-timestamp-field.html
mappings <- '{ "mappings" : { "room" : { "_source" : {"enabled" : true}, "properties" : { "time" : {"type" : "date", "format" : "yyyy-MM-dd HH:mm:ss"}, "light": {"type" : "float"}, "temperature" : {"type" : "float"} } } }, "_timestamp" : { "enabled" : true, "path" : "time" } }' index_create(index='room', body=mappings)
bulk importのためのdocs_bulk()
を使いたいところですが、この関数は引数にJSONファイルしか摂ることができません。いちどJSONファイルに変換するか、docs_create()
を使います。
library(jsonlite) lapply(1:nrow(roomdata), function(i) { docs_create(index = 'room', type = 'room', id = i, body = toJSON(unclass(roomdata[i,]), auto_unbox = TRUE)) })
これで準備完了です。
Kibanaを使う
設定したポートにブラウザでアクセスすると、こんな画面が出てるはずです。
で、それからいろいろやるとこんな感じのダッシュボードができます。
へー。って感じですね。やっぱりもうちょい複雑なデータじゃないと、Kibanaの使い甲斐がない感じします。
で、「いろいろやると」って何??というのは、書こうと思ったけど今日のところは力尽きました。。
また気が向けば書きます。すみません。