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.

remarque

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

Connecteur OneDrive géré

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 read_files, spark.read, COPY INTO et Auto Loader. Il offre la flexibilité d’effectuer des transformations complexes pendant l’ingestion, tout en vous confiant davantage de responsabilités pour gérer et maintenir vos pipelines.

Option

Description

Connecteur OneDrive géré

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 read_files, spark.read, COPY INTO et Auto Loader. Il offre la flexibilité d’effectuer des transformations complexes pendant l’ingestion, tout en vous confiant davantage de responsabilités pour gérer et maintenir vos pipelines.

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 et COPY 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 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 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.

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), 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.

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

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

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;

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 :

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;

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 pathGlobFilter pour 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​