Aller au contenu principal

Ingérer des fichiers depuis OneDrive

info

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 et COPY 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 CONNECTION privilè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.
  • 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.

  1. Dans le workspace Databricks, sélectionnez Catalog > External locations > Connections > Create connection .
  2. Sur la page Bases des connexions de l’assistant Configurer la connexion , spécifiez un Nom de connexion unique.
  3. Dans le menu déroulant Connection type , recherchez et sélectionnez OneDrive .
  4. (Facultatif) Ajouter un commentaire.
  5. Sélectionnez Next .
  6. 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.All et offline_access).
  7. 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.

https://mytenant-my.sharepoint.com/personal/user_mytenant_onmicrosoft_com/Documents

Dossier

Ouvrez le dossier dans OneDrive et copiez l’URL depuis la barre d’adresse.

https://mytenant-my.sharepoint.com/personal/user_mytenant_onmicrosoft_com/_layouts/15/onedrive.aspx?id=%2Fpersonal%2Fuser%2FDocuments%2FReports

Fichier

Sélectionnez le fichier, cliquez sur le menu long ( ... ), puis sélectionnez Ouvrir dans le navigateur ou Détails , et copiez l’URL.

https://mytenant-my.sharepoint.com/personal/user_mytenant_onmicrosoft_com/Documents/Reports/report.csv

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.

https://mytenant-my.sharepoint.com/:x:/g/personal/user_mytenant_onmicrosoft_com/Eab12...

Type de chemin d'accès

Description

Lecteur entier

Copiez l’URL racine de votre OneDrive depuis la barre d’adresse.

https://mytenant-my.sharepoint.com/personal/user_mytenant_onmicrosoft_com/Documents

Dossier

Ouvrez le dossier dans OneDrive et copiez l’URL depuis la barre d’adresse.

https://mytenant-my.sharepoint.com/personal/user_mytenant_onmicrosoft_com/_layouts/15/onedrive.aspx?id=%2Fpersonal%2Fuser%2FDocuments%2FReports

Fichier

Sélectionnez le fichier, cliquez sur le menu long ( ... ), puis sélectionnez Ouvrir dans le navigateur ou Détails , et copiez l’URL.

https://mytenant-my.sharepoint.com/personal/user_mytenant_onmicrosoft_com/Documents/Reports/report.csv

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.

https://mytenant-my.sharepoint.com/:x:/g/personal/user_mytenant_onmicrosoft_com/Eab12...

remarque

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.

Python
# 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.

Python
# 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.

SQL
-- 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

remarque

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

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.

SQL
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.

Python
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 binaryFile est 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é :

SQL
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 :

SQL
-- 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 pathGlobFilter pour 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.readChangeFeed nécessite le format binaryFile et 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