DEXスコアのNQL例

Nexthink Query Language (NQL) を使用して、DEXスコアデータおよび関連情報にアクセスします。

NQLデータ構造

dex.scoresおよびdex.application_scoresテーブルにはスコアデータが含まれています。 システムは、毎日00:00 UTCに、userおよびdeviceオブジェクトの組み合わせ、そして過去7日間にアクティブだったdevice次元のスコアを計算します。 例えば、過去7日間にデバイス1とデバイス2を使用した従業員Aには、その日用の2つのスコアデータセットが生成されます。

DEXスコアV3は、以前のバージョンとは異なり、デバイス中心のアプローチではなく、ユーザー中心のエクスペリエンス管理に主眼を置いています。 deviceテーブルでNQLクエリーを開始することは技術的には可能ですが、デバイスのメートルック値とそのスコアの間には乖離が生じる可能性があります。 より詳細な情報については、DEXスコアの計算(Nexthink Communityユーザーが利用可能な)ドキュメントのFAQセクションを参照してください。

dex.scoresテーブル

dex.scoresテーブルには、エンドポイントとコラボレーションスコア及びそのサブスコアのデータが含まれています。 システムはスコア一式を次のように構成します。

各DEXスコアのノードには、[node name]_valueという構文でスコア値が付与されています。 例えば、ログオン速度のスコアを取得したい場合、score.endpoint.logon_speed_valueと入力します。

さらに、各ノードには[node name]_score_impactという構文でスコア影響値が付与されています。 この値は、このノードで監視される問題により、DEXスコアの技術コンポーネントが推定でどれくらい減少するかを示しています。

dex.application_scoresテーブル

dex.application_scoresテーブルには、アプリケーションスコア及びそのサブスコアのデータが含まれています。 このテーブルはusersdevices、およびapplicationオブジェクトとリンクされています。 システムはスコア一式を次のように構成します。

  • node.typeはアプリケーションスコア構造のノードのタイプを表します。

    • page_loads

    • transactions

    • web_reliability

    • crashes

    • freezes

    • application

  • node.valueはアプリケーションスコア構造のノードのスコアを示します。 対象のノードスコアを指定するには、application_score.node.typeフィールドと一緒に使用する必要があります。

  • node.score_impactは、このノードで監視される問題により、DEXスコアの技術コンポーネントが推定でどれくらい減少するかを示します。 対象のスコア影響を指定するには、application_score.node.typeフィールドと一緒に使用する必要があります。

ハードメトリクスとそのデフォルトしきい値のリストについては Nexthink Communityユーザーが利用可能なドキュメントをご参照ください。

score_impact値

dex.scoresdex.application_scoresの両方で、すべてのノードにscore_impact値が含まれます。すなわち、[node name]_score_impactです。 この値は、ノードにおけるユーザーレベルの問題により、DEXスコアから削除されるポイント数を推定したものです。 例えば、logon_speed_score_impactは、遅いログオンによりユーザーのDEXスコアに与える推定影響を含みます。

人口に対するノードのDEXスコアへの影響を計算するには、以下の式を使用します。

NQLクエリの例

会社の最新の総合DEXスコアを取得します。
users
| include dex.scores during past 24h
| compute DEX_score_per_user = value.avg(), c1 = count()
| where c1 > 0
| summarize Overall_DEX_score =  DEX_score_per_user.avg()
スイスの従業員に対する最新の仮想セッション遅延スコア値を取得します。
users
| include dex.scores during past 24h
| where context.location.country == "Switzerland"
| compute Virtualization_score = endpoint.virtual_session_lag_value.avg(), c1 = count()
| where c1 > 0
| summarize Overall_virtualization_score = Virtualization_score.avg()
オペレーティングシステム プラットフォームごとにDEXスコア値を比較します。
devices
| include dex.scores during past 24h
| compute DEX_score_per_device = value.avg(), c1 = count()
| where c1 > 0
| summarize Overall_DEX_score_per_OS_platform = DEX_score_per_device.avg() by operating_system.platform
アプリケーションスコアと該当するページロードスコアを取得します。
users 
| include dex.application_scores during past 24h 
| where application.name == "miro" and node.type == application 
| compute application_score_per_user = value.avg()
| include dex.application_scores during past 24h 
| where application.name == "miro" and node.type == page_loads 
| compute page_load_score_per_user = value.avg()
| summarize Overall_application_score = application_score_per_user.avg(), Overall_page_load_score = page_load_score_per_user.avg() 
劣悪なデジタルエクスペリエンスに苦しむ上位50人のユーザーを特定します。
users
| with dex.scores during past 24h
| compute DEX_score = score.value.avg()
| list name, DEX_score
| sort DEX_score asc
| limit 50
ログオンスコアの技術スコアへの推定影響を取得します。
users
| include dex.scores during past 24h
| compute logon_speed_score_impact_per_user = endpoint.logon_speed_score_impact.avg(), dex_score_per_user = dex.score.value.avg()
| summarize Impact_of_logon_speed_on_technology_score = (logon_speed_score_impact_per_user.avg()*countif(logon_speed_score_impact_per_user != NULL))/countif(dex_score_per_user != NULL)
ログオンスコアがすべての人口に与えるDEXスコアへの影響を計算します。
users
| include dex.scores during past 24h
| compute logon_speed_score_impact_per_user = endpoint.logon_speed_score_impact.avg(), DEX_score_per_user = value.avg()
| where DEX_score_per_user != NULL
| summarize total_logon_speed_score_impact = logon_speed_score_impact_per_user.avg()*countif(logon_speed_score_impact_per_user != NULL)/count()

考慮事項

dex.scoreテーブルに関連付けられた期間

  • 過去7日間にデータがないuserまたはdeviceオブジェクトにはスコアがありません。

  • 今日の00:00 UTCに計算されたスコアは今日の日付に関連付けられており、昨日の日付ではありません。

このことは、dex.scoresデータをduring past 7dとクエリするのは正しくないことを意味します。これは7日間のデータポイントを返し、各データポイントはすでに7日のローリングウィンドウだからです。 データは1日のみクエリされるべきです。例としては

  • dex.scores during past 24h

  • dex.scores on 2023-10-30

例:

users
| include dex.scores during past 24h
| compute software_reliability_score_per_user = endpoint.software_reliability_value.avg()

スコアの毎日の計算は00:00 UTCに開始されますが、完了するまでに数時間かかる場合があります。 計算が終了すると、Nexthinkは結果に04:00 UTCのタグを付けます。

生のデータテーブルに関連付けられた期間

生のメトリックテーブル、例えばsession.loginsweb.page_viewsを対応するスコアと比較するには、期間がDEXスコア計算時に使用されたものと一致する必要があります。

00:00 UTC today - 7d to 00:00 UTC today

お使いのブラウザのタイムゾーンと期間が一致していることを確認してください。

例:

  • お使いのブラウザのタイムゾーンはCET(つまり、UTC + 1)です。

  • 2024-01-17のDEXスコアと生のメトリクスを比較したい。

  • Outlookのページロードトレンドを調べることに興味があります。

web.page_views from 2024-01-10 01:00:00 to 2024-01-17 01:00:00
| where application.name == "outlook" and user.name == "TBD"
| summarize average_page_load_per_hour = page_load_time.overall.avg() by 1h

1時間ごとのサンプル

DEXスコアは1時間ごとのデータサンプルを考慮しています。 このデータは、フィールドの平均または過去1時間のイベントの合計となることがありますが、これはメトリックの種類によります。 設定されたスコアのしきい値を超えたかどうかを理解するには、1時間単位の集計を使用し、5分または15分のタイムバケットを使用しないでください。

例:

Session.logins from 2024-01-10 01:00:00 to 2024-01-17 01:00:00
| summarize average_logon_time = time_until_desktop_is_visible.avg() by 1h

人口に対するDEXスコアの計算

人口のDEXスコアを計算するには、まず各従業員のスコアを計算し、それを人口全体で平均する必要があります。

まず、userまたはdeviceごとのDEXスコアを集計し、その後人口に対して集計します。

この場合、NQLクエリをdex.scores during past 24hではなく、個別のスコアを計算するためにusersまたはdevicesテーブルから始めるべきです。 summarizeステートメントを使用して人口に対するDEXスコアを計算します。

例:

users
| include dex.scores during past 24h
| compute dex_score_per_user = value.avg()
| summarize dex_score = dex_score_per_user.avg()

ユーザー、デバイス、およびデバイスの次元の適切な組み合わせを見る

システムはユーザー、デバイス、およびジオロケーションやロケーションタイプといったデバイスの次元の組み合わせに対してスコアを計算します。 このアプローチの背後にある理論は、各従業員のコンテキストにおける高度なフィルタリングを可能にし、洞察を引き出すことです。

これにより、過去7日間でロケーションを変更した従業員は、異なるジオロケーションやロケーションタイプに対して複数のスコアを持つことになります。 さらに、複数の従業員が使用するデバイスも、複数のスコアを持ちます。

生のメトリックとその対応するスコアを比較するには以下を行う必要があります。

  1. スコアデータに関連付けられた異なる次元を理解する。

  2. 生データを見る際に同じ次元を適用する。

例:

device_performance.boots from 2024-01-31 01:00:00 to 2024-02-06 01:00:00
| where device.name == "TBD" and context.location.type == "Remote" and context.location.state == "Vaud"
| summarize average_boot_duration_per_hour = duration.avg() by 1h

従業員と関連付けられていないデバイスのイベント

DEXスコア計算に使用されるメトリックの一部は、Nexthinkデータモデルにおいてuserの関連付けがありません。例えば、

  • device_performance.events

  • device_performance.boots

  • device_performance.hard_resets

  • device_performance.system_crashes

  • connectivity.events

DEXスコアパイプラインは、これらのイベントをこれらのユーザーのDEXスコアに関連付けるために、デバイス上の最近のユーザーのリストを保持します。 デバイスで最近のユーザーが見つからない場合、これらのイベントはデバイスのDEXスコアに加味されません。

同じ1時間単位のタイムバケットで複数のデバイスで作業している従業員

DEXスコアV3データの優先事項は、ユーザーエクスペリエンスを報告し、適切なデジタルエンプロイエクスペリエンス管理ソリューションを提供するために改善できる点を強調することです。 これは、Nexthinkがユーザーのエクスペリエンスを正確にキャプチャすることを意味しますが、デバイス上で投影される際にはデータが概算されます。

仮に従業員が同時に複数のデバイスで作業しているとします。 この場合、Nexthinkはその1時間単位のタイムバケットの間にuserオブジェクト上で受信したすべてのデータを収集しますが、1つのコンテキスト、例えばdeviceジオロケーションロケーションタイプだけをバケットに関連付けます。 これは、システムが時間バケットの最後のコンテキストをその時点での最後のデータメッセージとともにバケットに関連付けることを意味します。

Nexthinkは、デバイスがスコアイベントに関連付けられた際の近似により、スコアイベントに警告を伴うフラグを付け、ユーザーに通知します。 フィールドscore_computation_approximationは、デバイスやそのコンテキストに関連する近似がスコアの計算に影響を与えたかどうかを示します。 可能な値は以下の通りです。

  • unknown: スコアイベントに関連するスコア計算の近似に関する情報がない。

  • none: スコアの計算に近似は使用されなかった。

  • multi_device: スコアに関連付いているデバイスに関する近似が行われた。 これはスコアがユーザーを越えて関連付けることができないことを示します。

  • multi_context: スコアに関連付いているデバイスコンテキストに関する近似が行われた。 これはスコアがユーザーとデバイスを越えて関連付けることができないことを示します。

例:

スコアの計算に時間ごとの近似が適用されたため、私のスコアに注意が必要ですか?
dex.scores during past 24h
| where device.name == "devicename"
| list score.time, score.value, device.name, device.entity, user.name, score_computation_approximation
マルチデバイスの状況により、スコアが影響を受けたデバイスの数を把握するにはどうすればいいですか?
dex.scores during past 24h
| summarize Number_device_impacted = device.name.countif(score_computation_approximation == multi_device )

Last updated