ルックアップ
lookup operator は、Sumo や HTTPS サーバに保存されているログ メッセージのデータを意味のある情報にマッピングします。たとえば、lookup operator を使用して "userID" を実際のユーザ名にマッピングできます。または、lookup operator を使用してブラックリストに登録された IP アドレスを見つけることもできます。どちらの場合でも、operator で以下を参照します。
- save operator で保存されたデータのテーブル。
- HTTPS サーバでホストされている CSV ファイル。HTTP サーバでホストされている CSV に対して lookup operator を実行すると、データは Sumo Logic にはロードされません。
構文
lookup <outputColumn-1> [as <field>] [,<outputColumn-2> [as <field>]] from <filePath> on <joinColumn-1> [,<joinColumn-2>]
ここで:
outputColumn-x
は、filePath
のヘッダーに含まれるフィールド名のリストです。filePath
は、外部リレーション テーブルが格納された CSV ファイルの HTTPS アドレスまたは、save operator で Sumo Logic ファイル システムに保存されたテーブルへのパスです。
joinColumn-x
は、ログ データ結果の値と外部テーブルで一致する値との関係を定義するフィールド名ペアのリストです。
ルール
- CSV ファイルの最大サイズは 8MB です。
- HTTPS リソースを使用する場合、ファイルは 10 秒以内にダウンロードできる必要があります。10 秒以内にダウンロードできないファイルは大きすぎる可能性があります。
joinColumn-x
のフィールドは同じデータ型でなければならず、大文字と小文字は区別されます。たとえば、検索結果のフィールドが整数データで構成される場合は、外部ルックアップ テーブルのフィールドも整数データでなければなりません。データは、文字列や数値にキャストできます。「数値または文字列へのデータのキャスト」を参照してください。- メタデータ フィールドをルックアップする場合は、lookup オペレーションで
as
オプションを使用してフィールド名を変更するか、lookup オペレーションの直後に Null 値をフィルタする必要があります。
CSV ファイルの構成
Sumo Logic では、HTTPS でホストされる CSV ファイルに関して以下の制約があります。
- CSV ファイルにはヘッダ行が必須です。
- ヘッダ行では特殊文字は使用できません。
- CSV ファイルのすべての値は引用符で囲む必要があります。
- 引用符と値の間にはスペースを入れることはできません。例:
"id","name","time"
"1","foo","6-15-12"
"2","zoo","6-14-12"
"3","woo","6-13-12"
ダッシュボードの制限
lookup operator は、ライブ モードとインタラクティブ モード (インタラクティブ検索) では動作が異なります。ライブ モードでは、ルックアップが継続的に行われ、リアルタイムの結果が表示されます。ただし、リアルタイムの値が反映されるのは最新のデータ ポイントのみで、以前のデータ ポイントはそれぞれの検索時点での値を保持します。インタラクティブ検索は、クエリの処理時にすべてのデータ ポイントに対してルックアップを実行します。従って、ライブ モードとインタラクティブ モードの結果を比較すると、ルックアップの結果に違いがあります。
たとえば、過去 30 日間の平均株価をグラフにするとします。
ライブ モードでは、リアルタイムの株価が検索され、過去 30 日のデータ ポイントの値はそれぞれの検索時の値となります。
インタラクティブ モードでは、リアルタイムの株価のみを使用して過去 30 日の株価をグラフとして表示します。この場合は、過去 30 日分の株価のデータを提供する必要があります。
つまり、ライブ モードでは、ルックアップが実行された時点でのデータを使用して、そのデータを保持します。インタラクティブ検索では、実行時に存在するデータのみを使用します。
例
他の operator と同じように、[Search (検索)] タブに lookup operator を入力します。
userID 文字列を CSV ファイルに保存されているユーザの ID と一致させるには、次のようなクエリを実行します。
* | parse "name=*, phone number=*," as (name, phone)
| lookup email from https://company.com/userTable.csv on name=userName, phone=cell
userTable.csv
ファイルの内容は次の通りです。
"id","userName","email","IP","cell" "1","Joe","joe@example.com","192.168.1.1","650-123-4567" "2","John","john@example.com","192.168.1.2","212-123-4567" "3","Susan","susan@example.com","192.168.1.3","914-123-4567" "4","John","another_john@example.com",192.168.1.4","408-123-4567" "5","John","yet_another_john@example.com","192.169.1.5","734-123-4567"
このクエリを実行すると、出力に name、phone、そして email という 3 つのフィールドが追加されます。
複合フィールド ルックアップ
上の例では、複数のユーザの名前が John になっています。lookup operator を複合フィールド セットに対して使用することで、次のようなクエリを使用してそれぞれの携帯電話番号をマッピングして、それぞれの John に正しいメール アドレスを関連付けることができます。
* | parse "name=*, phone number=*," as (name, phone)
| lookup email from https://company.com/userTable.csv on name=userName, phone=cell
このクエリを実行すると email というフィールドが出力に追加されます。
複数の lookup operator の併用
lookup operator を他の lookup operator と連結して使用することができます。各 operator では、別々の CSV ファイルを呼び出すことができます。たとえば、ユーザ名を検索して、それぞれのユーザの役職を調べたい場合は、次のようなクエリを使用します。
* | parse "userID=*," as userID
| lookup userName from https://company.com/userTable.csv on userID=id
| lookup position from https://company.com/userPosition.csv on userID=id
userPosition.csv ファイルの内容は次の通りです。
"id","position" "1","Salesperso" "2","Salesperson" "3","Engineer" "4","Manager" "5","Senior Engineer"
上の例では、最初の operator で名前を検索し、2 番目の operator で役職を検索しています。
lookup operator を使用した保存データへのアクセス
save operator を使用して検索結果を Sumo Logic ファイル システムに保存してある場合は、lookup operator を使用してそのデータを検索できます。
たとえば、ユーザがサインアップした日付を newDailyUsers というファイル (フルパスは myFolder/mySubFolder/newDailyUsers) に保存してあるとします。この情報を検索するには、次のクエリを使用します。
* | parse "user_name=*," as name
| lookup date from myFolder/mySubFolder/newDailyUsers on name=name
save operator で生成されたファイルは、組織レベルの shared フォルダに保存できます。これにより、組織の他のユーザがルックアップ クエリを実行する際に、この検索結果を使用できるようになります。詳細については、「共有場所へのファイルの保存」を参照してください。
重複キー エラー
ルックアップ操作で指定したキーが複数のレコードと一致した場合は、重複を警告するエラー メッセージが表示されます。
Lookup table folder/myfolder/filename has duplicate keys. The last value associated with a duplicated key will be used in the lookup result.
結果には、最後に一致した値のみが返されます。
たとえば、34.87.4.6 からの Apache Access ログで、特定の keyid を指定して内部サーバ エラーを検索すると、条件と一致する最後の結果のみが次のように表示されます。