• /
  • EnglishEspañolFrançais日本語한국어Português
  • ログイン今すぐ開始

この機械翻訳は、参考として提供されています。

英語版と翻訳版に矛盾がある場合は、英語版が優先されます。詳細については、このページを参照してください。

問題を作成する

NRQL でダッシュボードを進化させる

|View as Markdown (English)

ご自身のデータのコンテキストでサンプルのクエリや説明を確認することは、変化率や集計などのより高度な概念を使用してデータを変換するのに役立ちます。このチュートリアルでは、NRQLの使用の基礎およびNRQLを使用したデータの制御にある概念を基に、より高度な概念へと発展させます。

ケースごとのファセット、高度な集計関数、EXTRAPOLATEキーワード、集計関数のフィルタリング、および値の上書きを使用して、ダッシュボードを高度化する方法について説明します。具体的には、以下の使用方法について説明します:

  • filter()apdex()rate()funnel()histogram()などの高度な集計関数。
  • EXTRAPOLATE句。
  • FACET CASES() 属性およびグループの一致する値用です。
  • filter() イベントタイプを組み合わせるため。
  • 値のオーバーライド。

これらの関数や機能をすべてのダッシュボードで使用するわけではないかもしれませんが、特定の問題や要件に取り組む際に役立ちます。

高度なアグリゲータを使用する

レートを計算する

rate()関数から始めましょう。これにより、時間の経過に伴うイベントの頻度を視覚化でき、より大きな時間枠内の短い期間におけるパターンを特定するのに役立ちます。

以下の例では、過去 1 時間の 5 分ごとのリクエストの平均頻度を、前の 1 時間の 5 分間の平均頻度と比較して確認できます。クエリではSINCE 1 hour agoが使用されていることに注目してください。これは、レートを計算する全体の時間枠です。

SELECT rate(count(*), 5 minutes)
FROM Public_APICall
SINCE 1 hour ago
COMPARE WITH 1 hour ago
A screenshot of a query using Since and Compare to capture data within a time range

rate()を使用して、時間間隔を 1 分または 1 秒に設定することで、1 分あたりのリクエスト数または 1 秒あたりのリクエスト数を計算できます。

ファネル チャートでエンド ユーザーの行動を理解する

ファネルチャートは、複数のレコードにわたる属性値の発生を追跡し、多くの人がエンドユーザーの行動を理解するために使用します。特にカスタムアトリビュートを使用する場合に、ユーザーが定義されたパスをどれだけうまく進んでいるかを視覚化するためによく使用されます。

funnel()集計関数を使用すると、別のページに移動する前に特定のページにアクセスしたユーザーの数を視覚化できます。1番目のパラメーターは、カウントする一意のエントリの識別属性です。この場合、New Relicはサイト上の各ユーザーにsession ID属性を割り当てて保持します(ユーザーがCookieを有効にしている場合)。カスタムアトリビュートを使用して、ユーザー独自のセッションIDを設定することもできます。

残りのパラメーターは、ファネルの各ステップの計算方法を決定し、 , WHERE attr OP valueの形式で記述されます。この場合、2 つあります。1 つはホームページにアクセスしたユーザー セッションの数を示し、もう 1 つは他のページに移動したユーザー セッションの数を示します。自分のデータに対してこのようなクエリを試して、何が得られるかを確認してください。

SELECT funnel(awsAPI, WHERE http.url LIKE '%.amazonaws.com', WHERE http.url LIKE '%.us-west%.amazonaws.com')
FROM Public_APICall
SINCE 1 week ago
UNTIL now
A screenshot displaying the funnel charts functionality

アグリゲーターフィルター

filter() は、単一のクエリで複数のデータポイントを集約できる汎用性の高い関数であり、関数の結果として返されるイベントをより詳細に制御できます。この例では、filter()を使用して、総トランザクション、総ウェブトランザクション、および総非ウェブトランザクションの個別の値を返します:

SELECT count(*) AS 'All Transactions', filter(count(*), WHERE awsAPI = 'dynamodb') AS 'DynamoDB', filter(count(*), WHERE awsAPI = 'sqs') AS 'SQS'
FROM Public_APICall SINCE 1 day ago
A screenshot displaying the aggregator filter functionality

数値が返されるため、クエリの結果に対して計算を実行することもできます。 たとえば、合計 API コールをすべての API コールで割ると、そのうちの何パーセントが DynamoDB であったかを確認できます。

SELECT filter(count(*), WHERE awsAPI = 'dynamodb') / count(*) AS 'Percent of APIs that are DynamoDB'
FROM Public_APICall
SINCE 1 day ago
A screenshot showing the aggregator filters divided

ヒストグラム

ヒストグラムは、単一の平均値としてではなく、頻度バケットごとのデータの分布を示します。これにより、単なる平均だけでなく、頻度によるデータポイントのグループ化を理解できます。histogram()関数は、以下の3つの引数を取ります。

  1. プロットする属性 (期間など)。

  2. 考慮したい範囲の最大値(1秒以下は「1」など)。

  3. データをグループ化するバケットの数。この例では、0 ~ 1 秒のすべての継続時間値のhistogram()グラフを作成し、それらを 50 ミリ秒のバケットにグループ化します。これを行うには、バケットの数に「20」を指定します。1 秒を超えるすべての継続時間が最後のバケットにグループ化されます。

    SELECT histogram(duration, 1, 20)
    FROM Public_APICall
    SINCE 1 day ago
    A screenshot showing the histogram functionality

Apdex

apdex()関数は、任意の数値 (期間など) に基づいて Apdex スコアを計算します。カスタム属性値を考慮して、1 つ以上の特定のトランザクションの Apdex を計算できます。アプリケーションの設定を妨げることなく、独自の Apdex-T 値を指定することもできます。この例では、関数に「duration」の属性と 0.01 の Apdex-T 値を指定し、「Apdex of Duration」としてレポートします。

SELECT apdex(duration, 0.1) AS 'Apdex Of Duration'
FROM Public_APICall
SINCE 1 week ago
A screenshot showing the apdex functionality

TIMESERIES演算子を追加して、時系列でデータをチャート化することもできます。Apdexのsatisfied、tolerating、frustratedの閾値もプロットされることに注意してください。

SELECT apdex(duration, 0.1) AS 'Apdex Of Duration'
FROM Public_APICall
SINCE 1 week ago
TIMESERIES
A screenshot showing an apdex time series

これで、 funnel()histogram()を使用した全く新しい一連のビジュアライゼーションを探索できました。またfilter() WHERE句を使用したクエリでより具体的な情報を取得するのにどのように役立つか、またrate()時間の経過に伴う属性の割合を表示する方法についても学びました。

これらのクエリは、NRQLの知識に基づいています。Apdexは業界標準であり、多くのシナリオに適用されます。ファネルは目的のパスを通る進行状況を追跡でき、ヒストグラムはデータの分布を視覚化します。最後に、フィルターを使用すると、返される値を正確に絞り込むことができます。次に、EXTRAPOLATEについて学習します。

大量のデータには外挿を使用する

New Relicデータベース(NRDB)は、毎日大量のデータを受信して処理します。APMが大量のイベントデータを記録する場合、New Relicエージェントはサンプリング手法を実装して、アプリケーションへの潜在的な影響を軽減しながら意味のあるデータの収集を継続します。これは通常、アプリケーションまたはサービスの単一のイベントが非常に大量のrequestsを処理する場合にのみ発生します。

サービスの複数の負荷分散されたインスタンスに複数のエージェントが分散している場合、この制限に気付くことさえないかもしれません。このような場合に何ができるかを見てみましょう。EXTRAPOLATE演算子は、サンプリングの影響を数学的に補うようNew Relicに指示し、それによってシステム内のアクティビティをより厳密に表現する結果を返します。制限を超えて発生した類似のイベントの数を記録するために追加の値を保存でき、これにより、サンプリングされていないデータを考慮した推定値を返すことができます。

SELECT count(*)
FROM Transaction
SINCE 60 minutes ago
FACET appName
TIMESERIES 1 minute
EXTRAPOLATE
A screenshot showing the extrapolate functionality

このままでは限界に達してしまうのではないかと思うかもしれません。クエリからEXTRAPOLATEを削除して、カウントが変化するかどうかを確認してください。そうでない場合は、制限に達していない可能性があります。

クエリにEXTRAPOLATEを含めると、報告されたイベントと合計イベントの比率が計算されます。次に、この比率を使用して、サンプリングされていないデータの近似値を推定します。一部のクエリのみがこの使用をサポートしていることに注意してください。サポートしていない、またはサンプリングされたデータを使用していない NRQL クエリに含めても、効果はありません。

スループットのような同種のデータで、EXTRAPOLATE関数は最大の効果を発揮します。(uniqueCount()またはuniques()など)特徴的なものの数を外挿する際には、効果が少なくなります。したがって、EXTRAPOLATEは、以下のいずれかの集計関数を使用するNRQLクエリでのみ機能します:

  • apdex
  • average
  • count
  • histogram
  • sum
  • percentage
  • rate
  • stddev

EXTRAPOLATEが完了したら、ファセット ケースの使用に進みましょう。

ファセットケースを使用する

以前に学習したように、FACETはデータをセグメント化し、異なるグループ化された視点からデータを理解するのに役立ちます(異なるレスポンスコードに基づく平均応答時間の確認など)。FACETを使用すると、NRDBは提供された属性の値に基づいてデータをグループに編成します。しかし、HTTPレスポンスコードの200と201など、異なる値を一緒にグループ化したい場合はどうすればよいでしょうか?

FACET CASES() ファセット バケットを分割する方法を選択できるようにすることで、この問題を解決します。演算子は、 WHERE attr OP value形式で任意の数のパラメータを受け取ります。以下の例では、「amazon」、「google」、「microsoft」で始まるhttp.urlのすべてのトランザクションをバケットに分類します。また、エラー応答コードなどに対してこれを実行して、可読性を高め、アプリケーションで何が起こっているかを理解しやすくする方法でデータをグループ化することもできます。

SELECT count(*)
FROM Public_APICall
FACET CASES(WHERE http.url LIKE '%amazon%', WHERE http.url LIKE '%google%', WHERE http.url LIKE '%microsoft%')
A screenshot showing the facet cases functionality

ご覧のとおり、これらのグループ化には価値がありますが、読みにくい場合があります。以前のチュートリアルで学んだことを使用して、これらを整理しましょう:

SELECT count(*)
FROM Public_APICall
FACET CASES(WHERE http.url LIKE '%amazon%' AS 'Amazon', WHERE http.url LIKE '%google%' AS 'Google', WHERE http.url LIKE '%microsoft%' AS 'Microsoft')
A screenshot showing the grouping functionality of facet cases

FACET CASES() 結合したい異なる値を持つ属性を照合してグループ化できます。この機能には多くの用途があり、トランザクションデータにカスタムデータをタグ付けするとさらに便利になります。これにより、データのナビゲーションとグループ化において、より詳細な粒度と制御が可能になります。次に、フィルタリングについてさらに詳しく見ていきます。今回はイベントタイプによるフィルタリングです。

イベントタイプでフィルタリングする

次に、New Relicの顧客のほとんどが気づいていない機能について説明します:イベントタイプへのフィルタリングです!これまでは、単一のソースからデータを取得するクエリを作成してきました。しかし、2つの異なるイベントタイプとして保存されている2つのデータポイントをプロットしたい場合はどうすればよいでしょうか?NRDBデータのクエリは単一のイベントタイプに制限されておらず、カンマで区切ることで異なるイベントタイプからクエリを実行できます。

SELECT count(*) AS 'Combined Events'
FROM NrdbQuery, NrDailyUsage
SINCE 1 day ago
A screenshot showing the filter event type functionality

これをさらに便利にするために、 eventType()関数はレコードがどのイベント タイプに由来するかを示します。これを使用してデータ出力を制御できます。この例では、 TransactionPageViewのイベントを組み合わせた合計数と、 TransactionPageViewのみの合計を確認できます。

SELECT count(*) AS 'Combined Events', filter(count(*), WHERE eventType() = 'PageView') AS 'Page Views', filter(count(*), WHERE eventType()='Transaction') AS 'Transactions'
FROM Transaction, PageView
SINCE 1 day ago
A screenshot showing the event type functionality with transactions and pageview

これをさらに詳しく見てみましょう。 count(*)は、 TransactionPageViewの両方のイベントの合計数を示します。ただし、最近学習したアグリゲータ関数filter()を使用して、何かユニークなことを行うことができます。クエリにはWHERE eventType()='PageView'があり、フィルター関数を呼び出して、合計結果セットの一部としてイベント タイプを監視します。次に、フィルタリングして、それらの特定のイベントのみを表示します。TIMESERIESを追加して、直接比較できる 2 つのデータ ポイントを折れ線グラフで視覚化することもできます。

SELECT count(*) AS 'Combined Events', filter(count(*), WHERE eventType() = 'PageView') AS 'Page Views', filter(count(*), WHERE eventType()='Transaction') AS 'Transactions'
FROM Transaction
SINCE 1 day ago
TIMESERIES max
A screenshot showing the event type functionality with count and time series

これで、2つの異なるイベントタイプからデータを特定し、返し、グラフ化しました。この例では、NRQLを使用して必要なデータをナビゲートする方法を示します。複雑な結合ステートメントは必要ありません。次に、オーバーライド値を使用する方法を学びます。

値を上書きする

NULL値のカウント

必要な形式でデータが報告されないことがあります。例えば、計算を行うために整数として必要な場合に、整数が文字列として返されることがあります。または、データ内でNULLの結果が0を表す場合があります。NRQLは、これらのケースを処理する関数を提供します。

NULL 属性の値は、すぐに使用できるデータとカスタム データの両方に表示できます。count()average()などのアグリゲータを使用すると、NRQL は計算からNULL値を自動的に削除し、 NULL値のないイベントに対してのみ関数を実行します。NRQL では、 OR value句を使用して計算で予期しないNULL値を考慮できます。たとえば、 cartValue属性のNULL値が 0 としてカウントされるようにしたい場合は、クエリでcartValue OR 0を使用できます。

この例では、「http.url」でcount()を実行しています。「http.url」の回数のみをカウントします値があります。ただし、クエリにOR 'Null'を追加すると、「http.url」が含まれるすべてのトランザクションをカウントできます。が存在し、それらもNULL値です。

SELECT count(duration) AS 'Events With Durations', count(http.url OR 'Null') AS 'Events With and Without URL'
FROM Public_APICall
SINCE 1 day ago
A screenshot showing the null values functionality

ダッシュボードの作成を進めるために必要なすべてをほぼ学習しました。次に、強制を使用する方法を学びます。

強制

NRQL は自動的に強制を適用しません。これは、文字列として保存された float を他の文字列と同様に扱い、 sum()average()のような数学関数と一緒に使用できないことを意味します。この動作をオーバーライドするには、 boolean()またはnumeric()を使用して引数をブール値または数値に変換します。この例では、「duration」のaverage()関数は、この属性が文字列であるため値を提供しません。ただし、 numeric(duration)使用して属性を数値に変換すると、 average()関数を正常に使用できます。

SELECT average(numeric(duration)) AS 'Ensuring stored value is treated as numeric', average(duration) AS 'Non-Converted Attribute'
FROM Public_APICall
SINCE 1 day ago
A screenshot showing the coercion functionality

もう1つの一般的な例は、文字列として誤ってフォーマットされることが多いBOOLEAN(TRUEまたはFALSE)値です。このような場合は、ソースがデータを送信する方法を変更して、適切なブール値にすることができます。または、boolean()関数を使用することもできます。以下のクエリ例は同じ結果を返しますが、これはエージェントがBOOLEANとして送信する値を使用しているためです。属性が文字列"TRUE"であった場合、boolean()はそれを適切なブール形式に変換し、クエリが意図したとおりに実行されるようにします。

SELECT count(boolean(sampleDataSet)), count(sampleDataSet)
FROM Public_APICall
SINCE 24 hours ago
A screenshot showing the coercion functionality with the boolean function

string()関数を使用して、ブール値と数値を文字列に変換することもできます。数値を浮動小数点数として使用すると、オプションのprecision引数を使用して文字列の小数点以下の桁数を制限できます。このクエリは、小数点以下 3 桁までに制限された文字列として期間値を返します。

SELECT string(duration, precision: 3)
FROM Public_APICall
SINCE 24 hours ago
A screenshot showing the coercion functionality with precision

これで、データフォーマットを制御し、NRQLにどのように動作させるかを指示できるようになりました。NRQLは最も論理的と思われる方法で動作しますが、それが独自のシナリオに合わない場合は、このレッスンで学習する関数を使用してそれらの値を上書きできます。学習すべきことはあと1つだけです:文字列の連結です。

文字列連結を使用して引数を追加する

属性の戻り値の末尾または先頭にテキストを追加する必要がある場合があります。これは、concat()関数を使用して実現できます。concat()関数には、文字列に連結するための引数を最大20個指定できます。

SELECT concat('The duration of ', http.url, ' is ', duration, ' seconds')
FROM Public_APICall
A screenshot showing the concatenation functionality

連結された属性の値内の浮動小数点数に使用する小数点以下の桁数を制限できます。これを行うには、オプションのprecision:引数を最後の値として使用します。この例では、秒を示すために「s」を追加し、値を小数点以下 3 桁に制限します。

SELECT http.url, concat(duration, 's', precision: 3)
FROM Public_APICall
A screenshot showing the concatenation functionality with precision

New Relicは、http(s)で始まる値を、クリックして新しいページを開くことができるリンクとして自動的に表示します。つまり、動的URLがエンティティの関連ページを開くことができるソリューションへのインテグレーションを作成できます。次の例は、属性値によってクエリパラメーターの値を設定するURLの例を示しています。

SELECT http.url, concat('https://www.example.com/?appId=', api, '&error=', error) AS 'URL'
FROM Public_APICall
A screenshot showing the concatenation functionality with a URL

concat()関数を使用すると、場所の都市と国などの値を組み合わせたり、必要に応じて追加の文字列を先頭または末尾に追加してデータを表示したりできます。

このチュートリアルでは、高度なNRQL機能について学習しました。これらのスキルは、実際の多くのNRQLシナリオに適用できます。

これで、3つ目のNRQLチュートリアルは完了です。準備ができたら、このシリーズの最後となる次のチュートリアルをご覧ください。より高度な機能について説明しています:NRQLの高度な機能

Copyright © 2026 New Relic株式会社。

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.