CData SharePoint ドライバーで 5000 件以上のレコードを取得する方法



Microsoft SharePoint は、組織がドキュメントやリストベースのデータをチーム間で保存、管理、共有できるコラボレーションプラットフォームです。ただし、リストやライブラリが大きくなると、ビルトインの制限に遭遇することがあります。具体的には、単一のビューで 5,000 件以上のアイテムを取得または表示しようとすると、SharePoint のリストビューしきい値によってブロックされる場合があります。

CData は、アプリケーションからSharePoint データにデータベースのようにアクセスできるドライバーを提供しています。これにより、通常のビュー制限を超える大規模なデータセットでもスムーズに接続・統合できます。

概要

CData SharePoint ドライバーを使用して SharePoint Online からデータを取得する際、以下のエラーが発生することがあります:

制限超過エラー

This operation cannot be performed because it exceeds the list view threshold.

これは、SharePoint Online が 1 クエリあたり 5000 件のレコード制限を適用しているために発生します。これは一般的に 5000 件の SharePoint リスト問題 として知られています。

この記事では、この制限が存在する理由、データ取得への影響、そして CData SharePoint ドライバーで SOAP スキーマと REST スキーマの両方に対応するソリューションと回避策について解説します。

CData ドライバーで SharePoint に接続する

最新の CData SharePoint コネクタをダウンロードし、以下のように接続プロパティを設定します(JDBC Driver の場合):

  • URL: 接続する Microsoft SharePoint サイトのベース URL を指定します。この URL は、すべての API 呼び出しの起点となります。
  • SharePoint Edition: 接続する Microsoft SharePoint のエディション(Online または On-Premises)を指定します。
  • Auth Scheme: Microsoft SharePoint への接続に使用する認証スキームを指定します。(REST の場合は Azure AD、SOAP の場合は Basic を使用します。)
  • Initiate OAuth: 安全なユーザーアクセスを維持するために、OAuth アクセストークンの取得または更新のプロセスを管理します。
  • Schema: Microsoft SharePoint への接続にプロバイダーが使用するスキーマタイプ(SOAP または REST)を指定します。
ドライバー設定

注意: CData ドライバー UI では最大 500 件のレコードを直接取得できます。より大規模なデータセットの場合は、外部の SQL ベースのツール(DBeaver、DBVisualizer、Power BI など)から接続文字列を使用してドライバーに接続し、SharePoint データをクエリできます。

外部 IDE を SharePoint ドライバーに接続する

  1. 新しいドライバー設定を作成し、以下を設定します:
    • Driver Name
    • Class Name
    • URL Template: jdbc:sharepoint
  2. OK をクリックして保存します
  3. 次に、New Database Connection を選択し、先ほど設定したスキーマ(SOAP または REST)に基づいて接続文字列を設定します
  4. Test Connection をクリックします。成功したら、Finish をクリックします

これで REST および SOAP ベースの SharePoint テーブルが IDE のデータベースエクスプローラーに表示されるようになります。

SharePoint ドライバーに接続された外部 IDE

5,000 件以上のレコードを含む SharePoint テーブルに対して、以下のクエリを実行します:

SELECT * FROM Table_name;

実行すると、以下のエラーメッセージが表示される場合があります: "This operation cannot be performed because it exceeds the list view threshold." これを解決するための回避策は、SOAP スキーマと REST スキーマで異なります。

SOAP スキーマ

SOAP スキーマを使用して大規模な SharePoint ドキュメントライブラリやリストをクエリする場合、結果セットが 5,000 件を超えるとリストビューしきい値エラーが発生することがあります。これを回避するには、FullClientFilter プロパティを使用してクライアント側フィルタリングを有効にします。

ドキュメントライブラリ

SELECT * FROM Table_name WHERE FullClientFilter = true;

このプロパティは他のフィルターと組み合わせることもできます:

SELECT * FROM Table_name WHERE [Column_name]= 'Value' AND FullClientFilter = true;
SOAP スキーマを使用した大規模 SharePoint リストのクエリ

リスト

リストは通常、フィルターなしで 5,000 件以上のレコードを取得できます。例:

SELECT * FROM Table_name;

ただし、ID 以外のカラムにフィルターを適用すると、例えば:

SELECT * FROM Table_name WHERE [Column_name] = 'Value';

SharePoint は以下のエラーを返します:

"The attempted operation is prohibited because it exceeds the list view threshold."
REST スキーマクエリでのデータフィルター非対応エラー

追加のフィルターを使用しても 5,000 件以上のレコードを取得するには、以下の接続プロパティを有効にします:

other:FullClientFilter=True

その後、フィルターを適用してクエリを実行します:

SELECT * FROM Table_name WHERE [Column_name] = 'Value' AND FullClientFilter = true;

これにより、ドライバーは最初に完全なデータセットを取得し、ローカルでフィルターを適用します。この方法で 5,000 件以上のレコードに正常にアクセスできます。

REST スキーマ

CData SharePoint ドライバーの古いバージョンでは、REST API を使用して 5,000 件以上のレコードを含む大規模な SharePoint リストをクエリすると、誤解を招く結果が返されることがありました。以下のようなクエリ:

SELECT * FROM TableName WHERE ColumnName = 'Value';

は正常に実行されますが、SharePoint REST がしきい値を超えるフィルター付きクエリを明示的なエラーを発生させずに黙ってブロックしていたため、空または NULL の結果が返されていました。

最新バージョンでの改善された動作

CData SharePoint ドライバーの最新のアップデートにより、この動作は大幅に改善されました。REST スキーマは内部ページネーションを実装することで、SharePoint の 5,000 アイテムしきい値を自動的に処理するようになりました。

CData REST 自動ページネーションのスクリーンショット

フィルターの制限事項

自動ページネーションによりフィルターなしのクエリでは 5,000 件の制限がなくなりましたが、フィルター付きクエリ(インデックスのないカラムや ID 以外のカラムに WHERE 句を使用するクエリ)では、SharePoint のしきい値の動作が引き続き発生する場合があります:

"The attempted operation is prohibited because it exceeds the list view threshold enforced by the administrator."

これに対処するには、接続プロパティ DisableFilterLimit=True を有効にします。この設定により、ドライバーは最初に完全なデータセットを取得し、クライアント側でローカルにフィルターを適用できるようになります。

(DisableFilterLimit=True を指定)
SELECT * FROM LargeListTest;
インデックスのないカラムでのフィルタリングは、しきい値に達する可能性があります
SELECT * FROM LargeListTest WHERE AuthorId = 11;

DisableFilterLimit を有効にすると、ドライバーはクライアント側フィルタリングを実行し、5,000 件以上のレコードを取得する場合でも正確な結果を保証します。

CData による簡単な SharePoint 接続

これで、FullClientFilterDisableFilterLimit、ビルトインのページネーションなどの機能を使用して、CData SharePoint ドライバーで SharePoint の 5,000 アイテム制限を克服する方法がわかりました。

CData を使用すると、標準インターフェースを通じてリアルタイムアクセスで Microsoft SharePoint に簡単に接続・統合できます。30 日間の無償トライアルをダウンロードして、今すぐ始めましょう。