はじめに
New Relicのクエリ言語NRQLの2024年1月のアップデートで、JSONを柔軟に解析できる新しい関数が登場しました!この記事ではそれぞれの関数の使い方を紹介します!
このアップデートの詳細はこちら
What's new
その他アップデートの詳細はこちら
New Relic アップデート(2024年1月)
New Relic アップデート一覧
新関数の使い方を確認
今回、登場した関数は以下になります。
関数名 | 機能内容 |
---|---|
jparse() | JSONを解析し、値のマップ/リスト(またはネストされた構造)を生成します |
mapKeys() | 解析されたJSONからキーを返します |
mapValues() | 解析されたJSONから値を返します |
各関数の使い方を見ていきます!
jparse()
jparse() は、 文字列値を受け取り、値のマップまたはリスト (またはネストされた構造) を生成します。
例えば、下記のクエリでは、指定されたJSONデータから ID、名前、および特定の値を抽出します。
WITH '{"users": [{"name": "Hello", "id": 435}, {"name": "World", "id": 436}, {"name": "GetThisName", "id": 500}]}' as jsonString,
jparse(jsonString, 'users[*].id') as ids,
jparse(jsonString, 'users[*].name') as names,
jparse(jsonString, 'users[2].name') as getSpecificValue
SELECT ids, names, getSpecificValue

aparse() を使って、ログのmessageからJSONデータを抽出し、jparse()で特定の値を抽出してみます。
WITH '1693242121842: value=\'{"user": {"name": "John", "id": 5}}\', useless=stuff' as logMessage,
aparse(logMessage, '%: value=\'*\'%') AS jsonString
SELECT jparse(jsonString, 'user.name') AS Name

mapKeys()
mapKeys()は、 マップが渡されると、すべてのキーのリストを抽出します。
WITH '{"Field1": "exampleString", "Field2": false, "Field3": 100}' AS jsonString
SELECT mapKeys(jparse(jsonString)) AS keys

ネストされたキーを含むJSONデータからキーのリストを抽出します。
WITH '{"value1": "test", "value2": {"nestedValue1": [1, 2, 3], "nestedValue2": 100}}' as jsonString
SELECT mapKeys(jparse(jsonString)) AS keys

mapValues()
mapValues() は、マップが入力として渡されると、すべての値のリストを抽出します。
WITH '{"Field1": "exampleString", "Field2": false, "Field3": 100}' AS jsonString
SELECT mapKeys(jparse(jsonString)) as values

ネストされたキーを含むJSONデータから値のリストを抽出します。
WITH '{"value1": "test", "value2": {"nestedValue1": [1, 2, 3], "nestedValue2": 100}}' as jsonString
SELECT mapValues(jparse(jsonString)) AS values

まとめ
今回、2024年1月の機能アップデートで登場したjparse() 、mapKeys() 、mapValues()のNQRLクエリ関数の使い方を紹介させていただきました。ログに含まれるJSONから必要なデータを簡単に抽出して、ダッシュボードで分析したり、アラート条件に指定するなどできますのでご活用ください!!
このアップデートの詳細はこちら
What's new
その他アップデートの詳細はこちら
New Relic アップデート(2024年1月)
New Relic アップデート一覧
New Relic株式会社のQiita OrganizationOrganizationでは、
新機能を含む活用方法を公開していますので、ぜひフォローをお願いします。