Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Azure Databricks zahrnuje integrovanou podporu čtení .xls a .xlsx souborů, což eliminuje potřebu externích knihoven nebo ručních převodů souborů. Můžete číst libovolný list ze sešitu s více listy, cílit na konkrétní oblasti buněk, automaticky odvodit schéma a datové typy a pracovat s hodnotami vzorců jako jejich vypočítanými výsledky. Soubory aplikace Excel lze načítat z cloudového úložiště nebo je nahrát přímo v uživatelském rozhraní Add Data; podporovány jsou dávkové i streamovací úlohy pomocí nástroje Auto Loader.
Požadavky
Čtení a streamování souborů Excel vyžaduje Databricks Runtime 17.1 nebo vyšší a Auto Loader pro streamovací úlohy.
Možnosti
Ke konfiguraci zdrojů dat aplikace Excel použijte metody .option() a .options() objektu DataFrameReader. Úplný seznam podporovaných možností najdete v části DataFrameReader Možnosti aplikace Excel a DataFrameWriter Možnosti aplikace Excel.
Usage
Následující příklady demonstrují čtení souborů aplikace Excel pomocí dávkového rozhraní Spark (spark.read) a streamovacího rozhraní API. Ve výchozím nastavení parser čte všechny buňky od levé horní až po pravou dolní neprázdnou buňku v prvním listu; pomocí možnosti dataAddress můžete určit konkrétní list nebo rozsah buněk. Schéma se odvodí automaticky nebo můžete zadat vlastní.
Vytvoření nebo úprava tabulky v uživatelském rozhraní
Pomocí uživatelského rozhraní Vytvořit nebo upravit tabulku můžete vytvářet tabulky ze souborů Excel. ** Začněte tím, že nahrajte soubor Excel nebo vyberte soubor Excel ze svazku nebo z externího umístění. Vyberte list, upravte počet řádků záhlaví a volitelně zadejte rozsah buněk. Uživatelské rozhraní podporuje vytvoření jedné tabulky z vybraného souboru a listu.
Čtení souborů Excel
Soubor aplikace Excel můžete načíst z cloudového úložiště (například S3, ADLS) pomocí spark.read.excel nebo funkce read_files jazyka SQL.
Python
# 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>))
SQL
-- 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"
);
Streamování Excel souborů pomocí Auto Loaderu
Soubory Excel můžete streamovat pomocí Auto Loaderu nastavením cloudFiles.format na excel. Například:
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>)
Ingestování souborů Excel pomocí COPY INTO
Pomocí COPY INTO načtete soubory aplikace Excel z cloudového úložiště idempotentně do tabulky Delta.
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');
Seznamy listů
Listy v souboru Excel můžete zobrazit pomocí operace listSheets. Vrácené schéma je struct s následujícími poli:
-
sheetIndex: dlouhý -
sheetName:Řetězec
Například:
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"
)
Analýza složitých nestrukturovaných listů Excel
U složitých nestrukturovaných Excel listů (například více tabulek na list, datové ostrovy) doporučuje Databricks extrahovat oblasti buněk, které potřebujete k vytvoření datových rámců Sparku pomocí možností dataAddress.
df = (spark.read.format("excel")
.option("headerRows", 1)
.option("dataAddress", "Sheet1!A1:E10")
.load(<path to excel directory or file>))
Omezení
- Soubory chráněné heslem se nepodporují.
- Podporuje se jenom jeden řádek záhlaví.
- Sloučené hodnoty buněk naplňují pouze levou horní buňku. Zbývající podřízené buňky jsou nastaveny na
NULLhodnotu. - Streamování Excel souborů pomocí Auto Loaderu je podporováno, ale vývoj schémat není. Musíte explicitně nastavit
schemaEvolutionMode="None". - "Strict Open XML Spreadsheet (Strict OOXML)" není podporováno.
- Spouštění maker v
.xlsmsouborech není podporováno. - Tato
ignoreCorruptFilesmožnost není podporována.
časté otázky
Najděte odpovědi na nejčastější dotazy týkající se konektoru Excel v Lakeflow Connect.
Můžu číst všechny listy najednou?
Analyzátor najednou čte jenom jeden list ze souboru Excel. Ve výchozím nastavení čte první list. Pomocí možnosti dataAddress můžete zadat jiný list. Pokud chcete zpracovat více listů, nejprve načtěte seznam listů nastavením volby operation na listSheets, a poté projděte názvy listů a každý z nich přečtěte zadáním jeho názvu do volby dataAddress.
Mohu načíst Excel soubory se složitými rozloženími nebo s více tabulkami na listu?
Analyzátor ve výchozím nastavení čte všechny buňky Excel z levé horní buňky do neprázdné buňky. Pomocí volby dataAddress můžete zadat jiný rozsah buněk.
Jak se zpracovávají vzorce a sloučené buňky?
Vzorce se přijímají jako jejich vypočítané hodnoty. U sloučených buněk je zachována pouze levá horní hodnota (podřízené buňky jsou NULL).
Mohu použít příjem dat z Excelu v úlohách Auto Loaderu a streamování?
Ano, soubory Excel můžete streamovat pomocí cloudFiles.format = "excel". Vývoj schématu však není podporován, takže je nutné nastavit "schemaEvolutionMode" na "None".
Je podporován Excel chráněný heslem?
Ne. Pokud je tato funkce pro vaše pracovní postupy důležitá, obraťte se na zástupce účtu Databricks.
Dodatečné zdroje
- Čtení a zápis souborů CSV: Pokud je zdroj dat možné exportovat do souboru CSV, je soubor CSV jednodušší formát s širší podporou nástrojů a bez závislosti na vyhrazeném analyzátoru.