Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Penting
Fitur ini ada di Beta. Admin ruang kerja dapat mengontrol akses ke fitur ini dari halaman Pratinjau . Lihat Kelola pratinjau Azure Databricks.
Anda dapat menyerap, mengurai, dan mengkueri file Excel untuk beban kerja batch dan streaming menggunakan dukungan format file Excel bawaan. Ini secara otomatis menyimpulkan skema dan jenis data, menghilangkan kebutuhan akan pustaka eksternal atau konversi file manual. Fitur ini menyediakan penyerapan yang mulus dari unggahan lokal dan penyimpanan cloud.
Fitur utama
- Langsung membaca file-file
.xlsdan.xlsxmenggunakan Databricks SQL dan Spark API. - Unggah
.xlsdan.xlsxfile secara langsung menggunakan UI Tambahkan Data. Lihat Buat atau ubah tabel menggunakan unggahan file. - Baca lembar apa pun dari file multi-lembar.
- Tentukan batas atau rentang sel yang tepat.
- Secara otomatis menyimpulkan skema, header, dan jenis data.
- Menyerap rumus yang dievaluasi.
- Gunakan Auto Loader untuk streaming terstruktur file Excel.
Prasyarat
Databricks Runtime 17.1 atau lebih tinggi.
Membuat atau mengubah tabel di UI
Anda dapat menggunakan antarmuka pengguna Buat atau ubah tabel untuk membuat tabel dari file Excel. Mulailah dengan muat file Excel atau pilih file Excel dari volume atau lokasi eksternal. Pilih lembar, sesuaikan jumlah baris header, dan tentukan rentang sel secara opsional. UI mendukung pembuatan satu tabel dari file dan lembar yang dipilih.
Memproses Berkas Excel
Anda dapat mengkueri file Excel menggunakan API batch Spark (spark.read) dan streaming (spark.readstream). Anda dapat memilih untuk menyimpulkan skema secara otomatis atau menentukan skema Anda sendiri untuk mengurai file Excel. Secara default, pengurai membaca semua sel yang dimulai dari sel kiri atas ke sel non-kosong kanan bawah di lembar pertama. Untuk membaca lembar atau rentang sel yang berbeda, gunakan opsi dataAddress.
Anda bisa mengkueri daftar lembar dalam file Excel dengan mengatur opsi operation ke listSheets.
Opsi penguraian di Excel
Opsi berikut tersedia untuk mengurai file Excel:
| Opsi sumber data | Description |
|---|---|
dataAddress |
Alamat rentang sel yang akan dibaca dalam sintaks Excel. Jika tidak ditentukan, pengurai membaca semua sel yang valid dari lembar pertama.
|
headerRows |
Jumlah baris awal dalam file Excel untuk diperlakukan sebagai baris header dan dibaca sebagai nama kolom. Ketika dataAddress ditentukan, headerRows berlaku untuk baris header dalam rentang sel tersebut. Nilai yang didukung adalah 0 dan 1. Defaultnya adalah 0, dalam hal ini nama kolom dihasilkan secara otomatis dengan menambahkan nomor kolom ke _c (misalnya: _c1, , _c2, _c3...).Examples:
|
operation |
Menunjukkan operasi yang akan dilakukan pada buku kerja Excel. Defaultnya adalah readSheet, yang membaca data dari lembar. Operasi lain yang didukung adalah listSheets, yang mengembalikan daftar lembar dalam buku kerja. Untuk operasi listSheets, skema yang dikembalikan adalah struct dengan bidang berikut:
|
timestampNTZFormat |
Format string kustom untuk nilai tanda waktu (disimpan sebagai string dalam Excel) tanpa zona waktu yang mengikuti format pola tanggal waktu. Ini berlaku untuk nilai string yang dibaca sebagai TimestampNTZType. Standar: yyyy-MM-dd'T'HH:mm:ss[.SSS]. |
dateFormat |
String format tanggal kustom yang mengikuti pola tanggal dan waktu. Ini berlaku untuk nilai string yang dibaca sebagai Date. Standar: yyyy-MM-dd. |
Examples
Temukan contoh kode untuk membaca file Excel menggunakan konektor bawaan Lakeflow Connect.
Membaca file Excel menggunakan pembacaan batch Spark
Anda dapat membaca file Excel dari penyimpanan cloud (misalnya, S3, ADLS) menggunakan spark.read.excel. Contohnya:
# 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>))
Membaca file Excel menggunakan SQL
Anda dapat menggunakan fungsi read_files bernilai tabel untuk menyerap file Excel secara langsung menggunakan SQL. Contohnya:
-- 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"
);
Mengalirkan file Excel menggunakan Auto Loader
Anda dapat melakukan streaming file Excel menggunakan Auto Loader dengan mengatur cloudFiles.format ke excel. Contohnya:
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>)
Mengimpor file Excel menggunakan 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');
Mengurai lembar Excel yang tidak terstruktur kompleks
Untuk lembar Excel yang kompleks dan tidak terstruktur (misalnya, beberapa tabel per lembar, pulau data), Databricks merekomendasikan untuk mengekstrak rentang sel yang Anda butuhkan untuk membuat Spark DataFrames menggunakan opsi dataAddress. Contohnya:
df = (spark.read.format("excel")
.option("headerRows", 1)
.option("dataAddress", "Sheet1!A1:E10")
.load(<path to excel directory or file>))
Daftar lembar
Anda dapat mencantumkan lembar dalam file Excel menggunakan operasi listSheets. Skema yang dikembalikan adalah struct dengan bidang berikut:
-
sheetIndex:panjang -
sheetName:String
Contohnya:
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"
)
Keterbatasan
- Menulis DataFrame ke format Excel tidak didukung. Anda dapat mengekspor data ke format lain seperti CSV atau Parquet.
- File yang dilindungi kata sandi tidak didukung.
- Hanya satu baris header yang didukung.
- Nilai sel yang digabungkan hanya mengisi sel kiri atas. Sel anak yang tersisa diatur ke
NULL. - Streaming Excel file menggunakan Auto Loader didukung, tetapi evolusi skema tidak. Anda harus secara eksplisit mengatur
schemaEvolutionMode="None". - "Strict Open XML Spreadsheet (Strict OOXML)" tidak didukung.
- Eksekusi makro dalam
.xlsmfile tidak didukung. - Opsi
ignoreCorruptFilestidak didukung.
FAQ
Temukan jawaban atas tanya jawab umum tentang konektor Excel di Lakeflow Connect.
Dapatkah saya membaca semua lembar sekaligus?
Pengurai hanya membaca satu lembar dari file Excel pada satu waktu. Secara default, ia membaca lembar pertama. Anda dapat menentukan lembar yang berbeda menggunakan dataAddress opsi . Untuk memproses beberapa lembar, pertama-tama ambil daftar lembar dengan mengatur opsi operation ke listSheets, lalu iterasi atas nama lembar dan baca masing-masing dengan memberikan namanya pada opsi dataAddress.
Bisakah saya menyerap file Excel dengan tata letak kompleks atau beberapa tabel per lembar?
Secara default, pengurai membaca semua sel Excel dari sel kiri atas ke sel non-kosong kanan bawah. Anda dapat menentukan rentang sel berbeda menggunakan opsi dataAddress.
Bagaimana rumus dan sel gabungan ditangani?
Rumus diserap sebagai nilai komputasinya. Untuk sel gabungan, hanya nilai kiri atas yang dipertahankan (sel anak adalah NULL).
Bisakah saya menggunakan penyerapan Excel di Auto Loader dan pekerjaan streaming?
Ya, Anda dapat melakukan streaming file Excel menggunakan cloudFiles.format = "excel". Namun, evolusi skema tidak didukung, jadi Anda harus mengatur "schemaEvolutionMode" ke "None".
Bisakah saya menulis DataFrame ke format Excel?
Tidak. Konektor Excel bawaan hanya mendukung pembacaan. Untuk mengekspor data, gunakan format tulis yang didukung seperti CSV atau Parquet.
Apakah Excel yang dilindungi kata sandi didukung?
Tidak. Jika fungsionalitas ini sangat penting untuk alur kerja Anda, hubungi perwakilan akun Databricks Anda.