Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
Viktigt!
Den här funktionen finns i Beta. Arbetsyteadministratörer kan styra åtkomsten till den här funktionen från sidan Förhandsversioner . Se Hantera förhandsversioner av Azure Databricks.
Du kan läsa in, parsa och fråga Excel-filer för både batch- och strömmande arbetsbelastningar med hjälp av inbyggt stöd för Excel-filformat. Den härleder automatiskt schema- och datatyper, vilket eliminerar behovet av externa bibliotek eller manuella filkonverteringar. Den här funktionen ger sömlös inmatning från både lokala uppladdningar och molnlagring.
Viktiga funktioner
- Läs
.xlsoch.xlsxfiler direkt med Databricks SQL och Spark API:er. - Ladda upp
.xlsoch.xlsxfiler direkt med hjälp av användargränssnittet lägg till data. Se Ladda upp filer till Azure Databricks. - Läs valfritt blad från en fil med flera blad.
- Ange exakta cellgränsningar eller intervall.
- Avled automatiskt schema, rubriker och datatyper.
- Mata in utvärderade formler.
- Använd Auto Loader för strukturerad direktuppspelning av Excel-filer.
Förutsättningar
Databricks Runtime 17.1 eller senare.
Skapa eller ändra en tabell i användargränssnittet
Du kan använda användargränssnittet skapa eller ändra tabell för att skapa tabeller från Excel-filer. Börja med att ladda upp en Excel-fil eller välja en Excel-fil från en volym eller en extern plats. Välj bladet, justera antalet rubrikrader och ange ett cellområde. Användargränssnittet har stöd för att skapa en enda tabell från den valda filen och bladet.
Sök i Excel-filer
Du kan fråga dina Excel-filer med Spark batch-API:er (spark.read) och streaming-API:er spark.readstream. Du kan välja att automatiskt härleda schemat eller ange ett eget schema för att parsa Excel-filerna. Som standard läser parsern alla celler från cellen överst till vänster till cellen längst ned till höger som inte är tom i det första bladet. Om du vill läsa ett annat blad eller cellområde använder du alternativet dataAddress .
Du kan hämta listan med blad i en Excel-fil genom att ange operation alternativet till listSheets.
Excel-parsningsalternativ
Följande alternativ är tillgängliga för att parsa Excel-filer:
| Alternativ för datakälla | Description |
|---|---|
dataAddress |
Adressen till cellområdet som ska läsas i Excel-syntax. Om den inte anges läser parsern alla giltiga celler från det första bladet.
|
headerRows |
Antalet inledande rader i Excel-filen som ska behandlas som rubrikrader och läsas som kolumnnamn. När dataAddress anges headerRows gäller för rubrikraderna inom cellområdet. Värden som stöds är 0 och 1. Standardvärdet är 0, i vilket fall kolumnnamn genereras automatiskt genom att lägga till kolumnnumret till _c (till exempel: _c1, _c2, _c3, ...).Examples:
|
operation |
Anger vilken åtgärd som ska utföras på Excel-arbetsboken. Standardvärdet är readSheet, som läser data från ett blad. Den andra åtgärden som stöds är listSheets, som returnerar listan över blad i arbetsboken. För åtgärden listSheets är det returnerade schemat ett struct med följande fält:
|
timestampNTZFormat |
Anpassad formatsträng för ett tidsstämpelvärde (lagras som en sträng i Excel) utan en tidszon som följer datetime-mönsterformatet. Detta gäller för strängvärden som läses som TimestampNTZType. Förvald: yyyy-MM-dd'T'HH:mm:ss[.SSS]. |
dateFormat |
Anpassad datumformatsträng som följer datetime-mönsterformatet. Detta gäller för strängvärden som läses som Date. Förvald: yyyy-MM-dd. |
Examples
Hitta kodexempel för att läsa Excel-filer med hjälp av den inbyggda anslutningsappen Lakeflow Connect.
Läsa Excel-filer genom Spark-batchläsning
Du kan läsa en Excel-fil från molnlagring (till exempel S3, ADLS) med hjälp av spark.read.excel. Till exempel:
# 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>))
Läsa Excel-filer med SQL
Du kan använda funktionen read_files table-valued för att mata in Excel-filer direkt med HJÄLP av SQL. Till exempel:
-- 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"
);
Strömma Excel-filer med Auto Loader
Du kan strömma Excel-filer med automatisk inläsning genom att ange cloudFiles.format till excel. Till exempel:
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>)
Mata in Excel-filer med hjälp av 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');
Parsa komplexa icke-strukturerade Excel-blad
För komplexa, icke-strukturerade Excel-blad (till exempel flera tabeller per ark, dataöar) rekommenderar Databricks att du extraherar de cellområden som du behöver för att skapa dina Spark DataFrames med hjälp av dataAddress alternativen. Till exempel:
df = (spark.read.format("excel")
.option("headerRows", 1)
.option("dataAddress", "Sheet1!A1:E10")
.load(<path to excel directory or file>))
Lista blad
Du kan lista bladen i en Excel-fil med hjälp av åtgärden listSheets . Det returnerade schemat är ett struct med följande fält:
-
sheetIndex: lång -
sheetName: Sträng
Till exempel:
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"
)
Begränsningar
- Lösenordsskyddade filer stöds inte.
- Endast en rubrikrad stöds.
- Sammanfogade cellvärden fylls endast i cellen längst upp till vänster. Återstående barnceller ställs in på
NULL. - Direktuppspelning av Excel-filer med automatisk inläsning stöds, men inte schemautveckling. Du måste uttryckligen ange
schemaEvolutionMode="None". - "Strikt Open XML-kalkylblad (Strikt OOXML)" stöds inte.
- Makrokörning i
.xlsmfiler stöds inte. - Alternativet
ignoreCorruptFilesstöds inte.
Vanliga frågor
Hitta svar på vanliga frågor om Excel-anslutningsappen i Lakeflow Connect.
Kan jag läsa alla blad samtidigt?
Parsern läser bara ett blad från en Excel-fil i taget. Som standard läser den det första bladet. Du kan ange ett annat blad med hjälp av dataAddress alternativet . Om du vill bearbeta flera blad hämtar du först listan över blad genom att ange operation alternativet till listSheets, sedan iterera över bladnamnen och läsa var och en genom att ange dess namn i dataAddress alternativet .
Kan jag mata in Excel-filer med komplexa layouter eller flera tabeller per blad?
Som standard läser parsern alla Excel-celler från den övre vänstra cellen till den nedre högra cellen som inte är tom. Du kan ange ett annat cellområde med hjälp av dataAddress alternativet .
Hur hanteras formler och sammanfogade celler?
Formler matas in som beräknade värden. För sammanslagna celler behålls endast värdet i det övre vänstra hörnet (underordnade celler är NULL).
Kan jag använda Excel-inmatning i autoinläsnings- och strömningsjobb?
Ja, du kan strömma Excel-filer med .cloudFiles.format = "excel" Schemautvecklingen stöds dock inte, så du måste ange "schemaEvolutionMode" till "None".
Stöds lösenordsskyddad Excel?
Nej. Om den här funktionen är viktig för dina arbetsflöden kontaktar du din Databricks-kontorepresentant.