Bestanden opnemen uit SharePoint

Belangrijk

Deze functie bevindt zich in de bètaversie. Werkruimtebeheerders kunnen de toegang tot deze functie beheren vanaf de pagina Previews . Zie Azure Databricks-previews beheren.

:::opmerking Naleving

De SharePoint-connector ondersteunt het gebruik in werkruimten met de Verbeterde beveiligings- en nalevingsinstellingen configureren ingeschakeld.

:::

U kunt gestructureerde, semi-gestructureerde en ongestructureerde bestanden uit Microsoft SharePoint opnemen in Delta-tabellen. De SharePoint-connector ondersteunt incrementele opname van SharePoint bestanden met behulp van batch- en streaming-API's, waaronder AutoLoader, spark.read en COPY INTO, allemaal met Unity Catalog-governance.

Kies uw SharePoint-connector

Lakeflow Connect biedt twee SharePoint connectors. Ze hebben beide toegang tot gegevens in SharePoint, maar verschillen in hun beheerniveau.

Connector Description
Beheerde SharePoint-connector Een volledig beheerde connector. Eenvoudige connector voor weinig onderhoud voor bedrijfstoepassingen die gegevens opnemen in Delta-tabellen en deze gesynchroniseerd houden met de bron.
Standard SharePoint-connector Bouw aangepaste opnamepijplijnen met SQL-, PySpark- of Lakeflow-pijplijnen met behulp van batch- en streaming-API's zoals read_files, spark.readen COPY INTOAutomatisch laden. Biedt de flexibiliteit om tijdens invoer complexe transformaties uit te voeren, terwijl u meer verantwoordelijkheid hebt voor het beheren en onderhouden van uw datapijplijnen.

Tip

Databricks raadt de beheerde SharePoint-connector aan voor de meeste gebruiksvoorbeelden. Het biedt een volledig beheerde ervaring met automatische incrementele opname, brede indelingsondersteuning en flexibele selectie van bestanden en mappen.

Belangrijkste kenmerken

De standaard SharePoint connector biedt:

  • Opname van gestructureerde, semi-gestructureerde en ongestructureerde bestanden
  • Granulaire inname: een specifieke site, een subsite, een documentbibliotheek, een map of één bestand opnemen
  • Batch- en streamingopname met behulp van spark.read, Automatisch laden en COPY INTO
  • Automatische schemadeductie en evolutie voor gestructureerde en semi-gestructureerde indelingen zoals CSV en Excel
  • Beveiligde opslag van inloggegevens met een Unity Catalog-verbinding
  • Bestandsselectie met patroonkoppeling met behulp van pathGlobFilter

Requirements

Als u bestanden uit SharePoint wilt opnemen, moet u het volgende hebben:

  • Een werkruimte waarvoor Unity Catalog is ingeschakeld.
  • CREATE CONNECTION bevoegdheden voor het maken van een SharePoint verbinding of de juiste bevoegdheid om een bestaande te gebruiken op basis van uw clustertoegangsmodus:
    • Toegewezen toegangsmodus: MANAGE CONNECTION.
    • Standaardtoegangsmodus: USE CONNECTION.
  • Compute die gebruikmaakt van Databricks Runtime versie 17.3 LTS of hoger.
  • OAuth-verificatie ingesteld met het machtigingsbereik Sites.Read.All of Sites.Selected.
  • De SharePoint bètafunctie is ingeschakeld op de pagina Voorbeelden. Zie Azure Databricks-previews beheren.
  • Optioneel: schakel de functie Excel Bèta in voor het parseren van Excel bestanden. Zie Excel-bestanden lezen en streamen.

De verbinding maken

Maak een Unity Catalog-verbinding om uw SharePoint referenties op te slaan. Het installatieproces voor verbindingen wordt gedeeld tussen zowel de standaard- als de beheerde SharePoint-connectors.

Zie Overzicht van de installatie van SharePoint-invoer voor volledige instructies voor het instellen van verbindingen, waaronder OAuth-authenticatieopties.

Bestanden lezen van SharePoint

Als u bestanden wilt lezen, geeft u de verbinding door die u hebt gemaakt met behulp van de optie databricks.connection en een URL die verwijst naar de SharePoint resource die u wilt openen. De URL die u opgeeft, bepaalt het bereik van de opname.

De volgende padtypen worden ondersteund in Databricks Runtime 17.3 LTS en hoger:

Padtype Description
Site Kopieer de site-URL uit de adresbalk.
https://mytenant.sharepoint.com/sites/test-site
Subsite Kopieer de URL van de subsite uit de adresbalk.
https://mytenant.sharepoint.com/sites/test-site/test-subsite
Documentbibliotheek Open de bibliotheek vanuit site-inhoud en kopieer de URL uit de adresbalk.
https://mytenant.sharepoint.com/sites/test-site/Shared%20Documents
https://mytenant.sharepoint.com/sites/test-site/custom-drive
Folder Open de map vanuit site-inhoud en kopieer de URL uit de adresbalk. U kunt ook het deelvenster Details van de map openen in SharePoint en op het kopieerpictogram naast Path klikken.
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
Bestand Selecteer het bestand, klik op het overloopmenu (...) en selecteer Voorbeeld. Kopieer de URL van de adresbalk. U kunt ook het deelvenster Details van het bestand openen in SharePoint en op het kopieerpictogram naast Path klikken.
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 LTS en later voegt ondersteuning toe voor de volgende padtypen:

Padtype Description
Geneste subsite Kopieer de URL van de subsite uit de adresbalk.
https://mytenant.sharepoint.com/sites/test-site/subsite/nested-subsite/nested-nested-subsite
Koppeling delen Selecteer het bestand of de map, klik op het overloopmenu (...) en selecteer Koppeling kopiëren. Databricks raadt aan om de sharekoppeling zo in te stellen dat deze nooit verloopt.
https://mytenant.sharepoint.com/:i:/s/test-site/1A2B3C4D5E6F7G8H9I
Microsoft 365 voor internet (voorheen Office) Open het bestand in Microsoft 365 voor het web en kopieer de URL uit de adresbalk.
https://mytenant.sharepoint.com/:x:/r/sites/test-site/_layouts/15/Doc.aspx?sourcedoc=%1A2B...

Databricks Runtime 19 en hoger voegt ondersteuning toe voor de volgende padtypen:

Padtype Description
Tenant Kopieer de hoofd-URL van de tenant uit de adresbalk.
https://mytenant.sharepoint.com

Voorbeelden

Er zijn een aantal manieren om bestanden te lezen met behulp van de standaardconnector SharePoint.

Stream SharePoint-bestanden met behulp van autolaadprogramma

Auto Loader biedt de meest efficiënte manier om gestructureerde bestanden incrementeel op te nemen uit SharePoint. Er worden automatisch nieuwe bestanden gedetecteerd en verwerkt deze zodra ze binnenkomen. Het kan ook gestructureerde en semi-gestructureerde bestanden zoals CSV en JSON opnemen met automatische schemadeductie en evolutie. Zie Algemene patronen voor het laden van gegevens voor meer informatie over het gebruik van automatisch laadprogramma's.

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

Lees SharePoint-bestanden met Spark-batchlezen

In het volgende voorbeeld ziet u hoe u SharePoint bestanden opneemt in Python met behulp van de functie 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"))

Read SharePoint-bestanden met Spark SQL

In het volgende voorbeeld ziet u hoe u SharePoint bestanden in SQL opneemt met behulp van de functie read_files tabelwaarde. Zie de tabelwaardige functie voor meer informatie over het gebruik van read_filesread_files.

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

Incrementele opname met COPY INTO

COPY INTO biedt idempotente incrementele bestandsoverdracht in een Delta-tabel. Voor details over COPY INTO gebruik, zie Algemene patronen voor het laden van gegevens met behulp van 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');

SharePoint-bestanden opnemen in Lakeflow-pijplijnen

Opmerking

Voor de SharePoint-connector is Databricks Runtime 17.3 of hoger vereist. Als u de connector wilt gebruiken, stelt u "CHANNEL" = "PREVIEW" in uw pijplijninstellingen in. Zie De referentie voor pijplijneigenschappen voor meer informatie over previews.

In de volgende voorbeelden ziet u hoe u SharePoint bestanden leest met behulp van Auto Loader in Lakeflow-pijplijnen.

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

Ongestructureerde bestanden parseren

Bij het importeren van ongestructureerde bestanden uit SharePoint (zoals PDF-bestanden, Word-documenten of PowerPoint-bestanden) met de standaard SharePoint-connector in binaryFile-formaat, wordt de bestandsinhoud opgeslagen als onbewerkte binaire gegevens. Als u deze bestanden wilt voorbereiden voor AI-workloads, zoals RAG, zoeken, classificatie of documentbegrip, kunt u de binaire inhoud parseren in gestructureerde, doorzoekbare uitvoer met behulp van ai_parse_document.

In het volgende voorbeeld ziet u hoe u ongestructureerde documenten kunt parseren die zijn opgeslagen in een bronzen Delta-tabel met de naam documents, waarbij een nieuwe kolom met geparseerde inhoud wordt toegevoegd:

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;

De parsed_content kolom bevat geëxtraheerde tekst, tabellen, indelingsgegevens en metagegevens die rechtstreeks kunnen worden gebruikt voor downstream AI-pijplijnen.

Incrementeel parseren met Lakeflow-pijplijnen

U kunt ook binnen Lakeflow-pijplijnen gebruiken ai_parse_document om incrementele parsering in te schakelen. Wanneer nieuwe bestanden vanuit SharePoint binnenkomen, worden ze automatisch verwerkt terwijl uw pijplijn geüpdatet wordt.

U kunt bijvoorbeeld een gerealiseerde weergave definiëren waarmee nieuw opgenomen documenten continu worden geparseerd:

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;

Deze aanpak zorgt ervoor dat:

  • Nieuw opgenomen SharePoint bestanden worden automatisch geparseerd wanneer de gerealiseerde weergave wordt vernieuwd
  • Geparseerde uitvoer blijft gesynchroniseerd met binnenkomende gegevens
  • Downstream AI-pijplijnen werken altijd met actuele documentweergaven

Meer informatie: Zie ai_parse_document voor ondersteunde indelingen en geavanceerde opties.

kolom met metagegevens SharePoint

Belangrijk

Deze functie bevindt zich in Private Preview. Neem contact op met uw Azure Databricks-contactpersoon om het te proberen.

De kolom _sharepoint_metadata is een verborgen kolom met metagegevens die toegang biedt tot SharePoint-specifieke eigenschappen van opgenomen bestanden, afkomstig uit de Microsoft Graph driveItem-resource. Hiervoor is Databricks Runtime 18 LTS of hoger vereist en is deze beschikbaar voor alle bestandsindelingen bij het lezen vanuit SharePoint. Als u de _sharepoint_metadata kolom in het geretourneerde DataFrame wilt opnemen, moet u deze expliciet selecteren in de leesquery.

Als de gegevensbron een kolom bevat met de naam _sharepoint_metadata, wordt de naam van de kolom SharePoint metagegevens gewijzigd in __sharepoint_metadata (met een extra voorlooponderstrepingsteken) om te ontdubbelen. Er worden extra onderstrepingstekens toegevoegd totdat de naam uniek is.

Algemene bestandsmetagegevens, zoals het bestandspad of de grootte, kunnen worden opgevraagd met behulp van de _metadata kolom. Zie kolom met metagegevens van bestandvoor meer informatie.

Schema

De _sharepoint_metadata kolom is een STRUCT en bevat de volgende velden. Alle velden zijn null-baar.

Naam Typ Description Example
item_id STRING De driveItem-id van het item. 01OMQ3MNLH42C5J675CBEI5CRK7SPKQUTZ
site_id STRING De id van de SharePoint site die het item bevat. mytenant.sharepoint.com,69dc7b12-f92c-498d-9514-596b793a1f77,c6c1db8d-2b8d-48a1-a549-394b63d74725
drive_id STRING De ID van de schijf die het item bevat. b!EnvcaSz5jUmVFFlreTofd43bwcaNK6FIpUk5S2PXRyWTvQraaWQkSpwQEgThHDS-
drive_type STRING Het type schijf, bijvoorbeeld documentLibrary voor SharePoint-bibliotheken of business voor OneDrive voor Bedrijven. documentLibrary
parent_id STRING De driveItem-id van de bovenliggende map. 01OMQ3MNN6Y2GOVW7725BZO354PWSELRRZ
parent_name STRING De naam van de bovenliggende map. Shared Documents
parent_path STRING Het schijfgerelateerde pad van de bovenliggende map. /drives/b!EnvcaSz5.../root:
web_url STRING De browser-URL van het item op SharePoint. https://mytenant.sharepoint.com/sites/TestSite/_layouts/15/Doc.aspx?sourcedoc=...
mime_type STRING Het MIME-type van het item. application/vnd.ms-excel
created_by_email STRING Het e-mailadres van de gebruiker die het item heeft gemaakt. alice@example.onmicrosoft.com
created_by_name STRING De weergavenaam van de gebruiker die het item heeft gemaakt. Alice Example
created_timestamp TIMESTAMP Het tijdstip waarop het item is gemaakt. 2025-12-03 13:33:12
last_modified_by_email STRING Het e-mailadres van de gebruiker die het item het laatst heeft gewijzigd. alice@example.onmicrosoft.com
last_modified_by_name STRING De weergavenaam van de gebruiker die het item het laatst heeft gewijzigd. Alice Example
etag STRING De ETag van het item. Wijzigingen wanneer het item of een van de metagegevens wordt gewijzigd. "{D485E667-FDFB-4810-8E8A-2AFC9EA85279},1"
ctag STRING De wijzigingstag van het item. Wijzigingen alleen wanneer de inhoud van het item wordt gewijzigd. "c:{D485E667-FDFB-4810-8E8A-2AFC9EA85279},1"
beschrijving STRING De beschrijving van het item, indien ingesteld. Q4 financial report
aanvullende_metadata VARIANT Alle overige velden van driveItem die worden geretourneerd door Microsoft Graph maar die hierboven niet zijn geëxtraheerd. {"shared":{"scope":"users"},...}

Opmerking

Het additional_metadata veld wordt geretourneerd als VARIANT. Zie VARIANT type.

Voorbeelden

In de volgende voorbeelden ziet u hoe u de _sharepoint_metadata kolom in een leesquery opneemt, specifieke velden in de kolom selecteert en waarden uit het additional_metadataVARIANT veld extraheert.

Python

df = (spark.read
        .format("binaryFile")
        .option("databricks.connection", "my_sharepoint_conn")
        .load("https://mytenant.sharepoint.com/sites/Marketing/Shared%20Documents")
        .select("*", "_metadata", "_sharepoint_metadata"))

SQL

SELECT *, _sharepoint_metadata
FROM read_files(
  "https://mytenant.sharepoint.com/sites/Marketing/Shared%20Documents",
  `databricks.connection` => "my_sharepoint_conn",
  format => "binaryFile"
);

Selecteer specifieke velden in de _sharepoint_metadata struct:

df = (spark.read
        .format("binaryFile")
        .option("databricks.connection", "my_sharepoint_conn")
        .load("https://mytenant.sharepoint.com/sites/Marketing/Shared%20Documents")
        .select("_sharepoint_metadata.item_id", "_sharepoint_metadata.etag"))

Extraheer waarden uit het additional_metadataVARIANT veld met behulp van de :: cast-operator:

SELECT
  *,
  _sharepoint_metadata.additional_metadata:shared:scope::STRING AS shared_scope
FROM read_files(
  "https://mytenant.sharepoint.com/sites/Marketing/Shared%20Documents",
  `databricks.connection` => "my_sharepoint_conn",
  format => "binaryFile"
);

Beperkingen

De standaardconnector SharePoint heeft de volgende beperkingen.

  • U kunt niet meerdere sites opnemen met dezelfde query. Als u gegevens van twee sites wilt opnemen, moet u twee afzonderlijke query's schrijven.
  • U kunt de pathGlobFilter optie gebruiken om bestanden op naam te filteren. Filteren op basis van mappaden wordt niet ondersteund.
  • SharePoint lijsten en .aspx sitepagina's worden niet ondersteund. Alleen bestanden in documentbibliotheken worden ondersteund.
  • Terugschrijven naar een SharePoint-server wordt niet ondersteund.
  • Automatisch laden cleanSource (bestanden bij de bron verwijderen of archiveren na opname) wordt niet ondersteund.

Volgende stappen