Partager via


Ingérer des fichiers à partir de SharePoint

Important

Le connecteur SharePoint standard est en version bêta. Les administrateurs d’espace de travail peuvent contrôler l’accès à cette fonctionnalité à partir de la page Aperçus . Consultez Gérer les préversions d’Azure Databricks.

Découvrez comment ingérer des fichiers structurés, semi-structurés et non structurés de Microsoft SharePoint dans des tables Delta. Le connecteur SharePoint prend en charge l’ingestion incrémentielle de fichiers SharePoint à l’aide d’API de traitement par lots et de diffusion en continu, y compris Auto Loader, spark.read et COPY INTO, toutes étant régies par Unity Catalog.

Choisir votre connecteur SharePoint

Lakeflow Connect offre deux connecteurs SharePoint complémentaires. Ils accèdent tous deux aux données dans SharePoint, mais ils prennent en charge des objectifs distincts.

Considération Connecteur SharePoint managé Connecteur SharePoint standard
Gestion et personnalisation Connecteur complètement managé.
Connecteurs simples et à faible maintenance pour les applications d’entreprise qui ingèrent des données dans des tables Delta et les conservent synchronisées avec la source. Consultez Connecteurs gérés dans Lakeflow Connect.
Créez des pipelines d’ingestion personnalisés avec SQL, PySpark ou des pipelines déclaratifs Lakeflow Spark, en utilisant des API de traitement par lots et de diffusion en continu telles que read_files, spark.read, COPY INTO, et Auto Loader.
Offre la possibilité d’effectuer des transformations complexes pendant l’ingestion, tout en vous donnant une plus grande responsabilité pour la gestion et la maintenance de vos pipelines.
Format de sortie Table de contenu binaire uniforme. Ingère chaque fichier au format binaire (un fichier par ligne), ainsi que les métadonnées de fichier dans
colonnes supplémentaires.
Tables Delta structurées. Ingestion de fichiers structurés (comme CSV et Excel) en tant que tables Delta. Peut également être utilisé pour ingérer
fichiers non structurés au format binaire.
Granularité, filtrage et sélection Aujourd’hui, aucune sélection au niveau des sous-dossiers ou des fichiers. Aucun filtrage basé sur des modèles.
Ingère tous les fichiers dans la bibliothèque de documents SharePoint spécifiée.
Granulaire et personnalisé.
Sélection basée sur l’URL à ingérer à partir de bibliothèques de documents, de sous-dossiers ou de fichiers individuels. Prend également en charge le filtrage basé sur des modèles à l’aide de l’option pathGlobFilter .

Fonctionnalités clés

Le connecteur SharePoint standard offre les fonctionnalités suivantes :

  • Ingestion de fichiers structurés, semi-structurés et non structurés
  • Ingestion granulaire : ingérer un site spécifique, un sous-site, une bibliothèque de documents, un dossier ou un seul fichier
  • Ingestion par lots et en flux à l'aide de spark.read, du chargeur automatique, et de COPY INTO
  • Inférence de schéma automatique et évolution pour les formats structurés et semi-structurés tels que CSV et Excel
  • Sécuriser le stockage des informations d’identification avec une connexion de catalogue Unity
  • Sélection de fichiers avec correspondance de modèle à l’aide de pathGlobFilter

Spécifications

Pour ingérer des fichiers à partir de SharePoint, vous devez disposer des éléments suivants :

  • Un espace de travail avec le catalogue Unity activé
  • CREATE CONNECTION privilèges pour créer une connexion SharePoint (ou USE CONNECTION pour utiliser une connexion existante)
  • Calcul qui utilise Databricks Runtime version 17.3 LTS ou ultérieure
  • Authentification OAuth configurée avec la plage d'autorisations Sites.Read.All
  • La fonctionnalité Bêta de SharePoint est activée à partir de la page Aperçus . Consultez Gérer les préversions d’Azure Databricks
  • Facultatif : activez la fonctionnalité Bêta d’Excel pour analyser les fichiers Excel. Voir Lire les fichiers Excel

Créer la connexion

Créez une connexion de catalogue Unity pour stocker vos informations d’identification SharePoint. Le processus d’installation de la connexion est partagé entre les connecteurs SharePoint standard et gérés.

Pour obtenir des instructions complètes sur la configuration de la connexion, notamment les options d’authentification OAuth, consultez Vue d’ensemble de la configuration de l’ingestion SharePoint.

Lire des fichiers à partir de SharePoint

Pour lire des fichiers à partir de SharePoint à l’aide de Spark, spécifiez la connexion que vous avez créée à l’étape précédente à l’aide de l’option databricks.connection de source de données et fournissez l’URL de la ressource SharePoint à accéder. Cette URL peut faire référence à un fichier spécifique, un dossier, une bibliothèque de documents (lecteur) ou un site entier. Voici quelques exemples :

  • 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

Examples

Recherchez des exemples de code pour lire des fichiers à l’aide du connecteur SharePoint standard.

Diffuser des fichiers SharePoint à l’aide du chargeur automatique

Le chargeur automatique offre le moyen le plus efficace d’ingérer de manière incrémentielle des fichiers structurés à partir de SharePoint. Il détecte automatiquement les nouveaux fichiers et les traite à mesure qu’ils arrivent. Il peut également ingérer des fichiers structurés et semi-structurés tels que CSV et JSON avec l’inférence et l’évolution automatiques du schéma. Pour plus d’informations sur l’utilisation du chargeur automatique, consultez Modèles de chargement de données courants.

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

Lire des fichiers SharePoint à l’aide de la lecture par lots Spark

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

Lire des fichiers SharePoint à l’aide de Spark SQL

L’exemple suivant montre comment ingérer des fichiers SharePoint dans SQL à l’aide read_files de la fonction table. Pour plus d’informations sur read_files l’utilisation, consultez read_files la fonction valeur de table.

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

Ingestion incrémentielle avec COPY INTO

COPY INTO fournit un chargement incrémentiel idempotent de fichiers dans une table Delta. Pour plus d'informations sur l'utilisation de COPY INTO, consultez Modèles de chargement de données courants à l'aide de 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');

Ingérer des fichiers SharePoint dans des pipelines déclaratifs Spark Lakeflow

Note

SharePoint Connector nécessite Databricks Runtime 17.3 ou version ultérieure. Cette option n’est pas encore disponible dans la version des pipelines déclaratifs Spark Lakeflow. Pour voir les versions de Databricks Runtime utilisées avec une version des pipelines déclaratifs Spark Lakeflow, consultez les notes de publication de cette version.

Les exemples suivants montrent comment lire des fichiers SharePoint à l’aide du chargeur automatique dans les pipelines déclaratifs Spark Lakeflow :

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

Analyser des fichiers non structurés

Lors de l’ingestion de fichiers non structurés à partir de SharePoint (tels que des fichiers PDF, documents Word ou PowerPoint) à l’aide du connecteur SharePoint standard avec binaryFile format, le contenu du fichier est stocké sous forme de données binaires brutes. Pour préparer ces fichiers pour les charges de travail IA, telles que RAG, la recherche, la classification ou la compréhension des documents, vous pouvez analyser le contenu binaire en sortie structurée et interrogeable à l’aide ai_parse_documentde .

L’exemple suivant montre comment analyser des documents non structurés stockés dans une table Delta bronze nommée documents, en ajoutant une nouvelle colonne avec du contenu analysé :

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;

La parsed_content colonne contient du texte extrait, des tables, des informations de disposition et des métadonnées qui peuvent être utilisées directement pour les pipelines IA en aval.

Analyse incrémentielle avec les pipelines déclaratifs de Spark Lakeflow

Vous pouvez également utiliser ai_parse_document dans les pipelines déclaratifs Spark Lakeflow pour activer l’analyse incrémentielle. À mesure que les nouveaux fichiers sont diffusés à partir de SharePoint, ils sont automatiquement analysés en tant que mises à jour de votre pipeline.

Par exemple, vous pouvez définir une vue matérialisée qui analyse en continu les documents nouvellement ingérés :

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;

Cette approche garantit que :

  • Les fichiers SharePoint récemment ingérés sont analysés automatiquement chaque fois que l’affichage matérialisé est actualisé
  • Les sorties analysées restent synchronisées avec les données entrantes
  • Les pipelines IA en aval fonctionnent toujours sur des représentations de documents à jour

En savoir plus : consultez ai_parse_document pour connaître les formats pris en charge et les options avancées.

Limites

Le connecteur SharePoint standard présente les limitations suivantes :

  • Aucune importation multisite : vous ne pouvez pas importer plusieurs sites à l'aide de la même requête. Pour ingérer à partir de deux sites, vous devez écrire deux requêtes distinctes.
  • Filtrage : vous pouvez utiliser l’option pathGlobFilter pour filtrer les fichiers par nom. Le filtrage basé sur le chemin d’accès au dossier n’est pas pris en charge.
  • Formats non pris en charge : les listes SharePoint et les pages de site .aspx ne sont pas prises en charge. Seuls les fichiers des bibliothèques de documents sont pris en charge.
  • L'écriture sur un serveur SharePoint n'est pas prise en charge.
  • Le chargeur cleanSource automatique (suppression ou archivage de fichiers à la source après l’ingestion) n’est pas pris en charge.

Étapes suivantes