[アップデート]Neptune Workbenchで可視化機能が利用可能になりました

2020.08.15

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

CX事業本部@大阪の岩田です。

2020/8/12付のアップデートにより、Neptune Workbenchで可視化機能が利用可能になりました。

さっそく可視化機能を試してみたので、内容を簡単にご紹介します。

何がうれしいの?

Neptuneはマネージドなグラフ型DBを提供するサービスですが、GA当初はクエリを実行するためのクライアント環境は特に提供されていませんでした。そのためNeptuneに対してクエリを発行するには別途自前でEC2等の環境を構築する必要があったのですが、昨年末のNeptune Workbenchリリースによってマネージドサービスだけでクエリ実行環境を構築できるようになりました。

しかし、このNeptune Workbenchはクエリの実行結果を可視化する機能を有しておらず、グラフ型DBの醍醐味とも言える可視化を実現するためには別途Graphexp等の環境構築が必要でした。

今回のアップデートによってNeptune Workbench単体で可視化まで行えるようになり、Neptuneを用いた各種の分析がよりお手軽に実施できるようになりました。可視化機能はクエリ言語としてGremlinを利用する場合、SPARQLを利用する場合、いずれの場合も利用可能です。

可視化機能の使い方

可視化機能の使い方ですが、クエリ言語にGremlinを利用する場合とSPARQLを利用する場合とで指定方法が異なります。

Gremlinを使う場合

Neptune WorckbenchからGremlinのクエリを実行すると、クエリの結果に基づいてNeptune Workbenchが自動的に可視化を行います。デフォルトでも可視化は実行されますが、クエリ実行時に--path-pattern or -pオプションの引数として可視化のためのヒントを指定することで、可視化結果を制御することが可能です。ヒントとして指定可能なのは

  • v
  • inv
  • outv
  • e
  • ine
  • oute

の6つです。v(Vertex)とe(Edge)それぞれに対してIN方向とOUT方向が指定できるイメージですね。これらのヒントはv,oute,invのようにカンマ区切りで複数のヒントを同時に指定可能です。指定されたヒントはクエリの各ステップを反映して可視化結果に反映します。クエリのステップ内容と矛盾したヒントを指定するとエラーになるので要注意です。クエリの内容に応じてうまくヒントを指定していきましょう。

SPARQLを使う場合

SPARQLの場合はクエリ結果に基づいてNeptune Workbenchが自動的に可視化を行います。

SPARQLが分からないので、ドキュメントの記載が理解できなかったのですが、%% sparqlのオプションとして--expand-all を指定することで、デフォルトの可視化よりも詳細な可視化が行えるようです。

Neptuneのドキュメントには以下のように記載されていました

Neptune workbench creates a visualization of the query results for any SPARQL query that takes the form SELECT ?subject ?predicate ?object or SELECT ?s ?p ?o . To see the visualization, select the Graph tab to the right of the Table tab under the query after you run it.

By default, a SPARQL visualization only includes triple patterns where the o? is a uri or a bnode (blank node). All other ?o binding types such as literal strings or integers are treated as properties of the ?s node that can be viewed using the Details pane in the Graph tab.

In many cases, however, you may want to include such literal values as vertices in the visualization. To do that, use the --expand-all query hint after the %%sparql cell magic:

%%sparql --expand-all This tells the visualizer to include all ?s ?p ?o results in the graph diagram regardless of binding type.

You can see this hint used throughout the Air-Routes-SPARQL.ipynb notebook and you can experiment by running the queries with and without the hint to see what difference it makes in the visualization.

やってみる

さっそく可視化機能を試していきます。Neptune Workbenchに2つのチュートリアルが用意されているので、このチュートリアルに沿って試してみます。なお、今回はクエリ言語としてGremlinを利用して試していきます。

まずは先程の武田のブログを参考にNeptune Workbenchの環境を立ち上げます。1点注意点として、DBインスタンスの認証機関としてrds-ca-2019を選択するように注意して下さい。デフォルトのCAを利用すると、証明書の有効期限切れに起因してNeptune Workbenchからアクセスすることができません。

Neptune Workbenchが起動したらサンプルのノートブックを開きます。

%seedでデモ用のデータを投入します。今回はクエリ言語にGremlinを利用するのでLanguageにはGremlinを、Data setはデフォルトのairportsを選択してSubmitします。

テストデータの投入が完了すると、いよいよクエリの実行です。まずはノートブックに用意されているサンプル通り以下のクエリを実行します。フライトの経路を発/着空港のコード順に上位5件を検索するクエリです。

%%gremlin -p v,oute,inv
g.V().hasLabel('airport').outE().inV().path().by('code').by('dist').limit(5)

実行結果にGraphというタブが増えており、クエリの実行結果を可視した図が表示されていることが分かります。

試しに可視化のためのヒントを削除して同じクエリを実行してみます。

%%gremlin
g.V().hasLabel('airport').outE().inV().path().by('code').by('dist').limit(5)

先程と実行結果が変わったことが分かります。これだとEdgeである経路がVertexのように表示されて分かり辛いですね。

まとめ

Neptune Workbenchの可視化機能についてご紹介しました。自前で可視化の環境を構築する必要が無くなったので、開発の作業効率も大きく上がるのではないでしょうか?個人的にまだグラフDBを業務で利用したことは無いのですが、もし機会に恵まれたらNeptune Workbenchをうまく利用していきたいなと思いました。