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.
L’ingestion OneDrive prend en charge l’utilisation dans les Workspace pour lesquels les paramètres Configure enhanced security and conformité settings sont activés.
Vous pouvez ingérer des fichiers structurés, semi-structurés et non structurés à partir du OneDrive professionnel d’un utilisateur (le lecteur personnel My files ) dans des tables Delta. Les APIs SQL et Spark prennent 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 d'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 situés sur OneDrive.
L’ingestion OneDrive lit les fichiers à partir du disque personnel d’un utilisateur individuel. Pour procéder à l’ingestion à partir de sites SharePoint, de sites d’équipe ou de bibliothèques de documents partagés, consultez plutôt Ingest files from SharePoint.
Choisissez comment effectuer l’ingestion à partir de OneDrive
Lakeflow Connect propose deux façons d’ingérer des données depuis OneDrive. Ils accèdent tous deux aux données de OneDrive, mais diffèrent par leur niveau de gestion.
Option | Description |
|---|---|
Un connecteur entièrement managé pour les applications d’entreprise qui ingère les données dans des tables Delta et les maintient synchronisées avec la source. | |
SQL et Spark API | Créez des pipelines d’ingestion personnalisés avec SQL, PySpark ou des pipelines LakeFlow Pipelines en utilisant des APIs de batch et de streaming telles que |
Fonctionnalités principales
Les API SQL et Spark API offrent :
- Ingestion de fichiers structurés, semi-structurés et non structurés depuis le OneDrive personnel d’un utilisateur
- Ingestion granulaire : ingérez un lecteur entier, un dossier ou un fichier unique
- Ingestion par batch et streaming avec
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 CSV
- Stockage sécurisé des identifiants 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 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 Databricks Runtime 19 ou une version ultérieure.
-
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. L’ingestion depuis OneDrive utilise une autorisation OAuth utilisateur-à-machine (U2M) auprès de Microsoft Entra ID (Azure AD) et de Microsoft Graph. Le processus de configuration de la connexion est le même, que vous utilisiez des API SQL et Spark ou le connecteur OneDrive géré.
Pour obtenir des instructions complètes sur la configuration de la connexion, y compris les options OAuth U2M: Databricks-managed et OAuth U2M: Custom-managed, consultez Créer une connexion OneDrive.
La connexion lit les fichiers en tant qu’utilisateur connecté, et ne peut donc accéder qu’aux fichiers auxquels cet utilisateur peut accéder 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), distinct de l’hôte SharePoint (mytenant.sharepoint.com). Les Link de partage vers des sites SharePoint ne sont pas acceptés. Pour effectuer une ingestion depuis SharePoint, consultez plutôt Ingérer des fichiers depuis SharePoint.
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 à partir de OneDrive à l'aide des API SQL et Spark.
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
L’ingestion de fichiers OneDrive avec SQL et Spark API nécessite Databricks Runtime 19 ou une version ultérieure. Pour l’utiliser, définissez "CHANNEL" = "PREVIEW" dans les paramètres de votre pipeline. Pour plus d’informations sur les aperçus, consultez Référence des propriétés du 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 provenant de OneDrive (tels que des fichiers PDF, Word ou PowerPoint) à l’aide de SQL et de Spark APIs avec le format binaryFile, les contenus des fichiers sont stockés sous forme de données binaires brutes. Pour préparer ces fichiers pour des charges de travail d’IA telles que la génération augmentée de récupération (RAG), la recherche, la classification ou la compréhension de documents, vous pouvez analyser le contenu binaire pour obtenir 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;
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.
Analyse incrémentielle avec les pipelines Lakeflow
Vous pouvez également utiliser ai_parse_document dans les pipelines LakeFlow Pipelines 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 deuxième table de streaming qui stocke 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;
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.
Consultez la fonction ai_parse_document pour connaître les formats pris en charge et les options avancées, notamment l’option version qui pin le schéma de sortie.
Limitations
Les SQL et Spark API présentent les limitations suivantes.
- L'ingestion OneDrive lit les données à partir du OneDrive personnel d'un seul utilisateur ( My files ). Les sites SharePoint, les sites d'équipe et les bibliothèques de documents partagées ne sont pas pris en charge. Consultez la page Ingérer des fichiers depuis SharePoint pour en savoir plus.
- Les listes et les pages de site OneDrive ne sont pas prises en charge. Seuls les fichiers stockés dans le lecteur OneDrive d’un utilisateur sont ingérés.
- 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. - L'écriture vers OneDrive n'est pas prise en charge. L'ingestion 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
- Découvrez comment ingérer à partir de SharePoint
- Configurez la planification des jobs pour automatiser vos workflows d'ingestion