Ingérer des fichiers depuis OneDrive
Bêta
Cette fonctionnalité est en version bêta. Les administrateurs de workspace peuvent l’activer depuis la page Previews en choisissant l’aperçu Lakeflow Connect for OneDrive For Business . Consultez Gérer les aperçus Databricks.
:::note Conformité
Le connecteur OneDrive prend en charge l'utilisation dans les workspaces avec le paramètre Configurer les paramètres de sécurité et de conformité améliorés activé.
:::
Vous pouvez ingérer des fichiers structurés, semi-structurés et non structurés depuis le Microsoft OneDrive for Business d’un utilisateur (le lecteur personnel My files ) dans des tables Delta. Le connecteur OneDrive standard prend en charge l’ingestion incrémentielle de fichiers OneDrive à l’aide d’APIs de batch et de streaming, notamment Auto Loader, spark.read et COPY INTO, le tout avec la gouvernance Unity Catalog. Utilisez ces APIs pour créer des DataFrames Spark, des vues matérialisées et des tables de streaming directement à partir de fichiers dans OneDrive.
Le connecteur OneDrive ingère les fichiers depuis le lecteur personnel d’un utilisateur individuel. Pour ingérer des données depuis des sites SharePoint, des sites d’équipe ou des bibliothèques de documents partagés, utilisez plutôt le connecteur SharePoint.
Fonctionnalités principales
Le connecteur OneDrive standard offre :
- Ingestion de fichiers structurés, semi-structurés et non structurés à partir du OneDrive personnel d’un utilisateur.
- Ingestion granulaire : ingérez un lecteur entier, un dossier ou un fichier unique.
- Ingestion par batch et en streaming à l'aide de
spark.read, Auto Loader etCOPY INTO. - Inférence et évolution automatiques du schéma pour les formats structurés et semi-structurés tels que le CSV.
- Sécurisez le stockage des identifiants avec une connexion Unity Catalog.
- Sélection de fichiers avec correspondance de modèle à l’aide de
pathGlobFilter.
Exigences
Pour ingérer des fichiers depuis OneDrive, vous devez disposer des éléments suivants :
-
Un workspace avec Unity Catalog activé.
-
CREATE CONNECTIONprivilèges pour créer une connexion OneDrive, 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 utilisant la version 19 ou ultérieure de Databricks Runtime.
-
Authentification OAuth configurée avec le champ d’application d’autorisation
Files.Read.All.
Créer la connexion
Créez une connexion Unity Catalog pour stocker vos identifiants OneDrive. Le connecteur OneDrive utilise l'autorisation OAuth user-to-machine (U2M) auprès de Microsoft Entra ID (Azure AD) et de Microsoft Graphe.
- Dans le workspace Databricks, sélectionnez Catalog > External locations > Connections > Create connection .
- Sur la page Bases des connexions de l’assistant Configurer la connexion , spécifiez un Nom de connexion unique.
- Dans le menu déroulant Connection type , recherchez et sélectionnez OneDrive .
- (Facultatif) Ajouter un commentaire.
- Sélectionnez Next .
- Sur la page Authentication , connectez-vous avec le compte Microsoft dont vous souhaitez lire le OneDrive et acceptez les autorisations Microsoft Graphe demandées (
Files.Read.Alletoffline_access). - Une fois redirigé vers le workspace Databricks, sélectionnez Create connection .
La connexion lit les fichiers en tant qu’utilisateur connecté ; le connecteur ne peut donc accéder qu’aux fichiers auxquels cet utilisateur a accès dans son OneDrive.
Lire des fichiers depuis OneDrive
Pour lire des fichiers, transmettez la connexion que vous avez créée à l’aide de l’option databricks.connection et une URL pointant vers la ressource OneDrive à laquelle vous souhaitez accéder. L’URL que vous fournissez détermine la portée de l’ingestion.
Les types de chemins suivants sont pris en charge :
Type de chemin d'accès | Description |
|---|---|
Lecteur entier | Copiez l’URL racine de votre OneDrive depuis la barre d’adresse.
|
Dossier | Ouvrez le dossier dans OneDrive et copiez l’URL depuis la barre d’adresse.
|
Fichier | Sélectionnez le fichier, cliquez sur le menu long ( ... ), puis sélectionnez Ouvrir dans le navigateur ou Détails , et copiez l’URL.
|
Partager le Link | Sélectionnez le fichier ou le dossier, cliquez sur Partager ou Copier Link , et utilisez le Link obtenu. Databricks recommande de définir le Link de partage pour qu'il n'expire jamais.
|
Les URL OneDrive utilisent l’hôte personnel -my (par exemple, mytenant-my.sharepoint.com), qui est distinct de l’hôte SharePoint (mytenant.sharepoint.com). Les liens de partage vers des sites SharePoint ne sont pas acceptés par le connecteur OneDrive ; utilisez le connecteur SharePoint pour ceux-ci.
L’URL doit pointer vers votre lecteur personnel, un dossier ou un fichier qu’il contient, ou un Link de partage. Une URL d’hôte nue (par exemple, https://mytenant-my.sharepoint.com/) ou un chemin qui ne pointe pas vers votre lecteur (par exemple, https://mytenant-my.sharepoint.com/shared) n’est pas pris en charge.
Exemples
Il existe plusieurs façons de lire des fichiers à l’aide du connecteur OneDrive standard.
Stream OneDrive files using Auto Loader
Auto Loader constitue le moyen le plus efficace d’ingérer progressivement des fichiers depuis OneDrive. Il détecte automatiquement les nouveaux fichiers et les traite dès leur arrivée. Il peut également ingérer des fichiers structurés et semi-structurés tels que le CSV et le JSON avec une inférence et une évolution automatiques du schéma. Pour plus de détails sur l’utilisation d’Auto Loader, 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_onedrive_conn")
.option("cloudFiles.schemaLocation", <path to a schema location>)
.option("pathGlobFilter", "*.pdf")
.load("https://mytenant-my.sharepoint.com/personal/user_mytenant_onmicrosoft_com/Documents")
)
# Incrementally ingest CSV files with automatic schema inference and evolution
df = (spark.readStream.format("cloudFiles")
.option("cloudFiles.format", "csv")
.option("databricks.connection", "my_onedrive_conn")
.option("cloudFiles.schemaLocation", <path to a schema location>)
.option("pathGlobFilter", "*.csv")
.option("cloudFiles.inferColumnTypes", True)
.option("header", True)
.load("https://mytenant-my.sharepoint.com/personal/user_mytenant_onmicrosoft_com/Documents/IoT_Logs")
)
Lire des fichiers OneDrive à l’aide de la lecture batch Spark
L'exemple suivant montre comment ingérer des fichiers OneDrive en Python à l'aide de la fonction spark.read. Définissez l'option recursiveFileLookup sur true pour lire les fichiers à partir de dossiers imbriqués dans votre OneDrive.
# Read unstructured data as binary files
df = (spark.read
.format("binaryFile")
.option("databricks.connection", "my_onedrive_conn")
.option("recursiveFileLookup", True)
.option("pathGlobFilter", "*.pdf") # optional. Example: only ingest PDFs
.load("https://mytenant-my.sharepoint.com/personal/user_mytenant_onmicrosoft_com/Documents"))
# 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_onedrive_conn")
.option("pathGlobFilter", "*.csv")
.option("recursiveFileLookup", True)
.option("inferSchema", True)
.option("header", True)
.load("https://mytenant-my.sharepoint.com/personal/user_mytenant_onmicrosoft_com/Documents/IoT_Logs"))
Lire des fichiers OneDrive à l'aide de Spark SQL
L’exemple suivant montre comment ingérer des fichiers OneDrive en SQL à l’aide de la fonction read_files table-valued. Pour plus de détails sur l’utilisation de read_files, consultez la fonctionread_files table-valued.
-- Read pdf files
CREATE TABLE my_table AS
SELECT * FROM read_files(
"https://mytenant-my.sharepoint.com/personal/user_mytenant_onmicrosoft_com/Documents",
`databricks.connection` => "my_onedrive_conn",
format => "binaryFile",
pathGlobFilter => "*.pdf", -- optional. Example: only ingest PDFs
schemaEvolutionMode => "none"
);
-- Read CSV files with automatic schema inference
CREATE TABLE my_csv_table AS
SELECT * FROM read_files(
"https://mytenant-my.sharepoint.com/personal/user_mytenant_onmicrosoft_com/Documents/IoT_Logs",
`databricks.connection` => "my_onedrive_conn",
format => "csv",
header => true,
schemaEvolutionMode => "none"
);
Ingérer des fichiers OneDrive dans des LakeFlow Pipelines
Le connecteur OneDrive nécessite Databricks Runtime 19 ou une version ultérieure. Pour utiliser le connecteur, définissez "CHANNEL" = "PREVIEW" dans les paramètres de votre pipeline. Pour plus d’informations sur les aperçus, consultez la référence des propriétés de pipeline.
Les exemples suivants montrent comment lire des fichiers OneDrive à 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 onedrive_pdf_table():
return (spark.readStream.format("cloudFiles")
.option("cloudFiles.format", "binaryFile")
.option("databricks.connection", "my_onedrive_conn")
.option("pathGlobFilter", "*.pdf")
.load("https://mytenant-my.sharepoint.com/personal/user_mytenant_onmicrosoft_com/Documents")
)
# Incrementally ingest CSV files with automatic schema inference and evolution
@dp.table
def onedrive_csv_table():
return (spark.readStream.format("cloudFiles")
.option("cloudFiles.format", "csv")
.option("databricks.connection", "my_onedrive_conn")
.option("pathGlobFilter", "*.csv")
.option("cloudFiles.inferColumnTypes", True)
.option("header", True)
.load("https://mytenant-my.sharepoint.com/personal/user_mytenant_onmicrosoft_com/Documents/IoT_Logs")
)
-- Incrementally ingest new PDF files
CREATE OR REFRESH STREAMING TABLE onedrive_pdf_table
AS SELECT * FROM STREAM read_files(
"https://mytenant-my.sharepoint.com/personal/user_mytenant_onmicrosoft_com/Documents",
format => "binaryFile",
`databricks.connection` => "my_onedrive_conn",
pathGlobFilter => "*.pdf");
-- Incrementally ingest CSV files with automatic schema inference and evolution
CREATE OR REFRESH STREAMING TABLE onedrive_csv_table
AS SELECT * FROM STREAM read_files(
"https://mytenant-my.sharepoint.com/personal/user_mytenant_onmicrosoft_com/Documents/IoT_Logs",
format => "csv",
`databricks.connection` => "my_onedrive_conn",
pathGlobFilter => "*.csv",
header => "true");
Ingestion incrémentielle avec COPY INTO
COPY INTO fournit un chargement incrémentiel 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 utilisant COPY INTO.
CREATE TABLE IF NOT EXISTS onedrive_pdf_table;
CREATE TABLE IF NOT EXISTS onedrive_csv_table;
-- Incrementally ingest new PDF files
COPY INTO onedrive_pdf_table
FROM "https://mytenant-my.sharepoint.com/personal/user_mytenant_onmicrosoft_com/Documents"
FILEFORMAT = BINARYFILE
PATTERN = '*.pdf'
FORMAT_OPTIONS ('databricks.connection' = 'my_onedrive_conn')
COPY_OPTIONS ('mergeSchema' = 'true');
-- Incrementally ingest CSV files with automatic schema inference and evolution
COPY INTO onedrive_csv_table
FROM "https://mytenant-my.sharepoint.com/personal/user_mytenant_onmicrosoft_com/Documents/IoT_Logs"
FILEFORMAT = CSV
PATTERN = '*.csv'
FORMAT_OPTIONS ('databricks.connection' = 'my_onedrive_conn', 'header' = 'true', 'inferSchema' = 'true')
COPY_OPTIONS ('mergeSchema' = 'true');
Ingestion incrémentielle efficace avec suivi des modifications
Par défaut, Auto Loader découvre les nouveaux fichiers dans OneDrive en listant le lecteur à chaque mise à jour. Pour les lecteurs volumineux, vous pouvez plutôt suivre les modifications à l'aide du flux de modifications Microsoft Graphe, qui renvoie uniquement les fichiers ajoutés ou modifiés depuis la mise à jour précédente au lieu de relister l'intégralité du lecteur. Pour l'activer, définissez l'option cloudFiles.readChangeFeed sur true.
df = (spark.readStream.format("cloudFiles")
.option("cloudFiles.format", "binaryFile")
.option("cloudFiles.readChangeFeed", "true")
.option("databricks.connection", "my_onedrive_conn")
.option("cloudFiles.schemaLocation", <path to a schema location>)
.load("https://mytenant-my.sharepoint.com/personal/user_mytenant_onmicrosoft_com/Documents")
)
Lorsque vous utilisez cloudFiles.readChangeFeed, veuillez noter ce qui suit :
- Le format
binaryFileest requis. Le suivi des modifications n'est pas disponible pour les autres formats. - Le chemin de chargement doit correspondre à un lecteur ou à un répertoire au sein d’un lecteur. Un site personnel nu ou une racine de tenant n’est pas pris en charge.
- Vous ne pouvez pas fournir de schéma explicite. Le schéma de sortie est déterminé automatiquement par le format de fichier.
Analyser des fichiers non structurés
Lors de l’ingestion de fichiers non structurés depuis OneDrive (tels que des fichiers PDF, Word ou PowerPoint) à l’aide du connecteur OneDrive standard avec le format binaryFile, le contenu des fichiers est stocké sous forme de données binaires brutes. Pour préparer ces fichiers pour des 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 analyser des documents non structurés stockés dans une table Delta bronze nommée documents, en ajoutant une nouvelle colonne contenant le contenu analysé :
CREATE TABLE documents AS
SELECT * FROM read_files(
"https://mytenant-my.sharepoint.com/personal/user_mytenant_onmicrosoft_com/Documents",
`databricks.connection` => "my_onedrive_conn",
format => "binaryFile",
pathGlobFilter => "*.{pdf,docx}",
schemaEvolutionMode => "none"
);
SELECT *, ai_parse_document(content, map('version', '2.0')) AS parsed_content
FROM documents;
Vous pouvez également utiliser ai_parse_document au sein d’un LakeFlow pipeline pour activer l’analyse incrémentielle. Par exemple, vous pouvez définir une table de streaming bronze qui ingère les fichiers binaires bruts, puis une seconde table de streaming qui dépose le contenu analysé dans une nouvelle colonne :
-- Bronze: incrementally ingest the raw documents as binary
CREATE OR REFRESH STREAMING TABLE onedrive_documents
AS SELECT * FROM STREAM read_files(
"https://mytenant-my.sharepoint.com/personal/user_mytenant_onmicrosoft_com/Documents",
`databricks.connection` => "my_onedrive_conn",
format => "binaryFile",
pathGlobFilter => "*.{pdf,docx}");
-- Silver: land the parsed content in a new column
CREATE OR REFRESH STREAMING TABLE onedrive_documents_parsed
AS SELECT
*,
ai_parse_document(content, map('version', '2.0')) AS parsed_content
FROM STREAM onedrive_documents;
La colonne parsed_content contient du texte extrait, des tableaux, des informations de layout et des métadonnées qui peuvent être directement utilisés pour des pipelines d'IA en aval.
Comme les deux tables sont des tables de streaming, les fichiers OneDrive nouvellement ingérés sont analysés automatiquement à chaque mise à jour du pipeline, et la sortie analysée reste synchronisée avec les données entrantes.
En savoir plus : consultez ai_parse_document pour connaître les formats pris en charge et les options avancées, y compris l’option version qui permet de « pin » le schéma de sortie.
Limitations
Le connecteur OneDrive standard présente les limitations suivantes.
- Le connecteur effectue l’ingestion à partir du OneDrive personnel d’un utilisateur unique ( My files ). Les sites SharePoint, les sites d’équipe et les bibliothèques de documents partagés ne sont pas pris en charge. Utilisez le connecteur SharePoint pour ceux-ci.
- Les URL d’hôte simples et les chemins d’accès autres que ceux des lecteurs ne sont pas pris en charge.
- Les listes et les pages de site OneDrive ne sont pas prises en charge. Le connecteur ingère uniquement les fichiers stockés dans le lecteur OneDrive d’un utilisateur.
- Vous pouvez utiliser l’option
pathGlobFilterpour filtrer les fichiers par nom. Le filtrage basé sur le chemin d’accès au dossier n’est pas pris en charge. - Le suivi des modifications avec
cloudFiles.readChangeFeednécessite le formatbinaryFileet un chemin de chargement qui pointe vers un lecteur ou un répertoire au sein d'un lecteur. Voir Ingestion incrémentielle efficace avec suivi des modifications. - L’écriture vers OneDrive n’est pas prise en charge. Le connecteur est en lecture seule.
- Auto Loader
cleanSource(suppression ou archivage des fichiers à la source après ingestion) n'est pas pris en charge.
Ressources supplémentaires
- Découvrez Auto Loader pour des modèles d'ingestion en streaming avancés
- Explorez COPY INTO pour des chargements incrémentiels idempotents
- Consultez ai_parse_document pour l'analyse de fichiers non structurés
- Comparez avec le connecteur SharePoint pour l'ingestion à partir de sites SharePoint
- Configurez la planification des jobs pour automatiser vos workflows d'ingestion