NXQL言語定義 (クラシック)

NXQL チュートリアルが最初のステップを導くのに対して、この文書は NXQL のクエリ能力をより正式に定義します。

プレーンオブジェクトの選択

オブジェクトテーブルからオブジェクトを選択するには、以下の形式の select 文を使用します:

(select ([フィールド]...) 
    (from [オブジェクト] 
        (where [オブジェクト] [フィルター])...))

例:

(select (device_uid name) 
    (from device))

プレーンイベントの選択

イベントテーブルからイベントを選択するには、次の形式の select 文を使用します:

(select ([フィールド]...) 
    (from [イベント] 
        (where [イベント] [フィルター]...)... 
        (between 日時 日時)) 
    (order_by 開始日時 [asc|desc]) // オプション 
    (limit 数))

例:

このクエリは、ステータスが "確立" または "クローズ" でない最後の 100 件の接続の開始時刻と入出力トラフィックを返します。 つまり、ステータスが "拒否済み"、"ホストなし"、または "サービスなし" である接続です。

飾り付きでイベントを選択

特定のイベントテーブルからイベントとそれにリンクされたオブジェクトを選択するには、以下の形式の select 文を使用します。 オブジェクトテーブルがイベントに本当にリンクされていれば、指定できるオブジェクトテーブルの数には制限はありません。

例:

このクエリは、ステータスが "確立" または "クローズ" でない最後の 100 件の接続の開始時刻とそれを開始したユーザーの名前を返します。ステータスは "拒否済み"、"ホストなし"、"サービスなし" です。

別の例:

この最後のクエリは、接続の開始時刻を返さない点を除いて、前のものと同じです。 この種のクエリは、イベントごとに一つのタプルを返すため、同じユーザー名とデバイス名が結果に複数回現れることがあります。 これらのタプルは実際には重複した結果ではなく、異なる接続に属していますが、選択されたフィールドのために違いが見えない場合があります。

アクティビティ付きオブジェクトの選択

アクティビティ(イベント)にリンクされたオブジェクトを選択するには、次の select 文を使用します。 以前のクエリとは異なり、イベントごとに一つの結果タプルが得られますが、この後者の場合はオブジェクトごとに一つの結果タプルが得られます。

例:

このクエリは、昨日の脅威レベルが "中" または "高" なバイナリを実行したデバイスを返します。 加えて、各デバイスについて、条件に一致する異なるバイナリ数を計算します。

2 つのオブジェクトの選択

特定の種類のイベントにリンクされたユニークなオブジェクトのペアを選択するには、次の select 文を使用します。 オブジェクトテーブルは最大 2 つまでしか選択できず、論理演算子を使うことはできません。

例:

このクエリは、パッケージ名に "Office" を含むデバイスとパッケージのユニークなペアを返します。

オブジェクトの更新

更新文は、オブジェクトテーブルのカテゴリまたはカスタムフィールドを変更します:

カテゴリまたはカスタムフィールドの値をリセットするには、次の更新文を使用します:

コンテンツセクションには、以下のようなものがあります。

このクエリは、デバイス名が "PA" で始まるすべてのデバイスの Location カテゴリを パリ に更新します。

このクエリは Location カテゴリを nil にリセットします。 デバイスの Location に自動タグ付けルールが適用されている場合、システムは一致する自動タグ付けルールのキーワードに値をリセットします。

フィルター

フィルターはフィールド値に対する条件です。 次の形式を持ちます:

[比較子] は以下の値を持つことができます:

  • eq: 等しい。 フィールドのタイプが [タイプ] の配列の場合、その配列の少なくとも一つの要素が値と等しい場合、 eq は成立します。

  • ne: 等しくない。 フィールドのタイプが [タイプ] の配列の場合、その配列の要素が値に等しくない場合、 ne は成立します。

  • lt: 未満。

  • le: 以下。

  • gt: より大きい。

  • ge: 以上。

[タイプ] は以下の値を持つことができます:

  • boolean: 真または偽の値。 truefalseyesno、または 10 をブールリテラルとして使用します。

  • string: 文字列。文字列にスペースやダブルクォートが含まれる場合、それはダブルクォートですべてを囲み、引用符を重複させる必要があります。例:"Softy ""Visual"""

  • integer: 整数、例えば 10

  • real: 浮動小数点数、例えば 12.56

  • enum: 異なる値のリスト。 文字列と同様に、値にスペースやダブルクォートが含まれる場合、それをダブルクォートで囲む必要があります。

  • second: 秒を表す自然数、例えば 60 seconds

  • millisecond: ミリ秒を表す自然数、例えば 60000 milliseconds

  • microsecond: マイクロ秒を表す自然数、例えば 60000000 microseconds

  • byte: バイトを表す自然数、例えば 1048576 bytes

  • ip_address: IPアドレス、例えば 172.16.10.5

  • ip_network: IPネットワーク、例えば 172.16.0.0/16

  • mac_address: MACアドレス、例えば 48:5b:39:18:70:bb

  • mhz: メガヘルツを表す自然数、例えば 1600 mhz

  • sid: Windowsのセキュリティトークン、例えば S-1-5-21-3623811015-3361044348-30300820-1013

  • md5: 16進形式のMD5ハッシュコード、例えば d41d8cd98f00b204e9800998ecf8427e

  • port: ポートのタイプ(udp/tcp) に続くポート番号、例えば tcp/8080

  • version: 'で区切られた4つの整数、例えば 5.1.0.34

  • datetime: ISO 8601形式の日付と時間、例えば 2014-06-12T13:54:51

  • time: ISO 8601形式の時間、例えば 13:54:51

  • date: ISO 8601形式の日付、例えば 2014-06-12

  • day: 日数を表す自然数、例えば 7 days

  • percent: 小数点以下2桁で表される1の分数、例えば 0.75、またはフォーマットされた出力表示での 75%

  • permill: 小数点以下3桁で表される1の分数、例えば 0.752、またはフォーマットされた出力表示での 75.2%

特別なタイプ pattern を使用して文字列をスター・パターン式に一致させます。 pattern タイプには eqne 演算子だけを使用可能であることに注意してください。例:

(eq name (pattern "NY*"))

同じ where 節に属するフィルターは論理演算子 AND で構成されます。 例えば、次の where 節は NY で始まる名前のデバイスでメーカーが Dell のものだけを選択します:

between 節内の日付と時間は ISO 8601 形式か、以下のキーワードのいずれかで構成されます:

  • now: クエリ時刻。

  • midnight: 最後の真夜中。

  • sunday: 最後の日曜日の 00:00:00。

  • monday: 最後の月曜日の 00:00:00。

  • tuesday: 最後の火曜日の 00:00:00。

  • wednesday: 最後の水曜日の 00:00:00。

  • thursday: 最後の木曜日の 00:00:00。

  • friday: 最後の金曜日の 00:00:00。

  • saturday: 最後の土曜日の 00:00:00。

オプションで以下の単位のいずれかとともに正または負の整数が続きます:

  • w: 週、例:7日。

  • d: 日、例:24時間。

  • h: 1時間。

  • m: 1分。

  • s: 1秒。

コンテンツセクションには、以下のようなものがあります。

  • (between midnight now): 今日。

  • (between midnight-1d midnight): 昨日。

  • (between monday monday+24h): 最後の月曜日。

  • (between 2014-7-16@14:00:00 2014-7-16@15:00:00): 2014年7月16日14時から15時まで。

Last updated

Was this helpful?