はじめに

SharePoint Online では、1 回のクエリが処理できるアイテム数が 5,000 に制限されています。これがリスト ビューのしきい値です。この制限は、リストが保持するアイテム数や、ページに表示される行数とは関係ありません。50,000 アイテムのリストでも、インデックスを利用し、各クエリで対象を十分に絞り込めれば、利用できる場合があります。しかし、インデックスのない列でフィルター処理を行うと、SharePoint はリスト全体をスキャンしなければならず、リストのアイテムが 5,000 を超えている場合は、クエリを実行せずに拒否します。List Filter Online のユーザーにとっては、特定のフィルターを適用した時点でエラーまたは空の結果として表れます。

この記事では、しきい値が Web パーツのフィルター ウィンドウ、列ヘッダー フィルター、事前定義フィルターにどのように影響するか、Web パーツがインデックスの必要なフィルター列をどのように示し、インデックスを作成するか、代わりにリストの設定でインデックスを追加する方法、そしてフィルター・並べ替え・グループ化を制限内に収めるためのルールについて説明します。フィルター ウィンドウそのものについては、KB10255. List Filter Online のフィルター ペイン コントロールとサポートされる列の種類で説明しています。

しきい値がフィルター処理に与える影響

List Filter Online は、標準の SharePoint REST APIを通じて、管理者の事前定義フィルター、フィルター ウィンドウの条件、列ヘッダー フィルター、およびプロパティ ペインで構成した並べ替えとグループ化を組み合わせた CAML クエリでアイテムを読み取ります。SharePoint は、このようなクエリをすべてしきい値と照らして確認します。

  • インデックス付きの列に対する条件では、SharePoint が一致する行を直接選択できるため、インデックス付きの条件で対象を十分に絞り込める場合、大規模なリストでもクエリが成功する可能性があります。
  • インデックスのない列に対する条件では、すべてのアイテムのスキャンが必要になります。5,000 アイテムを超えるリストでは SharePoint がエラーを返し、Web パーツは 問題が発生しました。 と、SharePoint が返したメッセージを表示します。
  • インデックスのない列での並べ替えやグループ化も同じ結果になります。最初のページを返す前に、行を並べ替える必要があるためです。
  • ドロップダウン コントロールや列ヘッダー フィルターの値の一覧もクエリです。SharePoint がこれらを拒否すると、コントロールには単に値が表示されません。

Web パーツの 行数の上限(1 ページあたり 1~1,000 行)は、ここでは役に立ちません。これは返される行数を制限するものであり、SharePoint が該当する行を見つけるために調べなければならない行数を制限するものではないためです。

Web パーツに表示されるしきい値エラー

Web パーツに表示されるしきい値エラー

📝 注
標準ビューと Web パーツには SharePoint のクエリ制限が適用されますが、それぞれのクエリは異なる場合があります。インデックスだけで成功が保証されるわけではありません。演算子、他の条件、一致する項目数も確認してください。

上記の全件スキャンによるエラーは、選択性の高いインデックス付き条件で最初に対象を絞り込んでいないクエリに該当します。参照列のインデックスではしきい値の問題を解決できないため、最初の条件には別の種類の列を使用してください。 Microsoft.

List Filter Online による支援

データ ソースグループで選択したリストのアイテムが 5,000 を超えている場合、フィルター ウィンドウのコンフィギュレーターは、パネル用に選択したすべての列をチェックします。インデックスがなく、かつ種類的にインデックスを作成できる列には、次の 2 か所で警告が表示されます。

  • プロパティ ペインの フィルター ウィンドウグループの 選択された列の下に、該当する列を一覧にした警告バーが表示されます。「契約の種類、顧客: 列にインデックスがありません。この列で大規模なリストをフィルター処理すると、機能しない場合があります。」
  • 列の選択で開く 列パネルで、該当する各列の名前の横に黄色の警告アイコンが表示されます。ツールヒントには同じ警告が繰り返し表示され、最後に インデックスの作成と表示されます。

警告アイコンをクリックするとインデックスが作成されます。Web パーツが REST API を通じて列の Indexed プロパティを設定し、SharePoint が確認するとアイコンが消え、その列は警告バーから外れます。SharePoint が変更を拒否した場合、プロパティ ペインに 予期しないエラーが発生しました。 と表示されます。主な原因は、この記事の最後にある表にまとめています。

プロパティ ペインに表示される、インデックスのないフィルター列に関する警告

プロパティ ペインに表示される、インデックスのないフィルター列に関する警告

このチェックは、次のルールに従って行われます。

  • 警告が表示されるのは、プロパティ ペインの読み込み時に SharePoint が報告するアイテム数が 5,000 を超えるリストのみです。それより小さいリストでは、インデックスのない列でも何も表示されません。
  • コンフィギュレーターの 表示列でチェックされている列のみが調べられます。
  • 複数行テキスト、計算値、複数選択の選択肢、添付ファイル列など、SharePoint がインデックスを作成できない種類の列は、警告の対象になりません。
  • Web パーツが別のサイトのデータを表示している場合、インデックスはその別のサイトにあるリストに作成されます。

フィルター ウィンドウのほかに、開発者ツールグループで 開発者モードを有効にするをオンにすると、データ ソース グループの列コンフィギュレーター(列の選択)にすべての列のインデックスの状態が表示されます。列名の前にあるスピードメーターのアイコンは、緑色でツールヒント (インデックス付き)、または赤色でツールヒント (インデックスなし) になります。これを使用して、フィルター ウィンドウのチェックの対象外である、並べ替えやグループ化に使用する予定の列を確認してください。

開発者モードでの列のインデックスの状態

開発者モードでの列のインデックスの状態

❗ 重要
インデックスを作成すると、変更されるのは Web パーツではなくリストです。インデックスの作成 をクリックするユーザーには、リストを管理するアクセス許可(リストに対する 編集、デザイン、または フル コントロール のアクセス許可レベル)が必要です。それ以外の場合、SharePoint は要求を拒否します。1 つのリストに設定できるインデックス付き列は最大 20 個です。Web パーツはこれらの条件を事前にチェックせず、SharePoint が返した結果を報告します。

コンフィギュレーターからのインデックスの作成

  1. ページを編集モードで開き、List Filter Web パーツのプロパティ ペインを開きます。
  2. フィルター ウィンドウ グループを展開します。リストのアイテムが 5,000 を超えていて、選択した列の一部にインデックスがない場合、選択された列 の下の警告バーにそれらの列名が表示されます。
  3. 列の選択 をクリックします。列 パネルで、黄色の警告アイコンが付いている列を探します。
  4. 最初の列のアイコンをクリックします。要求の実行中、アイコンは無効になり、インデックスが作成されると消えます。
  5. 警告の出ている他の列でも同様に繰り返し、保存をクリックします(他に変更していない場合は キャンセルでも構いません。インデックスはすでに作成されています)。
  6. 選択された列 の下の警告バーが消えたことを確認し、ページを再発行して、以前に失敗したフィルターを適用します。

フィルター ウィンドウ コンフィギュレーターの インデックスの作成 アイコン

フィルター ウィンドウ コンフィギュレーターの インデックスの作成 アイコン

別の方法: リストの設定でインデックスを作成する

同じインデックスは SharePoint 自体で作成することもできます。コンフィギュレーターがチェックするのはフィルター ウィンドウの列だけなので、並べ替え、グループ化、事前定義フィルターに使用する列については、この方法が唯一の手段です。

  1. リストまたはライブラリを開き、歯車のメニューから 設定 → リストの設定(または ライブラリの設定)を選択します。
  2. 列 セクションで、インデックス付きの列 をクリックします。
  3. 新しいインデックスの作成 をクリックします。
  4. このインデックスの主列 として列を選択し、作成 をクリックします。
  5. フィルター、並べ替え、グループ化に使用するすべての列に対して、1 リストあたり 20 個のインデックスの上限まで、同じ手順を繰り返します。

リストの設定の「インデックス付きの列」ページ

リストの設定の「インデックス付きの列」ページ

SharePoint Online でインデックスを作成できる列の種類は、1 行テキスト、選択肢(単一選択)、数値、通貨、日付と時刻、はい/いいえ、参照(単一値)、ユーザーまたはグループ(単一値)、管理されたメタデータ(単一値)です。複数行テキスト、複数選択の選択肢、複数値の参照、複数選択のユーザーまたはグループ、複数値の管理されたメタデータ、計算値、ハイパーリンクまたは画像の列にはインデックスを作成できません。大規模なリストでは、インデックスの作成に時間がかかる場合があります。再試行する前に インデックス付きの列 で状態を確認してください。

大規模リスト向けのフィルター設計

インデックスにより、個々の条件は高速になります。ただし、リストが増え続けても使いやすさを保てるかどうかは、クエリ全体の設計で決まります。

事前定義フィルターはインデックス付き列から始める。 フィルター グループのクエリ ビルダーで、最上位グループの最初の条件を、それだけでアイテムを 5,000 未満に絞り込めるインデックス付き列(状態、年、部署など)の比較にします。SharePoint は最初のインデックス付き条件を使用して、残りを評価する前にセットを絞り込みます。その後に続く条件は、インデックスのない列に対するものでも構いません。最初の対象の絞り込みには AND を使用してください。OR のすべての分岐にインデックスがあっても、しきい値を回避できるとは限りません。

インデックスを利用しやすい比較を生成するコントロールを選ぶ。 Eq、Neq、In、Geq、Leq、Gt、Lt、BeginsWith はインデックスを使用できますが、Contains は使用できません。フィルター ウィンドウでは、テキスト の代わりに ドロップダウン、ドロップダウン (複数の値)、ユーザーまたはグループ、日付ピッカー、日付範囲、相対日付、数値範囲、はい/いいえ を使用し、テキスト (オプション付き) では 次の値を含む の代わりに 次の値と等しい または 次の値で始まる を使用します。用語 コントロールも Contains を使用するため、大規模リストでは ドロップダウン に置き換えてください。

復元されたフィルターを確認する。 日付コントロールは条件なしで開始します。保存済みフィルター、リンク、記憶されたフィルターによって、ページを開くときに条件が適用されることがあります。事前定義クエリと併せて確認してください。

インデックス付き列で並べ替え、グループ化する。 並べ替えグループと グループ化グループには任意の列を指定できますが、大規模リストではインデックス付きの列を選択し、グループ化のレベルは 1 つにすることをお勧めします。また、並べ替え可能と設定されたすべての列では、ユーザーが列ヘッダー メニューから並べ替えを実行できることに注意してください。大規模リストでインデックスのない列については、このオプションをオフにしてください。

列ヘッダー フィルターはインデックス付き列に限定する。 列の フィルター可能オプションは、ヘッダー メニューのために列の個別の値を読み込みます。大規模リストでは、インデックス付き列でのみオンにしてください。

フォルダーと行数の上限を本来の目的で使う。 フォルダー内のアイテムを表示する設定(フォルダーグループの設定)では、一度に 1 つのフォルダーに対してクエリが実行されるため、インデックスがなくても各クエリがしきい値の範囲内に収まることがよくあります。小さな 行数の上限 とページ分割を組み合わせるとページは軽量に保たれますが、インデックスの代わりにはなりません。

💡 ヒント
フィルターを設計する間は 開発者モードを有効にする をオンにしてください。ツール バーの CAML クエリ コマンドに、Web パーツが送信する正確なクエリが表示されるため、どの比較と列が関わっているかを確認し、リストのインデックス付き列と見比べることができます。

症状と対処方法

症状原因対処方法
フィルターを適用した直後に、リスト ビューのしきい値に関する SharePoint のメッセージとともに 問題が発生しました。 が表示されるフィルター条件がインデックスのない列を使用している、または最初の条件でリストを 5,000 アイテム未満に絞り込めていない列にインデックスを作成する。インデックス付き列の条件を事前定義フィルターの先頭に移動する
ユーザーがフィルターを設定していないのに、ページを開いた直後に同じエラーが表示される事前定義クエリ、並べ替え、グループ化、復元されたフィルターの確認が必要フィルター、並べ替え、グループ化 で使用している列にインデックスを作成する。コントロールを置き換えるか、その列にインデックスを作成する
ドロップダウンまたは列ヘッダー フィルターに列の値が表示されない列の個別の値を読み込むクエリが SharePoint に拒否された列にインデックスを作成する
フィルターが一部の値では機能し、他の値では失敗する5,000 を超えるアイテムに一致する値があると、クエリの残りの部分にインデックスが使われなくなる結果をさらに絞り込む、インデックス付き列の条件を事前定義フィルターまたはパネルに追加する
警告アイコンをクリックすると 予期しないエラーが発生しました。 で終了するユーザーにリストを管理するアクセス許可がない、リストにすでに 20 個のインデックスがある、または列の種類がインデックス作成に対応していないリストの所有者にインデックスの作成を依頼する。インデックス付きの列 で未使用のインデックスを削除する。別の列またはコントロールを選択する
インデックスのない列に警告が表示されないリストのアイテムが 5,000 以下である、または列の種類がインデックス作成に対応していないリストが大きくなるまで対処は不要。インデックスを作成できない種類の場合は、フィルターにインデックス作成可能な列を選択する
インデックスを作成したのに、フィルターが依然として失敗する大規模リストで SharePoint がまだインデックスを構築中であるしばらく待ってから、もう一度お試しください

質問と回答

この記事について質問すると、サポートチームから公式回答を受け取れます。

まだ質問はありません。最初の質問を投稿しましょう。

注目の記事

Password Vault でパスワードまたはユーザー名を表示してコピーする方法

SharePoint Online と Microsoft Teams 向け Password Vault で保存した資格情報を使用する方法です。エントリの展開、目のボタンによるパスワードの表示と非表示、[クリップボードにコピー] によるパスワードやユーザー名のコピー、PIN コードが必要になるタイミング、[コピー済み] ラベル、URL リンクの動作を説明します。

33 1 分
直属の部下に代理者を割り当てる方法

Vitextra Substitutions Web パーツで、不在の従業員に代理者を割り当てる手順を説明します。「代理者を割り当てる」パネルを開き、不在の人、代理者、種類、日付、担当業務を入力し、代理者が確認するまでの流れを確認します。

77 1 分
List Filter Online のインストールとページへの追加方法

Vitextra List Filter Online パッケージを SharePoint のアプリ カタログにアップロードし、List Filter Web パーツをモダン ページに追加して、最小限の構成 (サイト、リストまたはライブラリ、列) を完了し、ページを発行して、Web パーツを新しいバージョンに更新するまでの手順を説明します。

106 2 分

共有