Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Von Bedeutung
Dieses Feature befindet sich in der Betaversion. Arbeitsbereichsadministratoren können den Zugriff auf dieses Feature über die Vorschauseite steuern. Siehe Verwalten von Azure Databricks-Vorschauen.
Sie können Excel-Dateien mithilfe der integrierten Unterstützung des Excel-Dateiformats für Batch- und Streamingworkloads aufnehmen, analysieren und abfragen. Es leitet automatisch Schema- und Datentypen ab, ohne dass externe Bibliotheken oder manuelle Dateikonvertierungen erforderlich sind. Dieses Feature bietet eine nahtlose Aufnahme von lokalen Uploads und Cloudspeicher.
Wichtigste Funktionen
- Lesen Sie
.xls- und.xlsx-Dateien direkt mit Databricks SQL- und Spark-APIs. - Laden Sie
.xlsund.xlsxDateien direkt mithilfe der Benutzeroberfläche 'Daten hinzufügen' hoch. Siehe Hochladen von Dateien in Azure Databricks. - Lesen Sie ein beliebiges Blatt aus einer Mehrblattdatei.
- Geben Sie genaue Zellgrenzen oder Bereiche an.
- Automatisches Ableiten von Schema, Headern und Datentypen.
- Ausgewertete Formeln aufnehmen.
- Verwenden Sie das automatische Laden für strukturiertes Streamen von Excel-Dateien.
Voraussetzungen
Databricks Runtime 17.1 oder höher.
Erstellen oder Ändern einer Tabelle in der Benutzeroberfläche
Sie können die Benutzeroberfläche zum Erstellen oder Ändern von Tabellen verwenden, um Tabellen aus Excel-Dateien zu erstellen. Beginnen Sie, indem Sie eine Excel-Datei hochladen oder eine Excel-Datei aus einem Volume oder einem externen Speicherort auswählen. Wählen Sie das Blatt aus, passen Sie die Anzahl der Kopfzeilen an, und geben Sie optional einen Zellbereich an. Die Benutzeroberfläche unterstützt das Erstellen einer einzelnen Tabelle aus der ausgewählten Datei und dem ausgewählten Blatt.
Abfragen von Excel-Dateien
Sie können Ihre Excel-Dateien mit Spark-Batch-APIs (spark.read) und Streaming (spark.readstream)-APIs abfragen. Sie können das Schema automatisch ableiten oder Ihr eigenes Schema angeben, um die Excel-Dateien zu analysieren. Standardmäßig liest der Parser alle Zellen, die von der oberen linken Zelle bis zur unteren rechten nicht leeren Zelle im ersten Blatt beginnen. Verwenden Sie die dataAddress Option, um ein anderes Blatt oder einen anderen Zellbereich zu lesen.
Sie können die Liste der Blätter in einer Excel-Datei abfragen, indem Sie die operation Option auf listSheets setzen.
Excel-Analyseoptionen
Die folgenden Optionen stehen zum Analysieren von Excel-Dateien zur Verfügung:
| Datenquellenoption | Description |
|---|---|
dataAddress |
Die Adresse des Zellbereichs, der in der Excel-Syntax gelesen werden soll. Wenn nicht angegeben, liest der Parser alle gültigen Zellen aus dem ersten Blatt.
|
headerRows |
Die Anzahl der ersten Zeilen in der Excel-Datei, die als Kopfzeilenzeilen behandelt und als Spaltennamen gelesen werden sollen. Wenn dataAddress angegeben, headerRows gilt für die Kopfzeilen innerhalb dieses Zellbereichs. Unterstützte Werte sind 0 und 1. Der Standardwert ist 0, in diesem Fall werden Spaltennamen automatisch generiert, indem die Spaltennummer an _c angefügt wird (z. B.: _c1, _c2, _c3...).Beispiele
|
operation |
Gibt den Vorgang an, der für die Excel-Arbeitsmappe ausgeführt werden soll. Der Standardwert ist readSheet, der Daten aus einem Blatt liest. Der andere unterstützte Vorgang ist listSheets, der die Liste der Blätter in der Arbeitsmappe zurückgibt. Für den listSheets Vorgang ist das zurückgegebene Schema ein struct mit den folgenden Feldern:
|
timestampNTZFormat |
Individuelle Formatzeichenfolge für einen Zeitstempel (als Zeichenfolge in Excel gespeichert) ohne Zeitzone, die dem Datumszeitmusterformat folgt. Dies gilt für Zeichenfolgenwerte, die als TimestampNTZTypegelesen werden. Standardwert: yyyy-MM-dd'T'HH:mm:ss[.SSS]. |
dateFormat |
Benutzerdefinierte Datumsformatzeichenfolge, die dem Datetime-Musterformat folgt. Dies gilt für Zeichenfolgenwerte, die als Dategelesen werden. Standardwert: yyyy-MM-dd. |
Examples
Hier finden Sie Codebeispiele zum Lesen von Excel-Dateien mithilfe des integrierten Connectors Lakeflow Connect.
Excel-Dateien mit Spark-Batch lesen
Sie können eine Excel-Datei aus dem Cloudspeicher (z. B. S3, ADLS) mithilfe von spark.read.excel lesen. Beispiel:
# 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>))
Lesen von Excel-Dateien mit SQL
Sie können die read_files Tabellenwertfunktion verwenden, um Excel-Dateien direkt mithilfe von SQL aufzunehmen. Beispiel:
-- 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"
);
Streamen von Excel-Dateien mit automatischem Ladeprogramm
Sie können Excel-Dateien mithilfe von Auto Loader streamen, indem Sie die Einstellung cloudFiles.format auf excel setzen. Beispiel:
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>)
Importieren von Excel-Dateien mithilfe von 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');
Analysieren komplexer nicht strukturierter Excel-Blätter
Für komplexe, nicht strukturierte Excel-Blätter (z. B. mehrere Tabellen pro Blatt, Dateninseln) empfiehlt Databricks, die Zellbereiche zu extrahieren, die Sie zum Erstellen Von Spark DataFrames mit den dataAddress Optionen benötigen. Beispiel:
df = (spark.read.format("excel")
.option("headerRows", 1)
.option("dataAddress", "Sheet1!A1:E10")
.load(<path to excel directory or file>))
Blätter auflisten
Sie können die Blätter in einer Excel-Datei mithilfe des listSheets Vorgangs auflisten. Das zurückgegebene Schema ist ein struct Mit den folgenden Feldern:
-
sheetIndex: lang -
sheetName: Zeichenfolge
Beispiel:
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"
)
Einschränkungen
- Kennwortgeschützte Dateien werden nicht unterstützt.
- Es wird nur eine Kopfzeile unterstützt.
- Zusammengeführte Zellwerte füllen nur die obere linke Zelle auf. Verbleibende untergeordnete Zellen werden auf
NULLgesetzt. - Das Streamen von Excel-Dateien mit Auto Loader wird unterstützt, aber Schemaevolution nicht. Sie müssen
schemaEvolutionMode="None"explizit festlegen. - "Strict Open XML Spreadsheet (Strict OOXML)" wird nicht unterstützt.
- Die Makroausführung in
.xlsmDateien wird nicht unterstützt. - Die Option
ignoreCorruptFileswird nicht unterstützt.
Häufig gestellte Fragen
Hier finden Sie Antworten auf häufig gestellte Fragen zum Excel-Connector in Lakeflow Connect.
Kann ich alle Blätter gleichzeitig lesen?
Der Parser liest jeweils nur ein Blatt aus einer Excel-Datei vor. Standardmäßig liest es das erste Blatt. Sie können ein anderes Blatt mithilfe der dataAddress Option angeben. Um mehrere Blätter zu verarbeiten, rufen Sie zuerst die Liste der Blätter ab, indem Sie die operation Option auf listSheetsfestlegen, dann die Blattnamen durchlaufen und die einzelnen Blätter lesen, indem Sie ihren Namen in der dataAddress Option angeben.
Kann ich Excel-Dateien mit komplexen Layouts oder mehreren Tabellen pro Blatt aufnehmen?
Standardmäßig liest der Parser alle Excel-Zellen aus der oberen linken Zelle in die untere rechte nicht leere Zelle. Sie können einen anderen Zellbereich mithilfe der dataAddress Option angeben.
Wie werden Formeln und verbundene Zellen behandelt?
Formeln werden als berechnete Werte aufgenommen. Bei verbundenen Zellen wird nur der obere linke Wert beibehalten (untergeordnete Zellen sind NULL).
Kann ich die Erfassung von Excel in Auto Loader- und Streamingaufträgen verwenden?
Ja, Sie können Excel-Dateien mithilfe von cloudFiles.format = "excel". Die Schemaentwicklung wird jedoch nicht unterstützt, daher müssen Sie "schemaEvolutionMode" auf "None" festlegen.
Wird kennwortgeschütztes Excel unterstützt?
Nein. Wenn diese Funktionalität für Ihre Workflows wichtig ist, wenden Sie sich an Ihren Databricks-Kontovertreter.