Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Important
Cette fonctionnalité est en version bêta. Les administrateurs d’espace de travail peuvent contrôler l’accès à cette fonctionnalité à partir de la page Aperçus . Consultez Gérer les préversions d’Azure Databricks.
Vous pouvez ingérer, analyser et interroger des fichiers Excel pour les charges de travail de traitement par lots et de diffusion en continu à l’aide de la prise en charge intégrée du format de fichier Excel. Il déduit automatiquement le schéma et les types de données, éliminant ainsi la nécessité de conversions de fichiers externes ou manuelles. Cette fonctionnalité fournit une ingestion transparente à partir des chargements locaux et du stockage cloud.
Fonctionnalités clés
- Lisez directement les fichiers
.xlset.xlsxà l’aide des API Databricks SQL et Spark. - Téléchargez directement les fichiers
.xlset.xlsxà l’aide de l’interface utilisateur Ajouter des données. Consultez Charger des fichiers dans Azure Databricks. - Lit une feuille à partir d’un fichier à plusieurs feuilles.
- Spécifiez des limites ou des plages de cellules exactes.
- Déduire automatiquement le schéma, les en-têtes et les types de données.
- Ingestion des formules évaluées
- Utilisez le chargeur automatique pour la diffusion en continu structurée de fichiers Excel.
Prerequisites
Databricks Runtime 17.1 ou version ultérieure.
Créer ou modifier une table dans l’interface utilisateur
Vous pouvez utiliser l’interface utilisateur créer ou modifier une table pour créer des tableaux à partir de fichiers Excel. Commencez par charger un fichier Excel ou sélectionner un fichier Excel à partir d’un volume ou d’un emplacement externe. Choisissez la feuille, ajustez le nombre de lignes d’en-tête et spécifiez éventuellement une plage de cellules. L’interface utilisateur prend en charge la création d’une table unique à partir du fichier et de la feuille sélectionnés.
Interroger des fichiers Excel
Vous pouvez interroger vos fichiers Excel à l’aide d’API spark batch (spark.read) et de streaming (spark.readstream). Vous pouvez choisir de déduire automatiquement le schéma ou de spécifier votre propre schéma pour analyser les fichiers Excel. Par défaut, l’analyseur lit toutes les cellules à partir de la cellule supérieure gauche vers la cellule en bas à droite non vide dans la première feuille. Pour lire une autre feuille ou plage de cellules, utilisez l’option dataAddress .
Vous pouvez interroger la liste des feuilles dans un fichier Excel en définissant l’option operationlistSheets.
Options d’analyse Excel
Les options suivantes sont disponibles pour analyser les fichiers Excel :
| Option de source de données | Descriptif |
|---|---|
dataAddress |
Adresse de la plage de cellules à lire dans la syntaxe Excel. S’il n’est pas spécifié, l’analyseur lit toutes les cellules valides de la première feuille.
|
headerRows |
Nombre de lignes initiales dans le fichier Excel à traiter en tant que lignes d’en-tête et en tant que noms de colonnes. Quand dataAddress est spécifié, headerRows s’applique aux lignes d’en-tête de cette plage de cellules. Les valeurs prises en charge sont 0 et 1. La valeur par défaut est 0, auquel cas les noms de colonnes sont générés automatiquement en ajoutant le numéro de colonne à _c (par exemple : _c1, , _c2_c3, ...).Exemples :
|
operation |
Indique l’opération à effectuer sur le classeur Excel. La valeur par défaut est readSheet, qui lit les données d’une feuille. L’autre opération prise en charge est listSheets, qui retourne la liste des feuilles dans le classeur. Pour l’opération listSheets , le schéma retourné est un struct avec les champs suivants :
|
timestampNTZFormat |
Chaîne de format personnalisée pour une valeur d’horodatage (stockée sous forme de chaîne dans Excel) sans fuseau horaire qui suit le format de modèle datetime. Cela s’applique aux valeurs de chaîne lues en tant que TimestampNTZType. Par défaut : yyyy-MM-dd'T'HH:mm:ss[.SSS]. |
dateFormat |
Chaîne de format de date personnalisée qui suit le modèle de date et heure. Cela s’applique aux valeurs de chaîne lues en tant que Date. Par défaut : yyyy-MM-dd. |
Examples
Recherchez des exemples de code pour lire des fichiers Excel à l’aide du connecteur intégré Lakeflow Connect.
Lire des fichiers Excel à l’aide d’un traitement par lots Spark
Vous pouvez lire un fichier Excel à partir du stockage cloud (par exemple, S3, ADLS) à l’aide spark.read.excelde . Par exemple:
# Read the first sheet from a single Excel file or from multiple Excel files in a directory
df = (spark.read.excel(<path to excel directory or file>))
# Infer schema field name from the header row
df = (spark.read
.option("headerRows", 1)
.excel(<path to excel directory or file>))
# Read a specific sheet and range
df = (spark.read
.option("headerRows", 1)
.option("dataAddress", "Sheet1!A1:E10")
.excel(<path to excel directory or file>))
Lire des fichiers Excel à l’aide de SQL
Vous pouvez utiliser la fonction retournant une table read_files pour ingérer des fichiers Excel directement avec SQL. Par exemple:
-- Read an entire Excel file
CREATE TABLE my_table AS
SELECT * FROM read_files(
"<path to excel directory or file>",
schemaEvolutionMode => "none"
);
-- Read a specific sheet and range
CREATE TABLE my_sheet_table AS
SELECT * FROM read_files(
"<path to excel directory or file>",
format => "excel",
headerRows => 1,
dataAddress => "'Sheet1'!A2:D10",
schemaEvolutionMode => "none"
);
Diffuser en continu des fichiers Excel à l’aide du chargeur automatique
Vous pouvez diffuser en continu des fichiers Excel à l’aide du chargeur automatique en définissant cloudFiles.format sur excel. Par exemple:
df = (
spark
.readStream
.format("cloudFiles")
.option("cloudFiles.format", "excel")
.option("cloudFiles.inferColumnTypes", True)
.option("headerRows", 1)
.option("cloudFiles.schemaLocation", "<path to schema location dir>")
.option("cloudFiles.schemaEvolutionMode", "none")
.load(<path to excel directory or file>)
)
df.writeStream
.format("delta")
.option("mergeSchema", "true")
.option("checkpointLocation", "<path to checkpoint location dir>")
.table(<table name>)
Ingérer des fichiers Excel à l’aide de COPY INTO
CREATE TABLE IF NOT EXISTS excel_demo_table;
COPY INTO excel_demo_table
FROM "<path to excel directory or file>"
FILEFORMAT = EXCEL
FORMAT_OPTIONS ('mergeSchema' = 'true')
COPY_OPTIONS ('mergeSchema' = 'true');
Analyser des feuilles Excel complexes non structurées
Pour les feuilles Excel complexes et non structurées (par exemple, plusieurs tableaux par feuille, îles de données), Databricks recommande d’extraire les plages de cellules dont vous avez besoin pour créer vos DataFrames Spark à l’aide dataAddress des options. Par exemple:
df = (spark.read.format("excel")
.option("headerRows", 1)
.option("dataAddress", "Sheet1!A1:E10")
.load(<path to excel directory or file>))
Feuilles de liste
Vous pouvez répertorier les feuilles d’un fichier Excel à l’aide de l’opération listSheets . Le schéma retourné est un struct avec les champs suivants :
-
sheetIndex: long -
sheetName: Chaîne
Par exemple:
Python
# List the name of the Sheets in an Excel file
df = (spark.read.format("excel")
.option("operation", "listSheets")
.load(<path to excel directory or file>))
SQL
SELECT * FROM read_files("<path to excel directory or file>",
schemaEvolutionMode => "none",
operation => "listSheets"
)
Limites
- Les fichiers protégés par mot de passe ne sont pas pris en charge.
- Une seule ligne d’en-tête est prise en charge.
- Les valeurs de cellule fusionnées remplissent uniquement la cellule en haut à gauche. Les cellules enfants restantes sont définies sur
NULL. - La diffusion en continu de fichiers Excel avec Auto Loader est prise en charge, mais l'évolution du schéma ne l'est pas. Vous devez définir
schemaEvolutionMode="None"explicitement . - « Strict Open XML Spreadsheet (Strict OOXML) » n’est pas pris en charge.
- L’exécution des macros dans les
.xlsmfichiers n’est pas prise en charge. - L'option
ignoreCorruptFilesn'est pas prise en charge.
Questions fréquentes (FAQ)
Trouvez des réponses aux questions fréquemment posées sur le connecteur Excel dans Lakeflow Connect.
Puis-je lire toutes les feuilles en même temps ?
L’analyseur lit une seule feuille d’un fichier Excel à la fois. Par défaut, il lit la première feuille. Vous pouvez spécifier une autre feuille à l’aide de l’option dataAddress . Pour traiter plusieurs feuilles, commencez par récupérer la liste des feuilles en définissant l’option operation à listSheets, puis itérez sur les noms des feuilles et lisez chacune en fournissant son nom dans l’option dataAddress.
Puis-je ingérer des fichiers Excel avec des dispositions complexes ou plusieurs tableaux par feuille ?
Par défaut, l’analyseur lit toutes les cellules Excel de la cellule supérieure gauche vers la cellule en bas à droite non vide. Vous pouvez spécifier une plage de cellules différente à l’aide de l’option dataAddress .
Comment les formules et les cellules fusionnées sont-elles gérées ?
Les formules sont ingérées en tant que valeurs calculées. Pour les cellules fusionnées, seule la valeur en haut à gauche est conservée (les cellules enfants sont NULL).
Puis-je utiliser l’ingestion Excel dans le chargeur automatique et les travaux de streaming ?
Oui, vous pouvez diffuser en continu des fichiers Excel à l’aide cloudFiles.format = "excel"de . Toutefois, l’évolution du schéma n’est pas prise en charge, vous devez donc définir "schemaEvolutionMode" sur "None".
Excel protégé par mot de passe est-il pris en charge ?
Non. Si cette fonctionnalité est essentielle pour vos flux de travail, contactez votre représentant de compte Databricks.