Microsoft Purview eDiscoveryの詳細レビュー セット エクスプローラー (プレビュー) を使用すると、レビュー担当者は、Kusto 照会言語 (KQL) の定義済みのサブセットを使用して、レビュー セットのコンテンツに対してリアルタイムのビッグ データ分析を実行できます。 詳細レビュー セット エクスプローラー (プレビュー) を使用すると、基になるコンテンツを変更することなく、Microsoft Purview ポータルでレビュー セット データのクエリ、フィルター処理、視覚化を直接行うことができます。 クエリは、インデックス付きアイテムの完全なセットに対して実行され、表形式の結果またはグラフの視覚化を返します。
詳細レビュー セット エクスプローラー (プレビュー) を使用して、次の手順を実行します。
- 上位のアイテムの種類、スポット パターンを特定し、レビュー セット内の傾向を見つけます。
- 複雑なフィルター処理、パターンベースのテキスト抽出、データ形式の解析を使用して、強力なクエリを構築します。
- ケースまたはorganizationに固有の重要な情報を分析して見つけます。
- グラフを使用してクエリ結果を視覚化し、レビュー セット データを包括的に理解します。
ヒント
Microsoft Security Copilot の使用を開始して、AI の力を使用して、よりスマートかつ迅速に作業するための新しい方法を発見しましょう。 Microsoft Purview の Microsoft Security Copilot に関する詳細情報をご覧ください。
詳細レビュー セット エクスプローラー (プレビュー) を開く
詳細レビュー セット エクスプローラー (プレビュー) を開くには、次の手順を実行します。
- Microsoft Purview ポータルに移動し、電子情報開示アクセス許可が割り当てられたユーザー アカウントの資格情報でサインインします。
- 電子情報開示ソリューション カードを選択し、左側のナビゲーションで [ケース] を選択します。
- ケースを選択し、[ レビュー セット ] タブを選択します。
- レビュー セットを選択し、[ 詳細レビュー セット エクスプローラー (プレビュー)] タブを選択します。
ここから、レビュー セット データに対して KQL クエリを直接記述して実行できます。
ヒント
レビュー セットのコンテンツをフィルター処理するための視覚的なコードなしのアプローチを使用する場合は、「 クエリ条件ビルダーを使用してレビュー セット内のコンテンツを検索する」を参照してください。
詳細レビュー セット エクスプローラー (プレビュー) に移動する
詳細レビュー セット エクスプローラー (プレビュー) には、KQL クエリの作成、検出、実行に役立つ左側のナビゲーション ウィンドウと結果領域が含まれています。
ヒント
KQL を初めて使用する場合は、[ はじめ に] タブから基本的なクエリ パターンを調べ、左側のウィンドウの [サンプル クエリ ] を使用して、よりターゲットを絞った分析を行います。
左側のナビゲーション ウィンドウ
左側のナビゲーション ウィンドウには 3 つの折りたたみ可能なセクションがあり、レビュー セットスキーマを調べ、クエリ要素をすばやくエディターに挿入できます。
-
スキーマ: レビュー セットで使用可能なテーブル (
ReviewSetTable) を表示します。 テーブル名を選択してクエリ エディターに挿入します。 -
演算子:
count、distinct、extend、limit、mv-expand、order、project、project-away、project-keep、render、sort、summarize、take、top、whereなど、サポートされているすべての KQL 演算子を一覧表示します。 任意の演算子を選択してクエリに追加します。 - サンプル クエリ: FileClass count as piechart、FileType count、ItemClass count、Participants count、SensitivityLabel count、Source count など、一般的なレビュー セット分析タスクにすぐに使用できるクエリ テンプレートを提供します。 サンプル クエリを選択して、クエリ エディターに直接読み込みます。
[作業の開始] タブ
クエリ結果領域の下にある [ 作業の開始 ] タブには、クエリを作成するためのクイック リファレンスが用意されています。 これには、2 つのカテゴリに分類された選択可能な例が含まれています。
任意のクエリ名を選択して、クエリ エディターにサンプルを直接読み込みます。
| カテゴリ | クエリ | 説明 |
|---|---|---|
| 基本的なクエリ | 制限 | 指定したテーブルから 10 件の結果が表示されます。 |
| Where | ".jpg" で終わる日付とファイル名で結果セットをフィルター処理します。 | |
| Count | 指定したフィルターに一致する行数をカウントします。 | |
| Top | 結果を日付で並べ替え、最初の 10 行を表示します。 | |
| プロジェクト | 結果のファイル名、ファイルの種類、および日付の列のみを表示します。 | |
| 高度なクエリ | 要約する | 上位のデータ ソースを表示し、各ソースの項目数をカウントします。 |
| Extend | タイトルと作成者の値を結合する列を追加します。 | |
| Mv-expand | [参加者] リストを展開し、参加者ごとの出現回数をカウントします。 | |
| レンダリング | ファイル クラスで項目をカウントし、結果を円グラフとしてレンダリングします。 |
レビュー セットの詳細レビュー セット エクスプローラー (プレビュー) のしくみ
各クエリは、完全なレビュー セットのデータに対して実行され、次を返します。
- 一致する項目の 表形式の一覧 。または
- クエリに応じた グラフの視覚化。
クエリは、前の手順の結果に基づいて各行が構築される標準の KQL パイプライン構文に従います。 ポータルは、 ReviewSetTable テーブル名を最初の行として自動的に追加します。 後続の各クエリ行は、 \|で始まる必要があります。
例:
ReviewSetTable
| where SubjectTitle has "Case"
| summarize count() by FileClass
注:
詳細レビュー セット エクスプローラー (プレビュー) のすべてのクエリは、現在のレビュー セットのインデックス付きアイテムに対して実行されます。 テーブル名を指定する必要はありません。 レビュー セットは、既定のデータ ソースとして機能します。
ベスト プラクティス
-
summarizeまたはrenderを使用する前に、whereフィルターを使用してデータを絞り込みます。 -
takeを使用して、完全な集計を実行する前にクエリ ロジックを検証します。 - 大規模なレビュー セットでは、過度に広範な正規表現パターンを避けてください。
-
where isnotempty(ColumnName)を使用して、プロパティの値が空の項目を除外します。これにより、結果の予期しない空白行を回避できます。
その他の考慮事項
詳細レビュー セット エクスプローラー (プレビュー) では、すべての Kusto 演算子とプロパティがサポートされているわけではありません。 クエリを作成するときは、次の考慮事項に注意してください。
- クエリは読み取り専用であり、レビュー セットのコンテンツは変更されません。 レビュー セットの操作の詳細については、「 電子情報開示でレビュー セットを管理する」を参照してください。
- 結果には、レビュー セットの現在のインデックス付き状態が反映されます。 レビュー セットにさらにデータを追加すると、クエリによって異なる結果が返される可能性があります。
- すべてのファイルの種類がクエリ可能であるわけではありません。 詳細については、「電子情報開示でサポートされているファイルの種類」を参照してください。
- クエリから返される結果が 10,000 を超える場合は、最初の 10,000 件の結果のみが返されます。 クエリを変更して結果を絞り込みます。
Kusto の構文と参照については、次の記事を参照してください。
サポートされている基本演算子
ヒント
クエリで使用できる使用可能なプロパティの完全な一覧については、「 電子情報開示のドキュメント メタデータ フィールド」を参照してください。
場所
where演算子を使用して、件名、キーワード、アイテム クラス、日付、参加者などのメタデータに基づいて項目をフィルター処理します。
次の例では、レビュー セットをフィルター処理して、 Subject に "Day" というテキストが含まれているアイテムのみを返します。
ReviewSetTable
| where SubjectTitle has "Day"
このクエリでは、レビュー セットをフィルター処理して、 ItemClass が IPM.Appointment で始まる予定表関連のすべてのアイテムを含めます。このアイテムは、標準の予定や IPM.AppointmentSnapshot.SkypeTeams.Callなどの拡張クラスを対象とします。
ReviewSetTable
| where ItemClass startswith "IPM.Appointment"
Project
projectを使用して、気になるプロパティのみを返します。 たとえば、次のクエリは 2 つのアクションを実行します。
-
件名テキストで項目をフィルター処理する:
where SubjectTitle has "Day"句では、 SubjectTitle に "Day" という単語が含まれているアイテムのみに結果が制限されます。 -
1 つの列を投影する:
project SubjectTitle句は、フィルター処理された項目の SubjectTitle プロパティのみを返し、他のすべての列を出力から削除します。
ReviewSetTable
| where SubjectTitle has "Day"
| project SubjectTitle
Project-away
project-away演算子は、指定した列をクエリ結果から削除し、他のすべての列を保持します。 保持するすべての列を一覧表示するのではなく、いくつかのプロパティを除外する場合に使用します。
次の例では、出力から除外される CompoundPath と InternetMessageId を除く、レビュー セット内の項目のすべてのプロパティを返します。
ReviewSetTable
| where SubjectTitle has "Day"
| project-away CompoundPath, InternetMessageId
Project-keep
project-keep演算子は、指定したパターンまたはリストに一致する列のみを保持し、他のすべてを削除します。
projectとは異なり、project-keepは元の列の順序を保持し、ワイルドカード パターンをサポートします。
次の例では、名前が "Sender" または "Recipient" で始まる列のみを保持するため、各プロパティを個別に一覧表示することなく、コミュニケーションの参加者に簡単に集中できます。
ReviewSetTable
| where SubjectTitle has "Day"
| project-keep Sender*, Recipient*
Mv-expand
mv-expand演算子は、複数値のプロパティ (参加者や受信者のリストなど) を個別の行に展開し、値ごとに 1 行ずつ指定します。 これは、複数の値を含むフィールド内の個々のエントリを分析する場合に役立ちます。
次の例では、[ 参加者 ] フィールドを展開して、各参加者が自分の行に表示されるようにし、各参加者に関連付けられている項目の数をカウントします。 これにより、レビュー セット内で最もアクティブな参加者を特定できます。
ReviewSetTable
| mv-expand Participants
| summarize count() by tostring(Participants)
拡張
extend演算子は、基になるデータを変更せずに、既存のフィールドから派生した新しい値を作成することで、クエリ結果に 1 つ以上の計算列を追加します。
次の例では、case()関数を使用して新しい列SizeCategoryを作成し、summarizeを使用して各カテゴリの項目数を集計することで、レビュー セット項目を 4 つのサイズ カテゴリ (Small (<1MB)、Medium (1 - 5MB)、Medium-Large (5-10 MB)、Large (>10 MB) に分類します。 調査担当者は、リスク評価または優先順位付けのレビュー セット内のファイル サイズの分布をすばやく理解するのに役立ちます。
ReviewSetTable
| extend SizeCategory = case(Size > 10485760, "Large (>10MB)", Size >= 5242880 and Size <= 10485760, "Medium-Large (5–10MB)", Size >= 1048576 and Size < 5242880, "Medium (1–5MB)", "Small (<1MB)")
| summarize count() by SizeCategory
要約する
summarize演算子は、count()、sum()、avg()などの関数を適用してデータを集計し、指定した列に基づいて結果をグループ化します。
次の例では、"Day" という単語を含む項目について SubjectTitle でグループ化された項目をカウントします。
ReviewSetTable
| where SubjectTitle has "Day"
| summarize count() by SubjectTitle
バーチャートのレンダリング、列グラフのレンダリング、円グラフのレンダリング
render barchart演算子は、クエリの表形式の結果を取得し、棒グラフとして表示します。 これにより、集計値の分布または比較を簡単に視覚化できます。
次の例では、件名のタイトル数を棒グラフとしてレンダリングします。
ReviewSetTable
| where SubjectTitle has "Day"
| summarize count() by SubjectTitle
| render barchart
Take (limit)
take演算子は、クエリ出力を指定された行数に制限します。 データセットから最初の n 個の結果のみが返されます。
limit演算子はtakeのシノニムであり、同じ意味で使用できます。
次の例では、最初の 10 個の一致する項目のみを返します。そのため、完全なクエリを実行する前にクエリ ロジックまたはスポットチェックコンテンツを検証できます。 この方法は、大規模なレビュー セットや複雑なフィルターを処理する場合に役立ちます。出力を制限 take することなく、計算と読み込みに時間がかかる場合があります。
ReviewSetTable
| where SubjectTitle has "day"
| project SubjectTitle, SenderDomain, Custodian, Size
| take 10
並べ替え
sort演算子は、指定した 1 つ以上の列に基づいてクエリ結果を昇順または降順で並べ替えます。
次のクエリ例では、summarize count()を使用して、レビュー セット内の各 NativeFileExtension のアイテムの合計数を計算します。 次に、これらの拡張グループをアイテム数の降順で並べ替え、最も一般的なファイルの種類を確認できます。
ReviewSetTable
| summarize ItemCount = count() by NativeFileExtension
| sort by ItemCount desc
distinct
distinct演算子は、クエリ結果から重複する行を削除することで、指定した列の一意の値を返します。
次の例では、 distinct を使用して重複を削除し、一意のカストディアンのみを表示し、 sort by Custodian asc を使用してアルファベット順に並べ替え、レポートのスキャンやエクスポートを簡単に行います。
ReviewSetTable
| distinct Custodian
| sort by Custodian asc
カウント
count演算子は、クエリ結果セット内の行の合計数を返します。そのため、セット内の項目の数をすばやく確認できます。
次の例では、"Day" という単語を含む一意の件名タイトルの数をカウントします。
ReviewSetTable
| where SubjectTitle has "Day"
| summarize by SubjectTitle
| count
Top
top演算子は、クエリ結果から最初の n 行を返し、1 つ以上の指定された列で並べ替えます。 これを使用して、並べ替え条件に基づいて最大値または最小値を取得します。
次の例では、レビュー セット内の上位 5 つの項目を取得します。
ReviewSetTable
| top 5 by Size desc
箱
bin()関数は、datetime または数値を指定されたビン サイズの最も近い倍数に丸めます。 この関数を使用して、時間間隔または数値範囲 (時間単位のバケットやサイズ範囲など) にデータをグループ化します。
次の例では、bin(Size, 1048576)を使用してレビュー セット内の項目を 1 MB のサイズ バケットにグループ化し、summarize count()で各バケットに分類される項目の数をカウントし、バケットを昇順で並べ替えて、ファイル サイズの最小から最大への分布を確認します。
ReviewSetTable
| summarize ItemCount = count() by bin(Size, 1048576)
| sort by bin(Size, 1048576) asc
一般的なシナリオ
次のシナリオは、高度なレビュー セット エクスプローラー (プレビュー) の Kusto クエリが、レビュー セット データの分析と理解にどのように役立つかを示しています。
シナリオ 1: 2 人のユーザー間の通信
2 人の特定のユーザー (John と David) の間で排他的に交換されたアイテムを、他の参加者なしで見つけます。 このクエリは、直接の 1 対 1 の通信を分離し、件名タイトル、送信者、受信者の 3 つのプロパティのみを表示します。
ReviewSetTable
| where isnotempty(Participants)
| extend ParticipantEmails = extract_all(@"\<(\[^\>\]+)\>", tostring(Participants))
| extend ParticipantCount = array_length(ParticipantEmails)
| where ParticipantCount == 2
| where ParticipantEmails has "John@contoso.com" and ParticipantEmails has "David@contoso.com"
| project SubjectTitle, SenderAuthor, Recipients
シナリオ 2: 外部に送信されたメール
少なくとも 1 人の外部受信者 (organization contoso.com 外) を含むすべてのレビュー セットアイテムを検索し、それらの外部メール アドレスをアイテムごとに一覧表示します。
ReviewSetTable
| where isnotempty(Recipients)
| extend Emails = extract_all(@"\<(\[^\>\]+)\>", tostring(Recipients))
| mv-expand Email = Emails
| extend Email = tostring(Email)
| where Email !contains "@contoso.com"
| summarize ExternalRecipients = make_set(Email) by ImmutableId, SubjectTitle
シナリオ 3: レビュー セット内の日付と時刻のパターンを識別する
時間の経過と共にデータを視覚化すると、調査担当者は、既知のインシデントと関連する可能性のある電子メールの急増など、コミュニケーションやドキュメント作成の急増や異常を特定するのに役立ちます。 四半期ごとのビューはビジネス サイクルに合わせて調整されるため、結果を財務報告期間、内部監査、またはポリシーの変更と簡単に関連付けることができます。
次の例では、年と四半期ごとに項目をグループ化し、結果を縦棒グラフとして視覚化することで、レビュー セットの項目が時間の経過と同時に分散される方法を分析します。 日付範囲で項目をフィルター処理し、各項目の [日付 ] フィールドから年と四半期を抽出し、各年と四半期の組み合わせの項目をカウントし、読み取り可能なラベル (例: Q2 2024) を作成し、結果を縦棒グラフとして表示します。
ReviewSetTable
| where Date > datetime(2015-01-01) and Date < datetime(2025-08-31)
| extend Year = datetime_part("year", Date), Quarter = datetime_part("quarter", Date)
| summarize EventCount = count() by Year, Quarter
| sort by Year asc, Quarter asc
| extend QuarterLabel = strcat("Q", tostring(Quarter), " ", tostring(Year))
| project QuarterLabel, EventCount
| render columnchart
シナリオ 4: レビュー セットMicrosoft Teamsメッセージの種類を視覚化する
次の例では、アイテム クラスによって設定されたレビュー Microsoft Teamsメッセージの種類を分類して視覚化し、さまざまなメッセージ形式の分布を理解するのに役立ちます。
ReviewSetTable
| where ItemClass startswith "IPM.SkypeTeams.Message."
| project SubjectTitle, Date, SenderAuthor, FileClass, ItemClass, InternetMessageId
| summarize ItemCount = count() by ItemClass
| sort by ItemCount desc
| render piechart
詳細レビュー セット エクスプローラー (プレビュー) で正規表現を使用する
詳細レビュー セット エクスプローラー (プレビュー) では、テキスト フィールドで強力なパターン マッチングを行う 正規表現 (正規表現) がサポートされています。 正規表現のサポートを使用すると、単純なキーワード (keyword)照合を超えて、英数字の組み合わせ、特殊文字、構造化パターンなどの複雑な文字シーケンスを検索できます。 正規表現を使用して次の手順を実行します。
- ID、コード、構造化トークンなど、特定の形式のアイテムを識別します。
-
hasやstartswithなどの標準演算子がキャプチャできないパターンを検出します。 - コンプライアンスまたはフォレンジック調査の高度なフィルター処理を実行します。
KQL で正規表現を記述するためのヒント
- 必要に応じ、円記号を正しく (
\\) エスケープします。 - 正確な配置にはアンカー (開始には
^、終了には$) を使用します。 - 過度に広範な一致を回避するために、パターンを段階的にテストします。
- 正確なクエリを行う他の演算子 (
and、orなど) と組み合わせます。 - リファレンス: 正規表現構文。
構文
where 句で matches regex 演算子を使用します。
where <PropertyName> matches regex "<pattern>"
例: キーワードの複雑なパターンに一致する
ReviewSetTable
| where Keywords matches regex "\\w{10}\\d{10}\\W{10}"
| project SubjectTitle, CompoundPath, Date, SenderAuthor, FileClass, ItemClass, InternetMessageId
Keywords プロパティに含まれる項目をフィルター処理します。
- 10 文字 (
\w) - 10 桁 (
\d) が続く - その後に 10 文字の単語以外の文字が続く (
\W)
- 10 文字 (
レビュー用に指定されたキー メタデータ フィールドを返します。
一般的な KQL 構文エラーを修正する
詳細レビュー セット エクスプローラー (プレビュー) でクエリを作成すると、構文エラーが発生する可能性があります。
次の表に、一般的なエラーとその修正方法を示します。
| エラー | 原因 | 修正プログラム |
|---|---|---|
sort 演算子には列名が必要です |
並べ替え基準を指定せずに sort を使用する。 |
sort byの後に列名を追加します。 たとえば、「 sort by Date desc 」のように入力します。 |
予期される ) または , |
閉じかっこまたは正しくない関数引数がありません。 | すべての開始かっこに一致する閉じかっこがあり、関数引数がコンマで区切られているかどうかを確認します。 |
| 不明な関数 | サポートされていない、またはスペルミスの関数名を使用する。 |
KQL ドキュメントに対して関数名を確認します。 一般的な例としては、 count()、 tostring()、 datetime()などがあります。 |
トークンが必要: \ | |
クエリ行の開始時にパイプ演算子がありません。 |
ReviewSetTable後のすべての行が\ | で始まることを確認します。 |
| 列が見つかりません | レビュー セット スキーマに存在しないプロパティ名を参照する。 | レビュー セットで使用可能な列名を確認します。 プロパティ名では、大文字と小文字を区別します。 |
summarize
by句が必要です |
集計で summarize を使用しますが、グループ化列は使用しません。 |
1 つ以上の列を含む by 句を追加します。 たとえば、「 summarize count() by FileClass 」のように入力します。 |
| 予期しないクエリの終了 | クエリが不完全であるか、演算子のない後続のパイプがあります。 | クエリの末尾にある末尾の \ | を削除するか、その後に目的の演算子を追加します。 |
注:
レビュー セットが作成され、データが生成されたときにこれらのプロパティが使用できなかった場合、一部の古いレビュー セットで特定の KQL プロパティがサポートされない場合があります。 古いレビュー セットでサポートされていないプロパティを照会すると、列が見つかりませんエラーが発生します。 このエラーを解決するには、新しいレビュー セットを作成し、 Add to review set プロセスを使用して 、サポートされている最新のプロパティを使用してデータを再生成します。