Ingérer des fichiers depuis SharePoint
Bêta
Cette fonctionnalité est en Bêta. Les administrateurs du Workspace peuvent contrôler l'accès à cette fonctionnalité à partir de la page Previews . Consultez Gérer les aperçus Databricks.
:::note Conformité
Le connecteur SharePoint prend en charge l'utilisation dans les Workspace avec la configuration des paramètres de sécurité et de conformité améliorés activée.
:::
Vous pouvez 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 des APIs batch et streaming, y compris Auto Loader, spark.read et COPY INTO, le tout avec la gouvernance Unity Catalog.
Choisissez votre connecteur SharePoint
Lakeflow Connect propose deux connecteurs SharePoint. Ils accèdent tous deux aux données dans SharePoint, mais diffèrent par leur niveau de gestion.
Connecteur | Description |
|---|---|
Un connecteur entièrement managé. Connecteur simple et à faible maintenance pour les applications d'entreprise qui ingère des données dans les tables Delta et les maintient synchronisées avec la source. | |
Connecteur SharePoint standard | Créez des pipelines d'ingestion personnalisés avec SQL, PySpark ou des LakeFlow Pipelines utilisant des APIs batch et de streaming, tels que |
Databricks recommande le connecteur SharePoint géré pour la plupart des cas d'usage. Elle offre une expérience entièrement managée avec une ingestion incrémentielle automatique, une prise en charge étendue des formats et une sélection flexible des fichiers et des dossiers.
Fonctionnalités clés
Le connecteur SharePoint standard propose :
- Ingestion de fichiers structurés, semi-structurés et non structurés
- Ingestion granulaire : Ingestion d'un site spécifique, d'un sous-site, d'une bibliothèque de documents, d'un dossier ou d'un fichier unique
- Ingestion par batch et en streaming à l'aide de
spark.read, d'Auto Loader etCOPY INTO - Inférence et évolution automatiques des schémas pour les formats structurés et semi-structurés tels que CSV et Excel
- Stockage sécurisé des informations d'identification avec une connexion Unity Catalog
- Sélection de fichiers avec correspondance de modèles à l'aide de
pathGlobFilter
Exigences
Pour ingérer des fichiers depuis SharePoint, vous devez disposer des éléments suivants :
-
Un Workspace avec Unity Catalog activé.
-
CREATE CONNECTIONprivilèges pour créer une connexion SharePoint, ou le privilège approprié pour en utiliser une existante en fonction de votre mode d'accès au cluster:- Mode d’accès dédié :
MANAGE CONNECTION. - Mode d'accès standard :
USE CONNECTION.
- Mode d’accès dédié :
-
Compute qui utilise Databricks Runtime version 17.3 LTS ou ultérieure.
-
Authentification OAuth configurée avec le
Sites.Read.Allou leSites.Selectedchamp d'application d'autorisation. -
La fonctionnalité Bêta de SharePoint est activée depuis la page Aperçus . Voir Gérer les aperçus Databricks.
-
Facultatif : activez la fonctionnalité bêta Excel pour l'analyse des fichiers Excel. Consultez Lire et Stream des fichiers Excel.
Créer la connexion
Créez une connexion Unity Catalog pour stocker vos identifiants SharePoint. Le processus de configuration de la connexion est partagé entre les connecteurs SharePoint standard et gérés.
Pour les instructions complètes de configuration de la connexion, y compris les options d'authentification OAuth, consultez Présentation de la configuration de l'ingestion SharePoint.
Lire les fichiers de SharePoint
Pour lire des fichiers, transmettez la connexion que vous avez créée à l’aide de l’option databricks.connection et une URL qui pointe vers la ressource SharePoint à laquelle vous souhaitez accéder. L’URL que vous fournissez détermine le périmètre de l’ingestion.
Les types de chemins suivants sont pris en charge sur Databricks Runtime 17.3 LTS et versions ultérieures :
Type de chemin | Description |
|---|---|
Site | Copiez l'URL du site à partir de la barre d'adresse.
|
Sous-site | Copiez l’URL du sous-site depuis la barre d’adresse.
|
Bibliothèque de documents | Ouvrez la bibliothèque depuis Contenu du site et copiez l'URL de la barre d'adresse.
|
Dossier | Ouvrez le dossier à partir de **Contenu du site** et copiez l'URL depuis la barre d'adresse. Vous pouvez également ouvrir le volet Détails du dossier dans SharePoint et cliquer sur l'icône de copie à côté de Chemin .
|
Fichier | Sélectionnez le fichier, cliquez sur le menu de débordement(**...**), puis sélectionnez **Aperçu**. Copiez l'URL de la barre d'adresse. Sinon, ouvrez le volet **Détails** du fichier dans SharePoint et cliquez sur l'icône de copie à côté de **Chemin d'accès**.
|
Databricks Runtime 18 et versions ultérieures prend en charge les types de chemin d'accès suivants :
Type de chemin | Description |
|---|---|
Sous-site imbriqué | Copiez l’URL du sous-site depuis la barre d’adresse.
|
Partager le Link | Sélectionnez le fichier ou le dossier, cliquez sur le menu de débordement ( ... ), puis sélectionnez Copier le link . Databricks recommande de configurer le Link de partage pour qu'il n'expire jamais.
|
Microsoft 365 pour le web (anciennement Office) | Ouvrez le fichier dans Microsoft 365 pour le web et copiez l'URL de la barre d'adresse.
|
Databricks Runtime 19 et versions ultérieures ajoute la prise en charge des types de chemins suivants :
Type de chemin | Description |
|---|---|
tenant | Copiez l'URL racine du tenant depuis la barre d'adresse.
|
Exemples
Il existe plusieurs façons de lire des fichiers en utilisant le connecteur SharePoint standard.
Stream des fichiers SharePoint à l'aide d'Auto Loader
Auto Loader 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 inférence et évolution automatiques du schéma. Pour plus de détails sur l'utilisation d'Auto Loader, consultez les modèles courants de chargement de données.
# 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 les fichiers SharePoint à l'aide de la lecture batch Spark
L'exemple suivant montre comment ingérer des fichiers SharePoint en Python à l'aide de la fonction 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"))
Lire les fichiers SharePoint à l'aide de Spark SQL
L'exemple suivant montre comment ingérer des fichiers SharePoint dans SQL à l'aide de la fonction à valeur de table read_files. Pour plus de détails sur l'utilisation de read_files, consultez la fonction à valeur de tableread_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"
);
Ingestion incrémentielle avec COPY INTO
COPY INTO assure le chargement incrémental idempotent de fichiers dans une table Delta. Pour plus de détails sur l'utilisation de COPY INTO, consultez Modèles courants de chargement de données à 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 les Lakeflow pipelines
Le connecteur SharePoint nécessite Databricks Runtime 17.3 ou une version ultérieure. Pour utiliser le connecteur, définissez "CHANNEL" = "PREVIEW" dans vos paramètres de pipeline. Pour plus d’informations sur les aperçus, consultez la référence des propriétés du pipeline.
Les exemples suivants montrent comment lire des fichiers SharePoint à l'aide d'Auto Loader dans les LakeFlow Pipelines.
- Python
- SQL
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")
-- 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 les fichiers non structurés
Lors de l'ingestion de fichiers non structurés à partir de SharePoint (tels que des fichiers PDF, des documents Word ou des fichiers PowerPoint) à l'aide du connecteur SharePoint standard au format binaryFile, le contenu des fichiers est stocké sous forme de données binaires brutes. Pour préparer ces fichiers pour les charges de travail d'IA — telles que le RAG, la recherche, la classification ou la compréhension de documents —, vous pouvez analyser le contenu binaire en une sortie structurée et interrogeable à l'aide de ai_parse_document.
L'exemple suivant montre comment parser des documents non structurés stockés dans une table Delta bronze nommée documents, en ajoutant une nouvelle colonne avec le contenu parsé :
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 colonne parsed_content contient du texte extrait, des tables, des informations de Layout et des métadonnées qui peuvent être directement utilisées pour les pipelines d'IA en aval.
Analyse incrémentielle avec LakeFlow Pipelines
Vous pouvez également utiliser ai_parse_document dans les LakeFlow Pipelines pour activer l’analyse incrémentielle. À mesure que de nouveaux fichiers arrivent en continu depuis SharePoint, ils sont automatiquement analysés lorsque votre pipeline se met à jour.
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 nouvellement ingérés sont analysés automatiquement chaque fois que la vue matérialisée refresh.
- Les sorties analysées restent synchronisées avec les données entrantes
- Les pipelines d'IA en aval opèrent toujours sur des représentations de documents à jour.
En savoir plus : voir ai_parse_document pour connaître les formats pris en charge et les options avancées.
Colonne de métadonnées SharePoint
Aperçu
Cette fonctionnalité est en préversion privée. Pour l'essayer, veuillez contacter votre interlocuteur Databricks.
La colonne _sharepoint_metadata est une colonne de métadonnées masquée qui permet d'accéder aux propriétés SharePoint spécifiques des fichiers ingérés, provenant de la ressource driveItem de Microsoft Graphe. Il nécessite Databricks Runtime 18 ou version ultérieure et est disponible pour tous les formats de fichiers lors de la lecture à partir de SharePoint. Pour inclure la colonne _sharepoint_metadata dans le DataFrame renvoyé, vous devez la sélectionner explicitement dans la query de lecture.
Si la source de données contient une colonne nommée _sharepoint_metadata, la colonne de métadonnées SharePoint est renommée en __sharepoint_metadata (avec un trait de soulignement supplémentaire) pour dédupliquer. Des traits de soulignement supplémentaires sont ajoutés jusqu'à ce que le nom soit unique.
Les métadonnées de fichier courantes, telles que le chemin du fichier ou la taille, peuvent être interrogées à l'aide de la colonne _metadata. Pour plus d'informations, consultez la colonne de métadonnées du fichier.
Schéma
La colonne _sharepoint_metadata est un STRUCT contenant les champs suivants. Tous les champs peuvent être nuls.
Nom | Type | Description | Exemple |
|---|---|---|---|
item_id |
| L'ID du driveItem de l'élément. |
|
site_id |
| L’ID du site SharePoint qui contient l’élément. |
|
drive_id |
| L'ID du lecteur qui contient l'élément. |
|
drive_type |
| Le type de lecteur, par exemple |
|
parent_id |
| L'ID driveItem du dossier parent. |
|
parent_name |
| Le nom du dossier parent. |
|
parent_path |
| Le chemin relatif au lecteur du dossier parent. |
|
web_url |
| L'URL du navigateur de l'élément sur SharePoint. |
|
mime_type |
| Le type MIME de l'élément. |
|
created_by_e-mail |
| L'e-mail de l'utilisateur qui a créé l'élément. |
|
Nom du créateur |
| Le nom d'affichage de l'utilisateur ayant créé l'élément. |
|
created_timestamp |
| L'heure de création de l'élément. |
|
last_modified_by_email |
| L'e-mail de l'utilisateur qui a modifié l'élément en dernier. |
|
last_modified_by_name |
| Le nom d'affichage de l'utilisateur qui a modifié le dernier élément. |
|
etag |
| L'ETag de l'élément. Change lorsque l'élément ou l'une de ses métadonnées change. |
|
ctag |
| La balise de modification de l'élément. Modifications uniquement lorsque le contenu de l'élément change. |
|
Description |
| La description de l’élément, si définie. |
|
métadonnées supplémentaires |
| Tout autre champ driveItem renvoyé par Microsoft Graphe, mais non extrait ci-dessus. |
|
Le champ additional_metadata est renvoyé en tant que VARIANT. Consulter le typeVARIANT.
Exemples
Les exemples suivants montrent comment inclure la colonne _sharepoint_metadata dans une query de lecture, sélectionner des champs spécifiques de la colonne et extraire des valeurs du champ additional_metadata VARIANT.
- Python
- SQL
df = (spark.read
.format("binaryFile")
.option("databricks.connection", "my_sharepoint_conn")
.load("https://mytenant.sharepoint.com/sites/Marketing/Shared%20Documents")
.select("*", "_metadata", "_sharepoint_metadata"))
SELECT *, _sharepoint_metadata
FROM read_files(
"https://mytenant.sharepoint.com/sites/Marketing/Shared%20Documents",
`databricks.connection` => "my_sharepoint_conn",
format => "binaryFile"
);
Sélectionnez des champs spécifiques de la structure _sharepoint_metadata :
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"))
Extrayez les valeurs du champ additional_metadata VARIANT à l'aide de l'opérateur de transtypage :: :
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"
);
Limitations
Le connecteur SharePoint standard présente les limitations suivantes.
- Vous ne pouvez pas ingérer plusieurs sites avec la même query. Pour ingérer depuis deux sites, vous devez écrire deux query distinctes.
- Vous pouvez utiliser l'option
pathGlobFilterpour filtrer les fichiers par nom. Le filtrage basé sur les chemins de dossier n'est pas pris en charge. - Listes SharePoint et .aspx les pages de site ne sont pas prises en charge. Seuls les fichiers des bibliothèques de documents sont pris en charge.
- La réécriture sur un serveur SharePoint n'est pas prise en charge.
- Auto Loader
cleanSource(suppression ou archivage de fichiers à la source après l'ingestion) n'est pas pris en charge.
Étapes suivantes
- Découvrez Auto Loader pour les modèles d'ingestion streaming avancés
- Explorer COPY INTO pour les chargements incrémentiels idempotents
- Comparez avec les modèles d'ingestion de stockage d'objets cloud
- Configurez la planification des jobs pour automatiser vos workflows d'ingestion
- Utilisez les Lakeflow Pipelines pour créer des pipelines de données de bout en bout avec des Transformations.