
SQLユーザーのためのNRQL入門:SQLの知識を活かして効率的に学ぶ方法
こんにちは。ゲームソリューション部の出村です。
NewRelicの特徴として、NRQL(ぬるくる、と読みます)という言語が実装されている点があります。このクエリー言語を利用することで、NewRelicに格納されている、さまざまなデータを調査したり、カウント、監視対象とすることができます。
NRQLについて全く知識がない人がNRQLをはじめてみると、どこかで見たことがあるな、と感じる人もいることでしょう。
実際にその通りで、NRQLの文法はSQLに近い文法となっています。ですので、SQLを書いたことがある人であれば理解も比較的スムーズでしょう。
では、SQLの知識や経験がある方向けに、NRQLの紹介と効率的に習得する方法を解説していきます。
NRQLとは?
NRQLとは、NewRelicで利用されるRDBで利用されるSQLに近い文法を持つクエリー言語です。どの程度近いのか、実際にみてみましょう。以下のクエリーでは、NRQLを使用して過去2分でWebサイトに訪問している人の数を取得しています。
FROM PageView SELECT uniqueCount(session) AS 'Site Visitors' SINCE 2 minutes ago
これをみると分かりますが、文法的にはSQLによく似ています。SQLはRDBの複数のデータに効率良くアクセスするためのものであるのに対し、NRQLはNewRelicに記録されているログやメトリクスなどのデータに対して効率良くアクセスや集計を行う為の機能を備えています。
例えば「直近30分のデータを抽出する」ことを指す場合、「SINCE 30 minutes ago
」と記述できます。SQLだとBETWEENを利用して書く箇所でしょうが、それより直感的に理解しやすい構文が用意されています。
SQLとNRQLとの比較
SQLとNRQLは近い文法をもっている点は理解できたかと思いますので、ここではもう少し掘り下げて、共通点と違いについて触れていきます。
共通点
共通点としては、SELECT、WHERE、FROMなどの文法やカウントする際にはcount( * ) と記載するなど共通の文法が多数あります。いずれの言語もQL(QueryLanguage)と謳っているので、似たような文法になります。
相違点
NRQLは、リレーショナルデータベースではなく、ログ、イベントデータ、メトリクスなどのデータを対象に扱います。なお、これらのデータは既に構造が決まっています。
その他、SQLにはない、さまざまな文法が用意あれています。例えば、時間指定としてSINCEやUNTILなどNRQL固有の表記ができます。
また、集計関数も豊富にあります。たとえば、ユニークなデータをカウントする場合は、uniqueCount()
が利用できる、といった感じです。
基本的なNRQLクエリを紹介
もう少し雰囲気をつかんでもらうため、代表的なNRQLのクエリについて文法をまじえて解説します。
ここでは、Webサイトに対して現在訪問している人数をカウントするためのクエリです。
FROM PageView SELECT uniqueCount(session) AS 'Site Visitors' SINCE 2 minutes ago
このクエリは以下のような意味をもっています。
FROM PageView
- PageViewは、ページビューの記録を指していますSELECT uniqueCount(session) AS 'Site Visitors'
- ユニークなセッションの数をカウントし、Site Visitorsとして扱いますSINCE 2 minutes ago
- 直近2分のデータを対象にします
このように、英語の文章として読んで違和感がないような文法となっています(これはSQLもそうなのですが)。
効率的にNRQLを習得する
SQLといった言語は「習うより慣れろ」で習得してきた方も多いかと思います。ここでは、NRQLの入り口の触りを紹介しましたまでです。
このNRQLを効率的に習得したり、自分がほしいデータを取得するためのNRQLを取得する方法がいくつかありますのでご紹介します。
定義済みクエリーを参考にする
ダッシュボードで表示しているデータは、NRQLで抽出されたデータを表示しています。そのため、取得したいデータ、表示したい形式などに関しては、ダッシュボードやクエリーなど、さまざまな所に定義されています。
NewRelicには、サンプルとしてダッシュボードが用意されていますので、その中に記述されているクエリーを参考にする、もしくは、それを元に欲しいデータを表示するようにする、といった方法がとれます。
ではその具体的な手段を解説します。ダッシュボードの各表示物の右上に"..."のアイコンがあります。クリックし、その中にEDITという項目があるので、それを選択します。すると、クエリーとその実行結果が表示されます。あとは、クエリーを変更するとそれに応じて出力結果も変化します。あとはそれを保存します。
AIに相談する
AIに相談してNRQLを生成することもできます(AIについては試験中のものです)。NewRelicのAI機能を使えば、日本語でもクエリを生成することができます。例えば「直近1時間のエラー率を表示して」といった自然言語での指示から、適切なNRQLクエリを生成してくれるため、初心者でも必要なデータを簡単に取得できます。
まとめ
NRQLはSQLに似た構文を持ちながらも、データ分析に特化した機能を提供しています。特にFACETやTIMESERIESといった機能は時系列データの分析において非常に便利です。
NRQLを学ぶ際は、まずTransactionやLogといった基本的なデータソースからクエリを書き始めることをお勧めします。既存のダッシュボードに組み込まれたクエリを参考にしたり、NewRelicのAI機能を活用することで、効率的にNRQLを習得することができます。あとは実際にクエリを書いて実行してみながら、NewRelic特有の機能や表現方法に慣れていくとよいでしょう。