2015年11月12日 リリース

Timelion: Kibanaの時系列コンポーザ

By Rashid Khan

Kibanaのデモを作成しながら、「Kibanaで時系列データをもっと活用できたらいいのに」と感じていました。同時に、Kibanaの新しい式構文を考えながら、「クエリや変換や視覚化を1か所で、1行で記述する方法があればいいのに」と思っていました。翌日、大西洋を横断する飛行機の中であるプランを思い付きました。機上の1人きりの極小ハッカソンで、時系列と式の両方のかゆいところに手が届く、ある実験を考え出したのです。

ヒューストンに着陸するまでに、ある構文と網目状のグラフ、そしていくつかの簡単な関数を書き出していました。さらに数時間後、フェニックスに到着したときには、今まで思いもよらなかった疑問の答えを見つけていたのです。

  • 各ユーザーがアクセスするページ数が経時的にどのように変化しているか?
  • 今週の金曜日と先週の金曜日にどのような違いがあるか?
  • 今日、日本の人口の何%が自分のサイトにアクセスしたか?
  • S&P500社の10日間の移動平均はどの程度か?
  • 過去2年間に行われた検索の累積合計はどのくらいか?

Timelionでは、このすべての疑問、そしてこれ以外の疑問も解明することができます。Timelionは、Elastic {Re}searchの時系列データ探索プロジェクトですが、単なる実験ではありません。誰もが、今すぐ活用できます。

Elastic {Re}searchとは

{Re}searchとは、 Elasticの最先端テクノロジーラボです。弊社の砂場のような位置付けで、奇想天外な砂の城を作っています。{Re}searchのプロジェクトは、アイデアを試して形に変えるElasticのエンジニアが立ち上げたものです。{Re}searchの取り組みの中で発案されたプロジェクトが、弊社の次なる目玉となり、パッケージ化されてユーザーの皆様にご利用(多用)いただきます。スタンドアロンのものもありますが、大半は既存の製品のプラグインか拡張機能です。弊社では、ぜひ皆様に機能をインストールして実験し、その体験を{Re}searchにご紹介いただきたいと考えています。{Re}searchは、弊社のアイデアに関するフィードバックを収集する役目も果たします。

Timelionとは

Timelionは、「タイムライン」と読み、完全に独立したデータソースを1つのインターフェイスに集約します。このインターフェイスは、データの取得、時系列の結合、変換、視覚化をまとめたシンプルな1行の式言語で駆動します。Timelionの式はすべてデータソース関数で始まります。例えば、.elasticsearch(*)(短縮形は.es(*))のように表記します。この上なくシンプルです。そして、Elasticsearch内の全データが経時的にカウントされます。とても簡単です。ご覧のとおり、関数は必ず「.」(ドット)で始まります。ここで、上記の1つ目の質問の「各ユーザーがアクセスするページ数が経時的にどのように変化しているか? 」を見てみましょう。1つの図に2つのグラフを組み合わせる場合は、グラフをカンマで区切ります。けれども、もっとよい方法があります。

Screen Shot 2015-11-12 at 2.16.23 PM.png個々の関数を実行するよりも優れた方法は、関数を結合させることです。私が何よりも行いたいことは、合計ヒット数をユーザーごとに分けることです。そんなこともできるんです。できるようになったんです。ここで行うことは、「すべてを収集してから、時系列の各時点で分類する」ということです。具体的には、このユーザーフィールドの基数の系列の各時点を.divide()に渡して分類します。

Screen Shot 2015-11-12 at 2.14.56 PM.pngこれだけではありません。Timelionでは、これとまったく同じ構文を使用して、他のデータソースにアクセスできます。世界銀行のData APIを例にとった場合、系列を( )内にまとめてグループ化し、このグループに関数を適用できます。すべてのデータソースがoffset引数(offset=-1Mなど)を受け取り、先月をあたかも現在起きていることのように比較できます。Timelionではさらに、間隔が一定ではない系列を参照に適合させてから、例えば世界銀行の年次データをElasticsearchの系列で次々と分類していくことができます。

Screen Shot 2015-11-12 at 2.27.39 PM.png

つまり、同じ式内でも、これらのソースを自在に組み合わせることができます。そのため、「年初来、米国の国内総生産における我が社のシェアは何パーセントぐらいか?」といった無謀な質問を投げ掛けることができます。さらに、この割合が高い場合には、「同僚のRashidのシェアはどのくらいか?」という質問を問い掛けることがもきます。これは冗談ですが、......あながち冗談でもありません。

関数の結集

加算や除算などの単純な演算関数から、移動平均、累積和、導関数まで、25種類の関数が用意されています。とは言うものの、Timelionの関数は完全にプラガブルで、ごく簡単に記述できます。ぜひ皆様も関数を考案して追加してください。

多大な可能性

この投稿にすべて書き切れるわけはなく、まだまだたくさんのことが可能です。Timelionでは、構成の手順と数種の初歩的な関数について段階的に説明するチュートリアルを公開する予定です。基本を学んだら、後はご自分で探索してください。

インストールは簡単です。./bin/kibana plugin -i kibana/timelionコマンドを実行して、Kibanaサーバーを再起動し、ブラウザをリフレッシュします。あるいは、Foundで試してみることもできます。 Found by Elasticとは、世界史上最も優れたホスト型のElasticsearchで、無料でご利用いただけます。

Timelionを実際に操作

インストールすると、Kibanaに新しいアイコンが表示されます。このアイコンをクリックすると、アプリスイッチャーが開き、他のアプリを入力できます。

Screen Shot 2015-11-12 at 5.33.20 PM.png

Elastic{ON}ツアーに参加している方は、この動画をすでにご覧になっています。Elastic{ON}に参加していない方は、自力で学ばれているのでしょうが、 Elastic{ON}^16に参加することをお勧めします。

このブログではelasticのヒントやコツをご紹介します。手っ取り早く知りたい方は、elasticのtwitterスペースもご覧ください。ここをクリックすると、GitHubに移動します。