概要
New Relic のクエリ言語 NRQL は、New Relic で収集されるデータを分析するための豊富な関数を持っています。2023年8月のアップデートでは、新たに累積分布関数が導入されました。この機能を用いることで、指定した閾値を基にデータの分布を計算することが簡単になります。例えば、バックエンドの応答時間や Core Web Vitals の分布を素早く可視化することが可能となります。
このアップデートの詳細はこちら。
New Relic アップデート(2023年8月)
New Relic アップデート一覧
New Relic株式会社のQiita Organizationでは、新機能を含む活用方法を公開していますので、ぜひフォローをお願いします。
cdfPercentage の活用法
cdfPercentage()は、指定した閾値以下の属性値のパーセンテージを算出する関数です。この関数を利用することで、特定の属性の値が指定閾値以下にどれだけのデータがあるのかをパーセンテージで得ることができます。
cdfPercentage(attribute, threshold \[, threshold \[, ...]])
引数に設定できる属性( attribute )は、数値属性、もしくはメトリクスのタイプが distribution の属性を設定することが可能です。メトリクスのタイプについてはこちらの公式ドキュメントから詳細が確認可能です。
数値属性の場合
FROM PageView SELECT cdfPercentage(firstPaint, 0.5, 1.0)
SELECT cdfPercentage(`newrelic.goldenmetrics.synth.monitor.medianDurationS`, 3)
FROM Metric SINCE 1 day AGO

引数には閾値を複数設定することが可能で最大10個まで設定が可能です。
FROM PageView
SELECT cdfPercentage(firstPaint, 0.2, 0.4, 0.6, 0.8, 1.0, 1.2, 1.4, 1.6, 1.8, 2.0)
getCdfCount の活用法
getCdfCount() は、累積分布関数で、値が閾値以下の属性値のデータの数を返す関数です。また、getCdfCount() は、 前述のcdfPercentage()と異なり集計関数ではありません。
getCdfCount(attribute, threshold)
引数に設定できる属性( attribute )は、数値型属性、もしくはメトリクスのタイプが distribution の属性を設定することが可能です。メトリクスのタイプについてはこちらの公式ドキュメントから詳細が確認可能です。
数値型属性の場合
FROM PageView SELECT getCdfCount(firstPaint, 1.0)

getCdfCount()は集計関数ではないため、このように数値型の場合は、属性が閾値以下なら1を返し,そうでなければ0を返します。次にメトリクスのタイプがDistributionの場合を見てみましょう。
メトリクスのタイプがDistributionの場合
FROM Metric
SELECT getCdfCount(`newrelic.goldenmetrics.synth.monitor.medianDurationS`, 3)
WHERE monitorName = 'Test'

メトリクスのタイプがDistributionの場合、このようにデータセット内のデータ数を返します。
このようにgetCdfCount()は集計関数ではないため、閾値以下のデータの総数を計算するわけではありません。集計する場合は、sum 関数を使って集計することで指定した閾値以下のデータの数を算出することが可能です。

まとめ
2023年8月のアップデートにより、累積分布関数のcdfPercentage()およびgetCdfCount()がNRQLに追加されました。これにより、データの分布を簡単にダッシュボードで可視化したり、特定のデータの割合や数にアラートを設定したりする作業が効率化されます。この新機能を活用して、データ分析の幅をさらに広げてみてください!
このアップデートの詳細はこちら。
New Relic アップデート(2023年8月)
New Relic アップデート一覧
New Relic株式会社のQiita Organizationでは、
新機能を含む活用方法を公開していますので、ぜひフォローをお願いします。


