メインコンテンツまでスキップ

SharePointからファイルを取り込む

備考

ベータ版

標準の SharePoint コネクタはベータ版です。ワークスペース管理者は、 プレビュー ページからこの機能へのアクセスを制御できます。「Databricks プレビューの管理」を参照してください。

Microsoft SharePoint から Delta テーブルに構造化ファイル、半構造化ファイル、非構造化ファイルを取り込む方法を学習します。SharePoint コネクタは、 Auto Loader 、 spark.read 、およびCOPY INTOを含むバッチ API およびストリーミングAPIsを使用した SharePoint ファイルの増分取り込みをサポートしており、すべてUnity Catalogガバナンスを備えています。

SharePointコネクタを選択する

LakeFlow Connect 2 つの補完的な SharePoint コネクタを提供します。 どちらも SharePoint のデータにアクセスしますが、サポートする目的は異なります。

考慮

管理された SharePoint コネクタ

標準 SharePoint コネクタ

管理とカスタマイズ

フルマネージドコネクタ。

Delta テーブルにデータを取り込み、ソースとの同期を維持するエンタープライズ アプリケーション向けのシンプルでメンテナンスの手間が少ないコネクタ。LakeFlow Connectのマネージド コネクタを参照してください。

read_filesspark.readCOPY INTO 、 Auto LoaderなどのバッチAPIsとストリーミング API を使用して、 SQL 、 PySpark 、またはLakeFlow Spark宣言型パイプラインでカスタム インジェスト パイプラインを構築します。

取り込み中に複雑な変換を実行する柔軟性を提供し、パイプラインの管理と保守の責任をより大きくします。

出力フォーマット

均一なバイナリ コンテンツ テーブル。各ファイルをバイナリ形式(1行につき1ファイル)で取り込み、ファイルメタデータとともに 追加の列。

構造化されたDeltaテーブル。 構造化ファイル (CSV や Excel など) を Delta テーブルとして取り込みます。摂取にも使える バイナリ形式の非構造化ファイル。

粒度、フィルタリング、選択

今日はサブフォルダまたはファイル レベルの選択はありません。パターンベースのフィルタリングはありません。

指定された SharePoint ドキュメント ライブラリ内のすべてのファイルを取り込みます。

きめ細かくカスタマイズ可能。

ドキュメント ライブラリ、サブフォルダー、または個々のファイルから取り込むための URL ベースの選択。また、 pathGlobFilterオプションを使用したパターンベースのフィルタリングもサポートします。

主な特徴

標準の SharePoint コネクタは以下を提供します。

  • 構造化ファイル、半構造化ファイル、非構造化ファイルの取り込み
  • きめ細かな取り込み: 特定のサイト、サブサイト、ドキュメント ライブラリ、フォルダー、または単一のファイルを取り込む
  • spark.read 、 Auto Loader 、および COPY INTO
  • CSV や Excel などの構造化および半構造化形式の自動スキーマ推論と進化
  • Unity Catalog接続による安全な資格情報ストレージ
  • パターンマッチングによるファイル選択 pathGlobFilter

要件

SharePoint からファイルを取り込むには、次のものが必要です。

  • Unity Catalog が有効になっているワークスペース
  • CREATE CONNECTION SharePoint 接続を作成する権限 (または既存の接続を使用する権限USE CONNECTION )
  • Databricks Runtimeバージョン 17.3 LTS以降を使用するコンピュート
  • Sites.Read.All権限スコープで OAuth 認証が設定されました
  • SharePoint ベータ機能は、 プレビュー ページから有効になります。Databricksプレビューの管理を参照してください
  • オプション: Excel ファイルを解析するための Excel ベータ機能を有効にします。Excelファイルの読み取りを参照してください

接続を作成する

SharePoint 資格情報を保存するためのUnity Catalog接続を作成します。 接続セットアップ プロセスは、標準 SharePoint コネクタとマネージ SharePoint コネクタの両方で共有されます。

OAuth 認証オプションを含む完全な接続セットアップ手順については、 「SharePoint 取り込みセットアップの概要」を参照してください。

SharePoint からファイルを読み取る

Sparkを使用して SharePoint からファイルを読み取るには、 databricks.connectionデータソース オプションを使用して前のステップで作成した接続を指定し、アクセスする SharePoint リソースの URL を指定します。 この URL は、特定のファイル、フォルダー、ドキュメント ライブラリ (ドライブ)、またはサイト全体を参照できます。例:

  • https://mytenant.sharepoint.com/sites/test-site/
  • https://mytenant.sharepoint.com/sites/test-site/test-subsite
  • https://mytenant.sharepoint.com/sites/test-site/test-drive
  • https://mytenant.sharepoint.com/sites/test-site/Shared%20Documents/Forms/AllItems.aspx
  • https://mytenant.sharepoint.com/sites/test-site/test-drive/test-folder
  • https://mytenant.sharepoint.com/sites/test-site/test-drive/test-folder/test.csv
  • https://mytenant.sharepoint.com/sites/test-site/another-subsite/another-drive/test.csv

標準の SharePoint コネクタを使用してファイルを読み取るためのコード例を見つけます。

Auto Loaderを使用して SharePoint ファイルをストリーミングする

Auto Loader は、SharePoint から構造化ファイルを段階的に取り込む最も効率的な方法を提供します。新しいファイルが自動的に検出され、到着すると処理されます。また、自動スキーマ推論および進化により、CSV や JSON などの構造化ファイルや半構造化ファイルを取り込むこともできます。Auto Loader使用法の詳細については、 「一般的なデータ読み込みパターン」を参照してください。

Python
# Incrementally ingest new PDF files
df = (spark.readStream.format("cloudFiles")
.option("cloudFiles.format", "binaryFile")
.option("databricks.connection", "my_sharepoint_conn")
.option("cloudFiles.schemaLocation", <path to a schema location>)
.option("pathGlobFilter", "*.pdf")
.load("https://mytenant.sharepoint.com/sites/Marketing/Shared%20Documents")
)

# Incrementally ingest CSV files with automatic schema inference and evolution
df = (spark.readStream.format("cloudFiles")
.option("cloudFiles.format", "csv")
.option("databricks.connection", "my_sharepoint_conn")
.option("pathGlobFilter", "*.csv")
.option("inferColumnTypes", True)
.option("header", True)
.load("https://mytenant.sharepoint.com/sites/Engineering/Data/IoT_Logs")
)

Spark バッチ読み取りを使用して SharePoint ファイルを読み取る

Python
# Read unstructured data as binary files
df = (spark.read
.format("binaryFile")
.option("databricks.connection", "my_sharepoint_conn")
.option("recursiveFileLookup", True)
.option("pathGlobFilter", "*.pdf") # optional. Example: only ingest PDFs
.load("https://mytenant.sharepoint.com/sites/Marketing/Shared%20Documents"))

# Read a batch of CSV files, infer the schema, and load the data into a DataFrame
df = (spark.read
.format("csv")
.option("databricks.connection", "my_sharepoint_conn")
.option("pathGlobFilter", "*.csv")
.option("recursiveFileLookup", True)
.option("inferSchema", True)
.option("header", True)
.load("https://mytenant.sharepoint.com/sites/Engineering/Data/IoT_Logs"))

# Read a specific Excel file from SharePoint, infer the schema, and load the data into a DataFrame
df = (spark.read
.format("excel")
.option("databricks.connection", "my_sharepoint_conn")
.option("headerRows", 1) # optional
.option("dataAddress", "'Sheet1'!A1:M20") # optional
.load("https://mytenant.sharepoint.com/sites/Finance/Shared%20Documents/Monthly/Report-Oct.xlsx"))

Spark SQL を使用して SharePoint ファイルを読み取る

次の例は、 read_filesテーブル値関数を使用して SQL で SharePoint ファイルを取り込む方法を示しています。read_files使用法の詳細については、 read_filesテーブル値関数を参照してください。

SQL
-- Read pdf files
CREATE TABLE my_table AS
SELECT * FROM read_files(
"https://mytenant.sharepoint.com/sites/Marketing/Shared%20Documents",
`databricks.connection` => "my_sharepoint_conn",
format => "binaryFile",
pathGlobFilter => "*.pdf", -- optional. Example: only ingest PDFs
schemaEvolutionMode => "none"
);

-- Read a specific Excel sheet and range
CREATE TABLE my_sheet_table AS
SELECT * FROM read_files(
"https://mytenant.sharepoint.com/sites/Finance/Shared%20Documents/Monthly/Report-Oct.xlsx",
`databricks.connection` => "my_sharepoint_conn",
format => "excel",
headerRows => 1, -- optional
dataAddress => "'Sheet1'!A2:D10", -- optional
schemaEvolutionMode => "none"
);

増分取り込み COPY INTO

COPY INTO Delta テーブルへのファイルのべき等増分ロードを提供します。COPY INTO使用法の詳細については、 COPY INTOを使用した一般的なデータ読み込みパターンを参照してください。

SQL
CREATE TABLE IF NOT EXISTS sharepoint_pdf_table;
CREATE TABLE IF NOT EXISTS sharepoint_csv_table;
CREATE TABLE IF NOT EXISTS sharepoint_excel_table;

# Incrementally ingest new PDF files
COPY INTO sharepoint_pdf_table
FROM "https://mytenant.sharepoint.com/sites/Marketing/Shared%20Documents"
FILEFORMAT = BINARYFILE
PATTERN = '*.pdf'
COPY_OPTIONS ('mergeSchema' = 'true');

# Incrementally ingest CSV files with automatic schema inference and evolution
COPY INTO sharepoint_csv_table
FROM "https://mytenant.sharepoint.com/sites/Engineering/Data/IoT_Logs"
FILEFORMAT = CSV
PATTERN = '*.csv'
FORMAT_OPTIONS('header' = 'true', 'inferSchema' = 'true')
COPY_OPTIONS ('mergeSchema' = 'true');

# Ingest a single Excel file
COPY INTO sharepoint_excel_table
FROM "https://mytenant.sharepoint.com/sites/Finance/Shared%20Documents/Monthly/Report-Oct.xlsx"
FILEFORMAT = EXCEL
FORMAT_OPTIONS('headerRows' = '1')
COPY_OPTIONS ('mergeSchema' = 'true');

LakeFlow Spark宣言型パイプラインで SharePoint ファイルを取り込む

注記

SharePoint コネクタには、Databricks Runtime 17.3 以上が必要です。これは、 LakeFlow Spark宣言型パイプライン リリースではまだ利用できません。 LakeFlow Spark宣言型パイプライン リリースで使用されるDatabricks Runtimeバージョンを確認するには、そのリリースのリリースノートを参照してください。

次の例は、 LakeFlow Spark宣言型パイプラインのAuto Loaderを使用して SharePoint ファイルを読み取る方法を示しています。

Python
from pyspark import pipelines as dp

# Incrementally ingest new PDF files
@dp.table
def sharepoint_pdf_table():
return (spark.readStream.format("cloudFiles")
.option("cloudFiles.format", "binaryFile")
.option("databricks.connection", "my_sharepoint_conn")
.option("pathGlobFilter", "*.pdf")
.load("https://mytenant.sharepoint.com/sites/Marketing/Shared%20Documents")
)

# Incrementally ingest CSV files with automatic schema inference and evolution
@dp.table
def sharepoint_csv_table():
return (spark.readStream.format("cloudFiles")
.option("cloudFiles.format", "csv")
.option("databricks.connection", "my_sharepoint_conn")
.option("pathGlobFilter", "*.csv")
.option("inferColumnTypes", True)
.option("header", True)
.load("https://mytenant.sharepoint.com/sites/Engineering/Data/IoT_Logs")
)

# Read a specific Excel file from SharePoint in a materialized view
@dp.table
def sharepoint_excel_table():
return (spark.read.format("excel")
.option("databricks.connection", "my_sharepoint_conn")
.option("headerRows", 1) # optional
.option("inferColumnTypes", True) # optional
.option("dataAddress", "'Sheet1'!A1:M20") # optional
.load("https://mytenant.sharepoint.com/sites/Finance/Shared%20Documents/Monthly/Report-Oct.xlsx")

制限事項

標準の SharePoint コネクタには次の制限があります。

  • 複数サイトの取り込み不可 : 同じクエリで複数のサイトを取り込むことはできません。2 つのサイトから取り込むには、2 つの個別のクエリを記述する必要があります。
  • フィルタリング : pathGlobFilterオプションを使用して、名前でファイルをフィルタリングできます。フォルダー パス ベースのフィルタリングはサポートされていません。
  • サポートされていない形式 : SharePoint リストおよび .aspxサイトページはサポートされていません。ドキュメント ライブラリ内のファイルのみがサポートされます。
  • SharePoint サーバーへの書き戻しはサポートされていません。
  • Auto Loader cleanSource (取り込み後にソースでファイルを削除またはアーカイブする) はサポートされていません。

次のステップ