Delen via


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 aanvullende SharePoint connectors. Ze hebben beide toegang tot gegevens in SharePoint, maar ze ondersteunen afzonderlijke doelen.

Overweging Beheerde SharePoint-connector Standard SharePoint-connector
Beheer en aanpassing Een volledig beheerde connector.
Eenvoudige connectors met weinig onderhoud voor bedrijfstoepassingen die gegevens opnemen in Delta-tabellen en deze gesynchroniseerd houden met de bron. Zie Managed connectors in Lakeflow Connect.
Bouw aangepaste opnamepijplijnen met SQL, PySpark of Lakeflow Spark-declaratieve pijplijnen met behulp van batch- en streaming-API's zoalsread_files, spark.readCOPY INTOen Automatisch 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.
Uitvoerindeling Tabel met uniforme binaire inhoud. Neemt elk bestand op in binaire indeling (één bestand per rij), samen met metagegevens van bestanden in
extra kolommen.
Gestructureerde Delta-tabellen. Hiermee worden gestructureerde bestanden (zoals CSV en Excel) opgenomen als Delta-tabellen. Kan ook worden gebruikt om op te nemen
ongestructureerde bestanden in binaire indeling.
Granulariteit, filteren en selectie Vandaag is er geen selectie van submappen of bestanden. Geen filter op basis van een patroon.
Hiermee worden alle bestanden opgenomen in de opgegeven SharePoint documentbibliotheek.
Granulair en aangepast.
Selectie op basis van URL's om te importeren uit documentbibliotheken, submappen of afzonderlijke bestanden. Ondersteunt ook filteren op basis van patronen met behulp van de pathGlobFilter optie.

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 Read Excel files.

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 uit SharePoint wilt lezen met behulp van Spark, geeft u de verbinding op die u in de vorige stap hebt gemaakt met behulp van de optie databricks.connection gegevensbron en geeft u de URL op van de SharePoint resource die u wilt openen. Deze URL kan verwijzen naar een specifiek bestand, een map, een documentbibliotheek (drive) of een hele site. Voorbeelden zijn:

  • 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

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

Laad SharePoint-bestanden in declaratieve Lakeflow Spark-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 Spark-declaratieve 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 Spark-declaratieve pijplijnen

U kunt ook declaratieve pijplijnen van Lakeflow Spark 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.

Beperkingen

De standaardconnector SharePoint heeft de volgende beperkingen.

  • Geen opname van meerdere sites: u kunt niet meerdere sites opnemen met dezelfde query. Als u gegevens van twee sites wilt opnemen, moet u twee afzonderlijke query's schrijven.
  • Filteren: U kunt de pathGlobFilter optie gebruiken om bestanden op naam te filteren. Filteren op basis van mappaden wordt niet ondersteund.
  • Niet-ondersteunde indelingen: 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