CSV 形式のルックアップ テーブルをアップロードすると、 lookup()
関数を使用して NRQL クエリでそのデータにアクセスできます。
ルックアップ テーブルを使用する理由
ルックアップ テーブルを使用する理由とそのアップロード方法については、 「ルックアップ テーブル」を参照してください。
基本的なクエリ構文
テーブルに storeNames
という名前を付けたとします。このクエリは、そのテーブルからすべてのデータを選択します。
このクエリは、同じテーブルからいくつかの特定の属性を選択します。
SELECT store_ID, store_name, description
クエリの例
ルックアップ テーブルの主な利点は、そのデータと New Relic に保存されているテレメトリ データを組み合わせるクエリを使用できることです。
次は、クエリの例です。
このクエリは、ルックアップ テーブルに含まれるホスト名をクエリすることで、ホストの長いリストのハードコーディングを回避します。
WHERE hostname IN (FROM lookup(myHosts) SELECT uniques(myHost))
JOIN
クエリを使用すると、データをより理解しやすくなります。たとえば、カスタム イベント タイプの次のクエリでは、 storeNames
テーブルを使用して、店舗名と総売上高を表示します。また、これにより 10,000 の制限が許可されることにも注意してください。これは、ルックアップ テーブルが他の NRQL データ型よりも高い制限をサポートしているためです。
JOIN (FROM lookup(storeNames) SELECT store_ID as storeId, storeName AS name LIMIT 10000) ON shopId = storeId
SELECT shopId, storeName, totalSales
以下は、ステータス コードを読み取り可能なステータスの概要に変換するクエリです。
JOIN (FROM lookup(statusCodeTable) SELECT status_code, status_summary, status_definition)
ON http.statusCode=status_code
SELECT count(*) FACET status_summary
結果の例をいくつか示します。
このクエリは、複数の NRQL 機能が連携してログ データのクエリからビジネス情報を取得する方法を示しています。このクエリはログ メッセージからアイテムに関する情報を抽出し、 JOIN
を使用してわかりやすいアイテム名を取得し、アイテム名と保存されているアイテム数のテーブルを生成します。
WITH aparse(message, 'POST to carts: * body: {"itemId":"*","unitPrice":*}%') AS (URL, ItemID, Price)
JOIN (FROM lookup(itemNames) SELECT ItemID, itemName) ON ItemID
SELECT count(*) FACET itemName
WHERE message LIKE 'POST to carts%'
結果の例をいくつか示します。
このクエリはルックアップと GeoIP を 組み合わせて、最も失敗したステータスを持つ場所を見つけます。
JOIN (FROM lookup(statusCodeTable) SELECT status_code, status_summary, status_definition)
ON CacheResponseStatus=status_code
SELECT count(*) WHERE ClientIP.countryName IS NOT NULL AND status_summary != 'Success'
FACET ClientIP.countryName, status_summary, CacheResponseStatus
SINCE 1 day ago LIMIT MAX
結果の例をいくつか示します。
クエリに関する技術的な詳細
LIMIT
を使用する場合に返される応答の最大数は 20,000 です。
NRQL アラート条件にルックアップ データを使用することはできません。
次の NRQL 関数はルックアップ クエリではサポートされていません。
TIMESERIES
COMPARE WITH
EXTRAPOLATE
ただし、これらの句は、検索クエリが内部クエリに含まれている場合に使用できます。この例については、 このクエリを参照してください。