概要
本記事では、Databricks Lakeflow Connect を利用した Microsoft SharePoint とのデータ統合について、検証結果を整理して紹介します。
本記事では、Databricks 上で Microsoft SharePoint のドキュメントを一元管理し、分析や RAG などのユースケースで利活用することを目的として、Databricks Lakeflow Connect の SharePoint コネクタを用いたデータ統合手順と検証結果を詳しく整理します。
最終的に、SharePoint 上の Office ファイルなどを Databricks 上のテーブルとファイルの両面で扱い、後続の RAG ワークロードやデータ分析基盤にどのようにつなげられるかをイメージできるようにすることを狙いとします。
機能概要
Microsoft SharePoint インジェスト パイプラインとは
Databricks Lakeflow Connect の SharePoint コネクタでは、API を用いてインジェスト パイプラインを作成できます。2025 年 11 月 27 日時点では Databricks UI からの作成はサポートされていませんが、作成後の運用は従来の Databricks パイプラインと同様のモデルで管理できます。
作成方法
公式ドキュメントでは、次の 2 種類のパイプライン作成方法が紹介されています。
- ノートブックから REST API を呼び出して作成する方法
- Databricks CLI を使用して作成する方法
SharePoint サイトの「Document」全体を対象とする方法と、特定フォルダ配下のみを対象とする方法が提示されています。ノートブックから REST API で作成するサンプルでは、Cell 2 が前者、Cell 3 が後者の例になっています。
出所:Microsoft SharePoint インジェスト パイプラインを作成する - Azure Databricks | Microsoft Learn
scd_type オプションにて SCD_TYPE_1 または SCD_TYPE_2 を指定できます。SCD_TYPE_2 の詳細については、以下のドキュメントで解説されています。
注意事項
SharePoint コネクタの主な制限事項として、以下の点に注意が必要です。
- ファイルサイズ上限が 100 MB であること *1
- カスタム メタデータを取り込めないこと *2
- 取り込み頻度の推奨が「最大 1 時間に 1 回」であること *3
*1 ドキュメントでは次のように記載されています。
SharePoint コネクタは、100 MB 以下のファイルのみをサポートします。 100 MB を超えるファイルのメタデータは取り込まれますが、ファイルコンテンツはダウンロードされません。
出所:Microsoft SharePoint コネクタの制限事項 - Azure Databricks | Microsoft Learn
なお、BINARY 型のコンテンツをファイルとして書き出す際に利用する UDF に対しても、100 MB のサイズ制限があります。
ファイル アクセス UDF は、100 MB を超えるファイルのファイル コンテンツを処理できません。 ファイル アクセス UDF を使用する前に、これらの行を除外する必要があります。
出所:ダウンストリーム RAG ユース ケース - Azure Databricks | Microsoft Learn
*2 ドキュメントでは次のように記載されています。
その他のカスタム メタデータの取り込みはサポートされていません。
出所:Microsoft SharePoint コネクタの制限事項 - Azure Databricks | Microsoft Learn
*3 ドキュメントでは次のように記載されています。
Databricks では、最大 1 時間に 1 回の取り込みをお勧めします。
出所:Microsoft SharePoint コネクタの制限事項 - Azure Databricks | Microsoft Learn
認証方法
サポートされている認証方法は次の 2 種類です。通常は U2M 認証を利用する想定になると思われます。
一方で、M2M による OAuth 認証はサポートされていません。
アプリ専用アクセス (M2M OAuth) はサポートされていません。 コネクタでは、委任されたアクセス (U2M OAuth) のみがサポートされます。
出所:Microsoft SharePoint コネクタの制限事項 - Azure Databricks | Microsoft Learn
No. コネクタは、アプリ専用アクセス (M2M OAuth) ではなく、委任されたアクセス (U2M OAuth) のみをサポートします。
出所:Microsoft SharePoint コネクタに関する FAQ - Azure Databricks | Microsoft Learn
基本的な動作確認
Databricks Lakeflow Connect による SharePoint からのファイル取得
@ryoma-nagata 氏の記事を参考に、2025 年 11 月 27 日時点で SharePoint からのファイル取得処理を実行できることを確認しました。
ストレージへのファイル書き込み
Microsoft SharePoint インジェスト パイプラインにより書き込まれたテーブルの content.inline_content 列を、Volumes にファイルとして書き出す方法を紹介します。本手順では、性能面の懸念が公式ドキュメントでも指摘されています。この点については後述します。
まず、Spark の UDF を定義します。content.inline_content 列の内容を指定した Volume に対して、source_metadata.file_folder_path 列の階層構造を保持したまま書き込む実装です。
import os
from pyspark.sql.functions import udf, col, lit
from pyspark.sql.types import StringType
def copy_to_disk(file_bytes, volume_path, file_folder_path, filename) -> str:
rel_folder = (file_folder_path or "").lstrip("/")
# Volume 配下のディレクトリパス
dir_path = os.path.join(volume_path, rel_folder)
os.makedirs(dir_path, exist_ok=True)
# 最終的なファイルパス
fname = os.path.join(dir_path, filename)
# file_bytes は BINARY なので、そのまま書き込む
with open(fname, "wb") as f:
f.write(file_bytes)
return fname
# UDF 定義
read_blob_as_file = udf(copy_to_disk, StringType())
次に、Microsoft SharePoint インジェスト パイプラインで取り込んだテーブルを参照し、先ほどの UDF を適用します。ここでは UDF を実行するために display を用いていますが、他テーブルへの書き込み処理の一部として利用することも可能です。
# Volume のパスを定義
VOLUME_PATH = "/Volumes/sharepoint_data/schema_10/volume_01"
# SharePoint ドキュメントテーブル
src = spark.read.table("sharepoint_data.schema_10.documents")
written = (
src.withColumn(
"file_path",
read_blob_as_file(
col("content.inline_content"),
lit(VOLUME_PATH),
col("source_metadata.file_folder_path"),
col("file_metadata.name"),
),
)
)
written.select("file_id", "file_path").display()
Volumes にファイルが作成されていることを確認します。ファイルをダウンロードし、開いて内容が想定どおりであることを確認します。
その他の論点
取り込まれるデータのテーブル構造
Microsoft SharePoint インジェスト パイプラインの実行により、以下のようなカラムを持つテーブルが作成されます。
content 列は STRUCT 型であり、その中の content.inline_content 列にファイル本体が BINARY 型として格納されます。
content STRUCT<
content_file_path: STRING,
inline_content: BINARY,
offset: BIGINT,
length: BIGINT
>,
また、is_deleted 列は名前から想像される動作とは異なる挙動となります。
この列は無視します。 値は常に false になります。 削除された列を識別する必要がある場合、Databricks では SCD タイプ 2 を有効にし、 __END_AT columnを使用することをお勧めします。
出所:Microsoft SharePoint コネクタ リファレンス - Azure Databricks | Microsoft Learn
取り込まれるデータ例
実際に取り込まれるデータは以下のような構造になります。__START_AT 列と __END_AT 列は、scd_type オプションに SCD_TYPE_2 を指定した場合にのみ出力されます。
{
"file_id": "01ZJI34INLEXERRINIEJGYRGOMNGQLAZFG",
"file_metadata": {
"name": "databricks_overview_by_ai.pptx",
"size_in_bytes": 6981824,
"created_timestamp": "2025-10-08T04:58:53.000Z",
"last_modified_timestamp": "2025-10-08T04:58:53.000Z",
"created_by_email": "manabian@test.com",
"last_modified_by_email": "manabian@test.com"
},
"source_metadata": {
"site_id": "b027b8be-d962-4434-a4fb-57484a2201e4",
"drive_id": "b!vrgnsGLZNESk-1dISiIB5LqOzEs4asVNpCFDySTBdyrlhMUPV7OlQJAowWMRl7KG",
"file_folder_path": "/drives/b!vrgnsGLZNESk-1dISiIB5LqOzEs4asVNpCFDySTBdyrlhMUPV7OlQJAowWMRl7KG/root:/Weekly-LT/01_Sessions/2025",
"quick_xor_hash": "+D01K3ZDe8rIaSt47bzU+PpUWzY=",
"mime_type": "application/vnd.openxmlformats-officedocument.presentationml.presentation",
"web_url": "https://test.sharepoint.com/sites/all-/_layouts/15/Doc.aspx?sourcedoc=%7B18C925AB-A8A1-4D22-8899-CC69A0B064A6%7D&file=databricks_overview_by_ai.pptx&action=edit&mobileredirect=true"
},
"content": {
"content_file_path": null,
"inline_content": "UEsDBBQABgAIAAAAIQCgAhP...",
"offset": null,
"length": null
},
"sequence_id": 1763204530648,
"is_deleted": false,
"__START_AT": 1763204530648,
"__END_AT": 1763205568225
}
カタログ エクスプローラー上ではデータプレビューの制限により表示できない場合があるため、クエリでの確認が有効です。
%sql
SELECT
*
EXCEPT
(
content.inline_content
)
FROM
sharepoint_data.schema_01.documents
Sample data size exceeds the limit
Please use notebook or sql editor to further explore the sample data.
Change Data Feed(CDF)のサポート
Microsoft SharePoint インジェスト パイプラインは AUTO CDC によって実装されており、テーブルを Change Data Feed(CDF)として読み取ることが可能です。
一方で、仕様上は削除イベントの扱いに注意が必要です。ドキュメントでは、以下のように SCD_TYPE_1 では delete イベントが CDF に明示的には出力されないと説明されています。筆者の検証環境では delete イベントも取得できましたが、将来動作が変更される可能性があります。
SCD タイプ 1 を有効にすると、削除によって変更データ フィードに明示的な delete イベントが生成されることはありません。
出所:Microsoft SharePoint コネクタの制限事項 - Azure Databricks | Microsoft Learn
df_01 = (
spark.read.format("delta")
.option("readChangeFeed", "true")
.option("startingVersion", 1)
.table("sharepoint_data.schema_10.documents")
)
df_01 = df_01.drop("content")
df_01.display()
Change Data Feed の基本的な使い方については、以下の記事で整理しています。
ファイル書き込み方法の選択
ファイルとして書き出す方法については、以下のドキュメントで紹介されています。本記事ではサーバーレス コンピュートから Volumes に書き込む方法を採用していますが、性能低下の可能性が指摘されています。実運用前に負荷試験などで性能を確認することを推奨します。
ダウンストリーム RAG ユース ケース - Azure Databricks | Microsoft Learn
UDF を更新して、ローカル ディスクではなく Unity カタログ ボリュームに書き込むことができます。 ただし、これによりパフォーマンスが低下します。
出所:ダウンストリーム RAG ユース ケース - Azure Databricks | Microsoft Learn


















