Menyerap file dari SharePoint

Penting

Fitur ini ada di Beta. Admin ruang kerja dapat mengontrol akses ke fitur ini dari halaman Pratinjau . Lihat Kelola pratinjau Azure Databricks.

:::catatan Kepatuhan

Konektor SharePoint mendukung penggunaan di ruang kerja dengan Konfigurasi pengaturan keamanan dan kepatuhan yang ditingkatkan diaktifkan.

:::

Anda dapat menyerap file terstruktur, semi terstruktur, dan tidak terstruktur dari Microsoft SharePoint ke dalam tabel Delta. Konektor SharePoint mendukung penyerapan bertahap file SharePoint menggunakan API batch dan streaming, termasuk Auto Loader, spark.read dan COPY INTO, semuanya dengan tata kelola Katalog Unity.

Memilih konektor SharePoint Anda

Lakeflow Connect menawarkan dua konektor SharePoint pelengkap. Keduanya mengakses data dalam SharePoint, tetapi mendukung tujuan yang berbeda.

Pertimbangan Konektor SharePoint yang diatur Konektor SharePoint standar
Manajemen dan kustomisasi Konektor yang dikelola sepenuhnya.
Konektor sederhana dan pemeliharaan rendah untuk aplikasi perusahaan yang menyerap data ke tabel Delta dan menjaganya tetap sinkron dengan sumbernya. Lihat Penghubung Terkelola di Lakeflow Connect.
Buat alur penyerapan kustom dengan SQL, PySpark, atau Lakeflow Spark Declarative Pipelines menggunakan API batch dan streaming seperti read_files, , spark.readCOPY INTO, dan Auto Loader.
Menawarkan fleksibilitas untuk melakukan transformasi kompleks selama penyerapan, sekaligus memberi Anda tanggung jawab yang lebih besar untuk mengelola dan memelihara alur Anda.
Format keluaran Tabel seragam isi biner. Menyerap setiap file dalam format biner (satu file per baris), bersama dengan metadata file di
kolom tambahan
Tabel Delta terstruktur. Menyerap file terstruktur (seperti CSV dan Excel) sebagai tabel Delta. Juga dapat digunakan untuk menyerap
file yang tidak terstruktur dalam format biner.
Granularitas, pemfilteran, dan pilihan Tidak ada opsi untuk memilih tingkat subfolder atau file hari ini. Tidak ada pemfilteran berbasis pola.
Menyerap semua file dalam pustaka dokumen SharePoint yang ditentukan.
Granular dan kustom.
Pilihan berbasis URL untuk menyerap dari pustaka dokumen, subfolder, atau file individual. Juga mendukung pemfilteran berbasis pola menggunakan pathGlobFilter opsi .

Fitur utama

Konektor SharePoint standar menawarkan:

  • Penyerapan file terstruktur, semi terstruktur, dan tidak terstruktur
  • Penyerapan terperinci: Menyerap situs tertentu, subsitus, pustaka dokumen, folder, atau satu file
  • Penyerapan batch dan streaming menggunakan spark.read, Auto Loader, dan COPY INTO
  • Inferensi dan evolusi skema otomatis untuk format terstruktur dan semi terstruktur seperti CSV dan Excel
  • Penyimpanan kredensial aman dengan koneksi Katalog Unity
  • Pemilihan file dengan pencocokan pola menggunakan pathGlobFilter

Persyaratan

Untuk menyerap file dari SharePoint, Anda harus memiliki hal berikut:

  • Ruang kerja dengan Katalog Unity yang sudah diaktifkan.
  • CREATE CONNECTION hak istimewa untuk membuat koneksi SharePoint, atau hak istimewa yang sesuai untuk menggunakan yang sudah ada berdasarkan mode akses kluster Anda:
    • Mode Akses Khusus: MANAGE CONNECTION.
    • Mode Akses Standar: USE CONNECTION.
  • Komputasi yang menggunakan Databricks Runtime versi 17.3 LTS atau yang lebih baru.
  • Autentikasi OAuth diatur dengan cakupan izin Sites.Read.All atau Sites.Selected.
  • Fitur SharePoint Beta diaktifkan dari halaman Previews. Lihat Kelola pratinjau Azure Databricks.
  • Opsional: Aktifkan fitur Excel Beta untuk mengurai file Excel. Lihat file Excel Read.

Membuat koneksi

Buat koneksi Katalog Unity untuk menyimpan kredensial SharePoint Anda. Proses penyiapan koneksi dibagi antara konektor SharePoint standar dan terkelola.

Untuk instruksi penyiapan koneksi lengkap termasuk opsi autentikasi OAuth, lihat Gambaran umum penyiapan penyerapan SharePoint.

Membaca file dari SharePoint

Untuk membaca file, teruskan koneksi yang Anda buat menggunakan opsi databricks.connection dan URL yang menunjuk ke sumber daya SharePoint yang ingin Anda akses. URL yang Anda berikan menentukan cakupan penyerapan.

Jenis jalur berikut didukung pada Databricks Runtime 17.3 LTS dan yang lebih baru:

Jenis jalur Deskripsi
Situs Salin URL situs dari bilah alamat.
https://mytenant.sharepoint.com/sites/test-site
Subsitus Salin URL subsitus dari bilah alamat.
https://mytenant.sharepoint.com/sites/test-site/test-subsite
Perpustakaan Dokumen Buka pustaka dari konten Situs dan salin URL dari bilah alamat.
https://mytenant.sharepoint.com/sites/test-site/Shared%20Documents
https://mytenant.sharepoint.com/sites/test-site/custom-drive
Folder Buka folder dari konten Situs dan salin URL dari bilah alamat. Atau, buka panel Details folder di SharePoint dan klik ikon salin di samping Path.
https://mytenant.sharepoint.com/sites/test-site/Shared%20Documents/Forms/AllItems.aspx?id=%2Fsites...
https://mytenant.sharepoint.com/sites/test-site/custom-drive/test-folder
File Pilih file, klik menu luapan (...), dan pilih Pratinjau. Salin URL dari bilah alamat. Atau, buka panel Details file di SharePoint dan klik ikon salin di samping Path.
https://mytenant.sharepoint.com/sites/test-site/Shared%20Documents/Forms/AllItems.aspx?viewid=1a2b3c...
https://mytenant.sharepoint.com/sites/test-site/custom-drive/test-folder/test.csv

Databricks Runtime 18.3 dan yang lebih baru menambahkan dukungan untuk jenis jalur berikut:

Jenis jalur Deskripsi
Tenant Salin URL akar penyewa dari bilah alamat.
https://mytenant.sharepoint.com
Subsitus berlapis Salin URL subsitus dari bilah alamat.
https://mytenant.sharepoint.com/sites/test-site/subsite/nested-subsite/nested-nested-subsite
Bagikan tautan Pilih file atau folder, klik menu luapan (...), dan pilih Salin tautan. Databricks merekomendasikan pengaturan tautan berbagi agar tidak pernah kedaluwarsa.
https://mytenant.sharepoint.com/:i:/s/test-site/1A2B3C4D5E6F7G8H9I
Microsoft 365 untuk web (sebelumnya Office) Buka file di Microsoft 365 untuk web dan salin URL dari bilah alamat.
https://mytenant.sharepoint.com/:x:/r/sites/test-site/_layouts/15/Doc.aspx?sourcedoc=%1A2B...

Examples

Ada beberapa cara untuk membaca file menggunakan konektor SharePoint standar.

Stream SharePoint file menggunakan Auto Loader

Auto Loader menyediakan cara paling efisien untuk menyerap file terstruktur secara bertahap dari SharePoint. Ini secara otomatis mendeteksi file baru dan memprosesnya saat tiba. Ini juga dapat menyerap file terstruktur dan semi-terstruktur seperti CSV dan JSON dengan inferensi dan evolusi skema otomatis. Untuk detail tentang penggunaan Auto Loader, lihat Pola pemuatan data umum.

# 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")
)

Baca file SharePoint menggunakan pembacaan batch Spark

Contoh berikut menunjukkan cara menyerap file SharePoint di Python menggunakan fungsi spark.read.

# 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"))

Membaca file SharePoint menggunakan Spark SQL

Contoh berikut menunjukkan cara menyerap file SharePoint di SQL menggunakan fungsi read_files bernilai tabel. Untuk detail penggunaan read_files, lihat read_files fungsi bernilai tabel.

-- 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"
);

Penyerapan inkremental dengan COPY INTO

COPY INTO menyediakan pemuatan file inkremental idempotensi ke dalam tabel Delta. Untuk detail tentang COPY INTO penggunaan, lihat Pola pemuatan data umum menggunakan COPY INTO.

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'
  FORMAT_OPTIONS ('databricks.connection' = 'my_sharepoint_conn')
  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 ('databricks.connection' = 'my_sharepoint_conn', '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 ('databricks.connection' = 'my_sharepoint_conn', 'headerRows' = '1')
  COPY_OPTIONS ('mergeSchema' = 'true');

Muat file SharePoint di Pipeline Deklaratif Lakeflow Spark

Nota

Konektor SharePoint memerlukan Databricks Runtime 17.3 atau yang lebih baru. Untuk menggunakan konektor, atur "CHANNEL" = "PREVIEW" di pengaturan alur Anda. Untuk mendapatkan informasi lebih lanjut tentang pratinjau, lihat Rujukan properti alur.

Contoh berikut menunjukkan cara membaca file SharePoint menggunakan Auto Loader di Lakeflow Spark Declarative Pipelines.

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")

SQL

-- Incrementally ingest new PDF files
CREATE OR REFRESH STREAMING TABLE sharepoint_pdf_table
AS SELECT * FROM STREAM read_files(
  "https://mytenant.sharepoint.com/sites/Marketing/Shared%20Documents",
  format => "binaryFile",
  `databricks.connection` => "my_sharepoint_conn",
  pathGlobFilter => "*.pdf");

-- Incrementally ingest CSV files with automatic schema inference and evolution
CREATE OR REFRESH STREAMING TABLE sharepoint_csv_table
AS SELECT * FROM STREAM read_files(
  "https://mytenant.sharepoint.com/sites/Engineering/Data/IoT_Logs",
  format => "csv",
  `databricks.connection` => "my_sharepoint_conn",
  pathGlobFilter => "*.csv",
  "header", "true");

-- Read a specific Excel file from SharePoint in a materialized view
CREATE OR REFRESH MATERIALIZED VIEW sharepoint_excel_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
  `cloudFiles.schemaEvolutionMode` => "none"
);

Mengurai file yang tidak terstruktur

Saat menyerap file yang tidak terstruktur dari SharePoint (seperti PDF, dokumen Word, atau file PowerPoint) menggunakan konektor SharePoint standar dengan format binaryFile, konten file disimpan sebagai data biner mentah. Untuk menyiapkan file-file ini untuk beban kerja AI—seperti RAG, pencarian, klasifikasi, atau pemahaman dokumen—Anda dapat mengurai konten biner ke dalam output terstruktur dan dapat dikueri menggunakan ai_parse_document.

Contoh berikut menunjukkan cara mengurai dokumen yang tidak terstruktur yang disimpan dalam tabel Delta perunggu bernama documents, menambahkan kolom baru dengan konten yang diurai:

CREATE TABLE documents AS
SELECT * FROM read_files(
  "https://mytenant.sharepoint.com/sites/Marketing/Shared%20Documents",
  `databricks.connection` => "my_sharepoint_conn",
  format => "binaryFile",
  pathGlobFilter => "*.{pdf,docx}",
  schemaEvolutionMode => "none"
);
SELECT *, ai_parse_document(content) AS parsed_content
FROM documents;

Kolom parsed_content berisi teks, tabel, informasi tata letak, dan metadata yang diekstrak yang dapat langsung digunakan untuk alur AI hilir.

Penguraian bertahap dengan Alur Deklaratif Lakeflow Spark

Anda juga dapat menggunakan ai_parse_document dalam Alur Deklaratif Lakeflow Spark untuk mengaktifkan penguraian bertahap. Saat file baru mengalir dari SharePoint, file tersebut secara otomatis diurai sebagai pembaruan alur Anda.

Misalnya, Anda dapat menentukan tampilan materialisasi yang terus mengurai dokumen yang baru diserap:

CREATE OR REFRESH STREAMING TABLE sharepoint_documents_table
AS SELECT * FROM STREAM read_files(
  "https://mytenant.sharepoint.com/sites/Marketing/Shared%20Documents",
  format => "binaryFile",
  `databricks.connection` => "my_sharepoint_conn",
  pathGlobFilter => "*.{pdf,docx}");

CREATE OR REFRESH MATERIALIZED VIEW documents_parsed
AS
SELECT *, ai_parse_document(content) AS parsed_content
FROM sharepoint_documents_table;

Pendekatan ini memastikan bahwa:

  • Berkas SharePoint yang baru diserap diurai secara otomatis setiap kali tampilan terwujud diperbarui.
  • Output yang diurai tetap sinkron dengan data masuk
  • Alur AI lanjutan selalu beroperasi pada representasi dokumen terbaru

Pelajari selengkapnya: Lihat ai_parse_document untuk format dan opsi tingkat lanjut yang didukung.

Keterbatasan

Konektor SharePoint standar memiliki batasan berikut.

  • Tidak ada penyerapan multi-situs: Anda tidak dapat menyerap beberapa situs dengan kueri yang sama. Untuk menyerap dari dua situs, Anda harus menulis dua kueri terpisah.
  • Pemfilteran: Anda dapat menggunakan pathGlobFilter opsi untuk memfilter file menurut nama. Pemfilteran berbasis jalur folder tidak didukung.
  • Format yang tidak didukung: Daftar SharePoint dan halaman situs .aspx tidak didukung. Hanya file di Pustaka Dokumen yang didukung.
  • Menulis kembali ke server SharePoint tidak didukung.
  • Auto Loader cleanSource (menghapus atau mengarsipkan file di sumber setelah penyerapan) tidak didukung.

Langkah selanjutnya