NQLよくある質問

「with」と「include」の違いは何ですか? どちらを使うべきですか?

with句は、少なくとも1つのイベントが記録されている場合にのみデータを返します。 イベントに条件を付けてインベントリ オブジェクトをクエリするために使用します。

include句は、イベントが記録されていない場合でもデータを返します。 すべてのオブジェクトに対して値を計算する際に、データをすべて考慮したかどうかを確認するために使用します。

「compute」と「summarize」の違いは何ですか? どちらを使うべきですか?

computeキーワードは、イベントからの指標を計算してオブジェクトに追加するため、オブジェクトをクエリする際に使用します。 「with」の後にオプションで使用でき、「include」の後には必須です。

「summarize」キーワードは、KPI 指標を計算するため、またはプロパティや期間ごとにメトリクスを分解するために使用されます。

「during past 2d」と「during past 48h」の違いは何ですか? どちらを使うべきですか?

時間の選択は異なる単位で表され、NQLでは精度が異なることを意味します。 2d が 48h に等しい場合でも、内部最適化のために、Nexthink はこの時間の選択を異なるように解決します。

  • during past 2d では、NQL はクラウドインスタンスのタイムゾーンを基準時間として毎日データを取得します。

  • during past 48h では、一般ユーザーのタイムゾーンを基準時間として、より高い解像度でデータ5分または15分単位のサンプルを取得します。

参考例を考慮してください:

  • データを調査する際のユーザーの現地時間は、中央ヨーロッパ時間(CET)で11月11日11:26:15です。

  • クラウドインスタンスはニューヨークの東部時間(ET)に設定されています。

  • この2つの時間選択で取得されるデータは次のとおりです:

ユーザーの時間選択
クラウドインスタンスタイム (東部時間)
ユーザーの時間 (中央ヨーロッパ時間)

d during past 2d

11月10日00:00:00 – 11月12日00:00:00 ET

11月10日06:00:00 – 11月12日06:00:00 CET​

during past 48h

11月9日06:00:00 – 11月11日06:00:00 ET

11月9日12:00:00 – 11月11日12:00:00 CET

「2023-01-19 00:00:00 から 2023-01-21 00:00:00 まで」 と 「2023-01-19から2023-01-21まで」の違いは何ですか? どちらを使うべきですか?

時間の選択は異なる精度で表されます。 また、全日タイムフレームではクラウドインスタンスのタイムゾーンが使用され、時間や分の選択ではユーザーのタイムゾーンが使用されます。

このようにシステムが時間の選択を解決する場合を例として挙げます。ユーザーがCETタイムゾーンに、クラウドインスタンスがETタイムゾーンに設定されている場合:

時間の選択
クラウドインスタンスタイム (ET):
ユーザーの時間 (CET):

2023-01-19 00:00:00から2023-01-21 00:00:00まで (NQL 除外 2023-01-21)

1月18日18:00:00 – 1月 20日18:00:00 ET

1月19日00:00:00 – 1月21日00:00:00 CET​

2023-01-19から2023-01-21まで (1月21日を含むため、これは3日間のデータです)

1月19日00:00:00 – 1月22日00:00:00 ET​

1月19日06:00:00 – 1月22日06:00:00 CET​

クエリで「during past <期間>」を使用する際にはタイムゾーンを考慮することが重要です。

次のユースケースを考慮してください:

  • クラウドインスタンスはETタイムにあり、Nexthink管理者はニューヨークに拠点を置いています。 つまり、彼のタイムゾーンはクラウドインスタンスのタイムゾーンと同じです。

  • 2022年2月27日11:10(CET)に、パリの従業員デバイスでクラッシュが発生し、Nexthinkデータベースには2月27日10:10(UTC)に発生したものとして記録されました。

  • Nexthink管理者は 彼の時間:2月27日05:12:00にデータをクエリします。

    • 彼は、2月27日5:10:00にこのクラッシュが発生したと見ています。

    • 「during past 24h」クエリを使用すると、ウェブインターフェースでは2月26日06:00:00 – 2月27日06:00:00が表示されます。

    • 「during past 1d」クエリを使用すると、ウェブインターフェースでは2月27日00:00:00 – 2月28日00:00:00が表示されます。

  • ITサポートチームはマドリード(CET)に位置しています。 彼らは自分たちの時間で2月27日11:12:00にデータをクエリしています。

    • 彼らは2月27日11:10:00にNexthinkのウェブインターフェースでこのクラッシュが発生したと見ています。

    • 「during past 24h」クエリを使用すると、ウェブインターフェースでは2月26日12:00:00 – 2月27日12:00:00が表示されます。

    • 「during past 1d」クエリを使用すると、ウェブインターフェースでは2月27日06:00:00 – 2月28日06:00:00が表示されます。

  • Nexthinkの管理者がNexthinkウェブインターフェースで見る全ては、クラウドインスタンスのタイムゾーンと等しい。なぜなら彼がクラウドインスタンスと同じタイムゾーンにいるからです。 マドリードのITサポートチームでは、6時間の時差が生じます。 彼らは現地時間でクエリを行い、Nexthinkはクラウドインスタンスの時間、つまりこの場合ETを、現地時間であるマドリードのCETに変換します。

「context」とは何ですか? それをいつ使用し、なぜ使用するのか?

「context」には、分解やトレンド分析時に関連するプロパティが保存されています。 デバイスがイベントを生成する際、「context」はその時点でのデバイスのプロパティ値が保存されます。 イベント発生時のデバイスが持っていたプロパティを取得するために「context」を使用します。

「context.os_name」と「device.operating_system.name」の違いは何ですか?

多くの場合、これら2つのフィールドは同じ値を持っています。 しかし、想像してみてください、デバイスが本日早くにOSを新しいバージョンにアップグレードした場合を。 両方の context.os_namedevice.operating_system.name をリストすると:

  • 昨日 のイベントをクエリすると、context.os_name は古いOSを表示し、device.operating_system.name は新しいバージョンを表示します。

  • 今日 のイベントをクエリすると、context.os_namedevice.operating_system.name の両方が最新のOSバージョンを示します。

'.avg' と '.avg()' と '.avg.avg()' と '.avg.max()' の違いは何ですか?

  • .avgは平均値を保存するデータベースフィールドです。 where句で使用します。

  • .avg()は集約関数です。 これは、保存されたデータの実際の平均値であり、実際のイベント数を考慮します。 これは、背後でのカーディナリティに依存しています。 computesummarizeと共に使用します。

  • .avg.avg()はサンプルの平均です。 この数字は、時刻の選択によって異なります。 during past 2dの場合、2つのサンプルの平均が作成されます。 during past 48hでは、192以上の(=48×4)15分サンプルの平均が作成されます。 製品チームはこの関数を使用することを推奨していません。

  • .avg.max()はピーク、例えば、正規化されたCPU使用率のピークセンテージを表示したい場合に使用します。 15分サンプルのクエリを行う際(during past 48h)、これを使用することもできますが、日次サンプルのクエリ時にはお勧めされません(during past 2d)。

「execution.events」または「connection.events」での一部のクエリが失敗し、他のすべてのイベントで成功する理由は何ですか?

デバイスは特定の種類のイベント、例えば「execution.events」や「connection.events」、のために多くのサンプルを生成しており、これらはデータセット内で最大のテーブルになっています。 したがって、このデータは限られた期間しか保存されません。 高解像度サンプルについては、時間または分で表現されたタイムフレームで、過去最大8日までの期間のデータをクエリすることができます。 低解像度サンプルについては、タイムフレームが日で表現されている場合、その保持期間は他のテーブルの大部分と一致し、30日間持続します。

リモートアクションの実行を取得する2つのクエリの違いは何ですか?

どちらのクエリも同じ数の結果を返します。

最初のクエリを使用すると、システムはパラメーターを1つのJSON文字列として返します。 これは、文字列操作のみが可能であることを意味します。 このようなクエリでは、追加の計算を行ったり、パラメーターの実際のデータ型を利用することはできません。

2番目のクエリでは動的データモデルを使用します。 これは、入力および出力パラメーターに直接アクセスし、パラメーターのデータ型に基づいて適切な操作を透過的に使用することを可能にします(例:bool、integer、byte)。

サンプルイベントで「count()」を計算することが良くない習慣である理由は何ですか?

サンプルイベントで「count()」を使用すると、通常データが保存されているサンプルの量を示すだけで、ビジネス上の価値はほとんどありません。

Last updated

Was this helpful?