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