階層クエリのビルド
条件ビルダーで階層関係を活用することで、クエリを簡素化し、より効率的なビルドを行います。
主な特長
- レコード階層に基づいて、条件ビルダーでテーブルデータをフィルタリングします。
- 単一の条件で階層全体を検索します。
- 継続的なメンテナンスを減らしてクエリの構築を簡素化します。
複数の OR 条件を使用して階層関係の各レベルを検索する必要がある場合、条件ビルダーでのクエリの作成は煩雑になる可能性があります。階層クエリを使用すると、単一のノードを指定してそこから階層を検索できるため、このプロセスが簡素化され、時間と労力を節約できます。
レコード階層
デフォルトでは、次のレコード階層がインスタンスに含まれます。
- 部門 [cmn_department] テーブルの部門階層
- 場所 [cmn_location] テーブルの場所階層
- ユーザー [sys_user] テーブルのマネージャー階層
これらの事前定義されたレコード階層を表示するには、次に移動します: .
各レコード階層は、同じテーブル内のレコード間の親子関係を含む参照フィールドに基づいています。
- 部門階層は、部門 [cmn_department] テーブルの親参照フィールドに基づいています。
- 場所階層は、場所 [cmn_location] テーブルの親参照フィールドに基づいています。
- マネージャー階層は、ユーザー [sys_user] テーブルのマネージャー参照フィールドに基づいています。
たとえば、場所 [cmn_location] テーブルの場所階層は [親] 参照フィールドを使用します。各場所には親があり、これは場所 [cmn_location] テーブルの別のレコードです。たとえば、シカゴとスプリングフィールドの場所レコードでは、親フィールドにイリノイ州の場所レコードのsys_id値があります。番地には、親フィールドに、その住所が属する都市のsys_id位置があります。
条件ビルダーの場所階層を使用して、ターゲットクエリを作成できます。たとえば、場所階層の開始点を指定し、階層のクエリを下位に照会して、階層のその部分全体の場所に関連付けられているすべての資産を取得できます。
階層パス
レコード階層に属する各レコードは、その階層情報をパスフィールドに保存します。パスフィールドは、条件ビルダーの階層全体の検索に使用されます。
事前定義された各レコード階層のパスは、 ServiceNow AI Platform によって自動的に生成され、部門 [cmn_department]、場所 [cmn_location]、およびユーザー [sys_user] テーブルのパスフィールドに保存されます。
- 部門のパスは、部門 [cmn_department] テーブルの [親 HP1] フィールドに格納されます。
- 場所のパスは、場所 [cmn_location] テーブルの [親 HP1] フィールドに格納されます。
- 管理パスは、ユーザー [sys_user] テーブルの Manager HP1 フィールドに保存されます。
たとえば、 ServiceNow AI Platform は場所 [cmn_location] テーブル内の各場所レコードの階層パスを自動的にビルドします。これにより、各場所にサブロケーションがあり、ツリーのような階層を形成することができるネストされた構造が作成されます。レコードが追加、変更、または削除されると、 ServiceNow AI Platform これらのパスも更新されます。
他の多くのテーブルには、レコード間の親子関係を示す自己参照フィールドが含まれています。ただし、レコード階層 [sys_record_hierarchy] テーブルで階層を定義するまで、階層パスはこれらのテーブルの ServiceNow AI Platform によって生成されません。
ユースケース
部門 [cmn_department]、場所 [cmn_location]、およびユーザー [sys_user] テーブルには、デフォルトで親子関係を持つ参照フィールドが含まれています。
- 部門階層
- 部門階層レコード階層を使用して、社内の部門に関連付けられた資産を検索します。
各部門レコードには階層パスが含まれているため、部門階層に基づいて条件ビルダーでクエリを作成できます。資産レコードには部門参照フィールドがあるため、特定の部門に属する資産をクエリできます。
- 次のようなクエリを使用して、IT 部門に属するすべての資産を検索します。
[部門][階層にある][含まれる] である [IT] から始まる [部門階層]
この例では、階層を検索すると、IT 部門の一部である部門に関連付けられた資産など、IT 部門に関連付けられた資産が返されます。
- 次のようなクエリを使用して部門 [cmn_department] テーブルで直接フィルタリングすることで、IT 部門の下にあるすべての部門を検索します。
[親][階層にある][含まれる] である [IT] から始まる [部門階層]
- 次のようなクエリを使用して、IT 部門に属するすべての資産を検索します。
- 場所階層
- 場所階層レコード階層を使用して、場所に従ってレコードを検索します。
各場所レコードには階層パスが含まれているため、場所階層に基づいて条件ビルダーでクエリを作成できます。インシデントレコードには場所参照フィールドがあるため、発信者の場所に基づいてインシデントを検索できます。
- 次のようなクエリを使用して、イリノイ州に拠点を置く発信者からのすべてのインシデントを検索します。
[場所][階層にある][含まれる] である [イリノイ] から始まる [場所階層]
このクエリーは、発信者の場所がイリノイ州、イリノイ州の任意の市、またはイリノイ州の任意の都市の番地であるインシデントを返します。
- 次のようなクエリを使用して、イリノイ州の市区町村と番地のインシデントを検索しますが、発信者の場所が単にイリノイ州であるインシデントは検索しません。
[場所][階層にある][除外済み] である [イリノイ州] から始まる [場所階層]
- 次のようなクエリで動的フィルターを使用して、ログインユーザーとして自分の場所に基づいてすべてのインシデントを検索します。
[場所][階層内にある (動的)][含まれる] [自分の場所] から始まる [場所階層]
- 次のようなクエリを使用して、イリノイ州に拠点を置く発信者からのすべてのインシデントを検索します。
- マネージャー階層
- 管理階層レコード階層を使用して、組織内の管理チェーン全体でレコードを検索します。
各ユーザーレコードには階層パスが含まれているため、管理階層に基づいて条件ビルダーでクエリを作成できます。任意のテーブルをクエリし、ユーザー [sys_user] テーブルを指す参照フィールドを選択すると、管理チェーン全体を検索できます。
- 次のようなクエリを使用して、Bud Richman の直属のユーザーに割り当てられたすべてのインシデントを検索します。
[担当者][階層にある][含まれる] [Bud Richman] から始まる [マネージャー階層]
この例では、階層を検索すると、Bud に報告するユーザーとその直属の部下に割り当てられたインシデントなど、Bud Richman に割り当てられたインシデントが返されます。
- 次のような動的クエリを使用して、自分と自分の組織のユーザーに割り当てられたすべてのインシデントを検索します。
[担当者][階層内にある (動的)][含まれる] [自分] から始まる [マネージャー階層]
- 次のようなクエリを使用してユーザー [sys_user] テーブルで直接フィルタリングすることで、管理チェーン自体を表示します。
[マネージャー][階層にある][含まれる] [Bud Richman] から始まる [マネージャー階層]
- 次のような動的クエリを使用してユーザー [sys_user] テーブルで直接フィルタリングすることで、直属のユーザーを表示します。
[マネージャー][階層内にある (動的)][含まれる] [自分] から始まる [マネージャー階層]
- 次のようなクエリを使用して、Bud Richman の直属のユーザーに割り当てられたすべてのインシデントを検索します。
レコード階層の構築の概要
インスタンスに含まれる事前定義されたレコード階層に加えて、選択したテーブルにレコード階層をビルドできます。
同じテーブル内の関連レコード間に階層をビルドするには、自己参照フィールドが必要です。階層をビルドするときは、親子関係を既に定義している既存の参照フィールドを使用するか、自己参照フィールドを作成して各レコードに適切な値を入力できます。
- 階層クエリのビルドに使用する親子レコードを含むテーブルを特定します。たとえば、関連資産に基づいてクエリをビルドするには、資産 [alm_asset] テーブルに基づいてレコード階層を定義します。
- テーブル内のどの参照フィールドがレコード間の関係を定義するかを決定します。たとえば、資産 [alm_asset] テーブルの [親] フィールドは、資産の親資産を記述します。
- レコード階層 [sys_record_hierarchy] テーブルに階層を作成し、使用するテーブルと参照フィールドを指定します。ServiceNow AI Platformにより、テーブル内の各レコードに階層パス情報が自動的に追加されます。
- 作成した階層を選択して、条件ビルダーで階層クエリを作成します。演算子を使用して階層を検索します。