View Categories

Meng querying sebuah folder berisi file Parquet dengan SQL

Waktu baca 24 menit

KONEKTOR FOLDER PARKET

Meng querying sebuah folder berisi file Parquet dengan SQL

Parquet memiliki skema tersendiri, jadi tidak ada yang perlu ditebak. Arahkan Query Streams ke folder dan setiap file akan menjadi satu tabel SQL dengan nama kolom dan tipe yang persis sama seperti yang sudah dideklarasikan oleh file tersebut — tanpa Spark, tanpa Python, tanpa unggahan.

Jenis huruf dari footer Pengendus khusus metadata Langsung ke Excel Tidak ada yang diunggah
pesanan ekspor danau
bagian-00000.parket bagian-00001.parket bagian-00002.parket + 806 lainnya
skema dibaca dari setiap footer
Pilih negara,
       JUMLAH(jumlah_bersih)
DARI pesanan
KELOMPOKKAN BERDASARKAN negara;

Query Streams adalah platform integrasi basis data real-time yang aman, dan konektor Parquet Folder-nya mengubah folder berisi file .parquet menjadi satu tabel SQL aktif yang dapat Anda kueri dari Microsoft Excel, Google Sheets, Airtable, dan asisten AI Anda. Pelajari selengkapnya di QueryStreams.com dan Daftar gratis untuk melakukan query pada folder Parquet pertama Anda dalam hitungan menit.

Seseorang memberi Anda sebuah folder berisi file Parquet.

Data tersebut tiba melalui salah satu dari beberapa jalur yang sudah umum digunakan. Ekspor data lake mendarat di suatu share sebagai beberapa ratus bagian-00000.parket berkas. Sebuah pekerjaan dbt atau Spark menulis outputnya ke suatu tempat dan tempat itu ternyata adalah folder jaringan. Sebuah tim analitik menyerahkan sebuah ekstrak. Sebuah tabel gudang data diarsipkan ke disk ketika perpanjangan lisensi terlihat mahal, dan delapan belas bulan kemudian seseorang ingin tahu apa isinya.

Bagian yang merepotkan adalah Parquet tidak mudah dibaca manusia. Mengklik dua kali sebuah .parket File tersebut tidak melakukan apa pun yang berguna. Membukanya di editor teks hanya akan menampilkan layar penuh data biner. Saran yang Anda dapatkan ketika bertanya adalah "jalankan Spark" atau "tulis sedikit kode Python", dan keduanya bukanlah jawaban serius bagi seseorang yang pekerjaan sebenarnya adalah menyajikan angka kepada direktur keuangan pada hari Kamis.

Itu Konektor Folder Parket Ini adalah cara singkat. Anda mengarahkan Query Streams Agent ke folder tersebut, dan setiap file yang cocok akan menjadi bagian dari satu tabel SQL. Tidak ada yang dikonversi, tidak ada yang digabungkan ke dalam file baru, dan tidak ada yang diunggah — file tetap berada di tempatnya dan Anda melakukan query di tempat file tersebut berada.

Skema tersebut sudah ada di dalam file.

Inilah satu fakta yang membuat Parquet berbeda dari semua jenis folder lainnya, dan hal ini penting untuk dipahami karena menjelaskan mengapa konektor ini berjalan begitu lancar tanpa kendala.

Setiap berkas Parquet diakhiri dengan footer: sebuah blok metadata yang menyatakan nama kolom, tipe data pastinya, apakah setiap kolom mengizinkan nilai null, dan berapa banyak baris yang terdapat dalam berkas tersebut. Footer tersebut ditulis oleh pihak yang menghasilkan berkas tersebut, dan bersifat otoritatif. Ini bukan petunjuk atau konvensi — ini adalah deklarasi berkas itu sendiri tentang apa yang dikandungnya.

Satu file .parquet
Kelompok baris 1 — potongan kolom terkompresi Kelompok baris 2 — potongan kolom terkompresi Kelompok baris 3 — potongan kolom terkompresi Footer — nama kolom, tipe data, kemungkinan null, jumlah baris
Query Streams hanya membaca bagian footer untuk memahami tabel. Grup baris tidak pernah disentuh sampai Anda benar-benar menjalankan kueri.

Jadi, ketika konektor mengambil sampel folder, ia tidak memeriksa nilai data dan menarik kesimpulan darinya. Ia meminta setiap file yang diambil sampelnya untuk mendeskripsikan dirinya sendiri, membaca jawabannya, dan menetapkan itu sebagai definisi tabel. Tipe-tipe tersebut adalah... dinyatakan daripada menyimpulkan, yang berarti tidak ada ukuran sampel yang perlu dikhawatirkan dan tidak ada kemungkinan bahwa baris kesepuluh ribu bertentangan dengan apa yang tersirat dari seratus baris pertama.

Jenis-jenisnya juga dibawa tanpa perubahan. A DESIMAL(18,2) Kolom dalam file adalah kolom desimal dalam tabel, bukan perkiraan floating point, karena nilainya tidak pernah melewati string saat masuk. Semua hal lain dalam keluarga ini — pemindaian folder, buku besar file, cache lokal terenkripsi, tabel pemeliharaan — bekerja persis seperti yang dijelaskan di Cara kerja konektor File SetBerikut ini hanyalah hal-hal yang berbeda dari Parquet.

Hal yang tidak perlu Anda perdebatkan

Cara paling jelas untuk melihat keuntungannya adalah dengan membandingkannya dengan CSV, yang fungsinya sama tanpa footer. Semuanya Konektor Folder CSV Hal yang harus dideteksi, disepakati, dan dipertahankan dinyatakan secara gamblang di awal dalam Parquet.

PertanyaanFolder CSVFolder parket
Pengkodean karakter apa ini? Deteksi dilakukan per file, dan pengkodean campuran akan ditolak. Tidak muncul — teks disimpan sebagai UTF-8 dalam format itu sendiri.
Koma, titik koma, tab, atau pipa? Dicium, dan harus identik di seluruh folder. Tidak muncul — Parquet bukan teks yang dibatasi.
Apakah baris pertama merupakan header? Sebuah opsi, dengan kolom posisional jika tidak. Nama kolom terdapat di bagian footer.
Apakah kolom ini berupa angka atau teks? Disimpulkan dari nilai-nilai yang diambil sampelnya. Dinyatakan oleh berkas tersebut.
Akankah nilai uang tetap tepat? Ya, tetapi hanya karena konektor tersebut berusaha keras untuk mendeteksi kolom desimal dan menetapkannya sebagai nilai yang tepat. Angka desimal dalam file akan tetap berupa angka desimal dalam tabel. Tidak ada yang perlu diperhatikan.
Adalah 03/04/2026 Maret atau April? Mungkin memerlukan penjelasan eksplisit. Format tanggal. Tanggal disimpan sebagai tanggal, bukan sebagai teks.
Ada berapa baris dalam file ini? Hanya bisa diketahui dengan membacanya. Di bagian footer, gratis.

Sesuai dengan itu, hanya ada sedikit opsi yang dapat diatur. Konektor Folder CSV memiliki pembatas, karakter kutipan, sakelar header, pengkodean, string kosong, format tanggal, dan mode tata letak, karena semua itu benar-benar tidak pasti untuk file teks. Konektor Folder Parquet tidak memiliki antarmuka tersebut, karena file tersebut sudah memberikan jawabannya — pengaturan yang dimilikinya tercantum lebih lanjut di bawah ini.

Kolom yang hanya dimiliki oleh beberapa file

Folder berisi file Parquet jarang ditulis sekaligus. Sebuah pipeline mendapatkan field baru di bulan Maret, sehingga file dari bulan Maret dan seterusnya memiliki kolom yang tidak dimiliki file bulan Januari. Inilah satu-satunya penilaian yang benar-benar harus dilakukan oleh konektor, dan konektor melakukannya dengan cara yang spesifik.

Tabel yang disematkan adalah serikat dari kolom-kolom yang ditemukan di seluruh file yang diambil sampelnya, bukan irisannya. Kolom yang hanya muncul di beberapa di antaranya tetap bergabung dengan tabel — kolom tersebut hanya ditandai sebagai dapat bernilai null, dan dibaca sebagai BATAL untuk file-file yang dibuat sebelum itu. Oleh karena itu, Anda menyimpan setiap kolom di dalam folder, alih-alih kehilangan kolom-kolom yang ditambahkan belakangan.

Sebuah kolom hilang ditoleransi. Kolom yang memiliki jenis berbeda tidak. Jika ID pesanan Jika sebuah data berupa bilangan bulat 64-bit dalam satu file dan teks dalam file lain, konektor tersebut menolak untuk melakukan penambatan sama sekali dan menyebutkan perbedaan tersebut secara tepat: kolom mana, tipe mana, dan di dua file mana. Ia tidak akan memilih pemenang, dan ia tidak akan diam-diam mentransmisikan satu data ke data lainnya untuk menyelaraskan angka-angka tersebut.

Berkas yang sebenarnya bukan Parquet tidak akan menyebabkan sampel tersebut gagal diproses. Jika salah satu file sampel tidak dapat dibaca sebagai Parquet sama sekali — penulisan yang terpotong, .parket ekstensi pada sesuatu yang lain — itu dicatat dengan alasannya dan sampel berlanjut dengan file yang tersisa. Hanya jika tidak ada Jika file yang diambil sampelnya dapat dibaca, apakah konektor menolak, dan kemudian mencantumkan apa yang salah dengan masing-masing file tersebut.

Mengendus itu murah, karena tidak ada yang dibaca.

Query Streams mengambil sampel hingga 64 berkas Saat pertama kali terhubung ke sebuah folder. Untuk CSV, itu berarti membuka dan mengurai 64 file. Untuk Parquet, itu berarti mencari ke akhir dari 64 file dan membaca blok metadata, yang merupakan pekerjaan sepele bahkan ketika setiap file berukuran ratusan megabyte.

Trik yang sama juga berlaku selama sinkronisasi. Jumlah baris setiap file diambil dari footer tanpa menyentuh data, sehingga konektor mengetahui sebelumnya apakah suatu file akan melampaui batas jumlah baris per file, dan apakah sinkronisasi secara keseluruhan akan melampaui anggaran jumlah barisnya. Konektor dapat menolak dan menentukan batas tersebut. sebelum File yang bermasalah ditulis langsung ke dalam tabel, daripada menemukan masalah di tengah proses dan membiarkan Anda dengan pemuatan yang tidak lengkap.

PagarBawaanMaksimum
File per konektor100,0002,000,000
Kedalaman folder8 level64 level
Ukuran setiap file512 MB4 GB
Baris dari satu file mana pun2,000,00050,000,000
Baris per sinkronisasi10,000,000100,000,000
Anggaran waktu pemindaian300 detik3.600 detik

Ukuran file diperiksa terlebih dahulu, sebelum satu byte pun dipindahkan. File yang melebihi batas ukuran akan ditolak berdasarkan nama, dan sisa folder akan disinkronkan di sekitarnya.

Setiap baris mengetahui posisinya dalam berkasnya.

Seperti halnya setiap konektor File Set, setiap baris membawa sebuah berkas sumber kolom yang menyebutkan nama file asalnya dan sebuah _id_baris Itu unik di antara semuanya. Di dalam map Parquet, _id_baris lebih baik dari itu: Pembaca Parquet mengungkap sesuatu yang asli nomor baris berkasJadi, pengidentifikasi tersebut dibentuk dari nama file ditambah posisi urutan sebenarnya dari baris tersebut di dalam file, kemudian ditambahkan nol di depan hingga mencapai dua belas digit.

Padding adalah intinya. Mengurutkan berdasarkan _id_baris Format kolom menempatkan baris sesuai urutan file, bukan dalam urutan 1, 10, 100, 2, dan dua belas digit sudah cukup untuk menjaga agar hal itu tetap berlaku untuk satu triliun baris dalam satu file — jauh melampaui batas apa pun yang dapat Anda tetapkan. CSV tidak memiliki konsep yang setara untuk digunakan, jadi ini adalah salah satu tempat di mana format kolom memberi Anda sesuatu yang ekstra daripada sekadar menghemat waktu dan tenaga.

File bagian mana yang bertanggung jawab atas keseluruhannya?
SELECT _source_file, COUNT(*) AS row_count, SUM(net_amount) AS net_amount FROM orders GROUP BY _source_file ORDER BY net_amount DESC;

Dan karena pengidentifikasi baris diurutkan, Anda dapat melihat bagian awal file tertentu tanpa membaca seluruh folder — berguna ketika sebuah partisi terlihat mencurigakan dan Anda ingin melihat apa yang sebenarnya ada di dalamnya.

Baris pertama dari satu bagian berkas, sesuai urutan berkas.
SELECT _row_id, order_id, order_date, net_amount FROM orders WHERE _source_file = 'part-00042.parquet' ORDER BY _row_id LIMIT 20;

Ketika sebuah file berhenti cocok dengan pin tersebut

Setelah bentuknya ditetapkan, setiap file diperiksa terhadap bentuk tersebut saat masuk — dan sekali lagi, pemeriksaan itu adalah pembacaan footer, bukan pembacaan data, jadi cukup murah untuk dilakukan pada setiap file setiap saat. File yang tidak lagi sesuai akan diparkir: baris-barisnya tetap berada di luar tabel, alasannya dicatat, dan sisa folder disinkronkan secara normal.

Ada empat hal yang dianggap sebagai perbedaan pendapat, dan penting untuk mengetahui keempatnya secara terpisah karena hal ketiga akan mengejutkan orang.

  • Jenisnya berubah. Kolom tersebut ada, tetapi bagian footer sekarang menyatakannya sebagai sesuatu yang berbeda dari yang sebelumnya disematkan.
  • Kolom yang wajib diisi hilang. Kolom yang ditandai oleh pin sebagai tidak boleh kosong tidak ada dalam file tersebut.
  • Sebuah berkas kehilangan kolom yang sebelumnya dimilikinya. Meskipun kolom yang disematkan dapat bernilai null, sebuah file yang telah melakukan Kolom tersebut, yang saat ini diambil sampelnya dan kemudian dihentikan, dibiarkan kosong dan tidak dibaca sebagai nilai null. Membacanya sebagai null akan secara diam-diam mengurangi setiap jumlah yang dibangun berdasarkan kolom tersebut, dan total yang salah lebih buruk daripada file yang hilang.
  • Kolom baru pun muncul. Kolom yang belum pernah dilihat oleh pin tersebut, dan yang belum Anda kecualikan, akan memarkir file tersebut alih-alih dibuang secara diam-diam.
Evolusi skema dalam pipeline sumber biasanya menjadi penyebab utamanya. Jika pekerjaan Spark atau dbt Anda benar-benar mulai menulis kolom baru, folder tersebut telah berubah bentuk secara permanen dan solusinya adalah dengan melakukan re-pin daripada memperbaiki file. Mengubah salah satu opsi konektor akan melakukan pengambilan sampel ulang pada folder dan melakukan pinning definisi baru yang mencakup kolom baru, setelah itu file yang diparkir akan disinkronkan secara normal.

Membaca ulang sebuah file akan mengganti baris-barisnya, bukan menambahkannya. Apa pun yang sebelumnya disumbangkan oleh file tersebut akan dihapus dan kontennya saat ini akan dimasukkan dalam satu transaksi, sehingga partisi yang ditulis ulang tidak akan meninggalkan duplikat atau tabel yang setengah diperbarui jika terjadi kegagalan di tengah proses.

Semua pengaturan Parquet, dan kapan harus mengubahnya

Hal paling berguna yang bisa dikatakan tentang kartu ini adalah apa bukan di atasnya. Konektor Folder Parquet sama sekali tidak memiliki pengaturan khusus format. Sebuah folder CSV memiliki pembatas, karakter kutipan, pengkodean, string kosong, dan format tanggal. Sebuah folder Excel memiliki daftar lembar kerja. Sebuah folder JSONL memiliki kedalaman perataan. Parquet tidak memiliki satupun dari itu, dan alasannya adalah footer: skema dideklarasikan di dalam setiap file, sehingga tidak ada yang perlu diberitahukan kepada konektor dan tidak ada yang perlu ditebak oleh konektor. Seluruh kategori "opsi mana yang salah saya pilih?" tidak ada di sini.

Yang tersisa hanyalah daftar singkat. Semua hal lain yang Anda lihat di Koneksi tab — folder root, pemindaian subfolder dan kedalaman maksimum, pola pengecualian, mengikuti symlink, pola penguraian nama file, nama token folder, interval pemindaian, hashing konten, kebijakan penghapusan, retensi log peristiwa, dan pengaman pemindaian — berperilaku identik pada setiap jenis folder dan didokumentasikan sekali, secara lengkap, di panduan konektor File SetBagian ini hanya mencakup hal-hal yang spesifik untuk folder file Parquet.

Beberapa pengaturan disembunyikan sampai Anda mencentang "Tampilkan opsi lanjutan". Pengaturan hashing, kebijakan penghapusan, retensi log peristiwa, batasan pemindaian, empat batasan penyerapan data, dan penggantian manifes semuanya berada di balik tombol tersebut. Jika pengaturan yang disebutkan di bawah ini tidak muncul di layar, itulah alasannya.

Nama tabel

Diperlukan. Parquet adalah penggerak tabel tunggal: setiap file yang dicocokkan oleh pola penyertaan akan digabungkan menjadi satu tabel, dan inilah nama tabel tersebut dalam SQL — pesanan, acara, perjalanan, apa pun isi folder sebenarnya. Hanya huruf, angka, dan garis bawah, dan tidak boleh diawali dengan angka; hal lain akan ditolak saat Anda menyimpan, bukan saat sinkronisasi.

Pilih nama tersebut dengan sengaja, karena nama itulah yang akan digunakan oleh setiap kueri yang tersimpan, setiap pertanyaan Nova, dan setiap penyegaran spreadsheet. Mengganti namanya nanti tidak akan merusak, tetapi itu berarti Anda harus kembali memeriksa semua yang telah Anda buat sebelumnya. Sebuah folder berisi file-file bagian yang disebut... bagian-00000.parket Nama tabel tidak memberi tahu Anda apa isi setiap baris, jadi biasanya hanya nama tabel yang dapat dibaca manusia yang tertera pada data tersebut.

Sertakan pola

Bawaan: **/*.parket — diatur untuk Anda saat Anda memilih kartu Folder Parquet. Pola glob, satu per baris, menentukan file mana di bawah folder root yang termasuk dalam cakupan. Jika dibiarkan, ia akan mengambil setiap file Parquet di dalam struktur folder, yang merupakan hal yang Anda inginkan saat pertama kali mengarahkannya ke ekspor.

Mempersempit hal ini adalah tuas utama yang Anda miliki, dan hampir selalu merupakan langkah yang lebih baik daripada menaikkan tutupnya. Ekspor data lake dipartisi, sehingga struktur folder sudah memuat filter yang Anda inginkan. Jika pemindaian gagal karena share memuat lebih banyak file daripada batas yang diizinkan, batasi pola ke partisi yang sebenarnya Anda kueri daripada mencoba mencapai batas file — konektor yang membaca empat ribu file lebih cepat dipindai, lebih cepat disinkronkan, dan jauh lebih mudah dipahami daripada konektor yang membaca empat ratus ribu file dan memfilternya setelahnya.

Menentukan cakupan ekspor yang dipartisi
**/*.parquet setiap file Parquet di pohon (default) tahun=2026/**/*.parquet satu tahun dari lake yang dipartisi Hive **/part-*.parquet File bagian Spark, melewati ekstra yang dijatuhkan secara manual orders/**/*.parquet satu dataset dari share yang berisi beberapa

Satu aturan seringkali membingungkan orang, dan sang penyihir menyatakannya langsung di lapangan permainan: Folder campuran adalah dua konektor pada root yang sama, satu untuk setiap driver. Jika ekspor danau menyimpan file CSV di samping Parquet, memperluas pola ini menjadi **/*.* tidak memberikan Anda keduanya — kedua format tersebut tidak dapat berbagi bentuk yang disematkan. Buat konektor Folder Parquet dan sebuah Konektor Folder CSV mengarah ke jalur yang sama, masing-masing dengan pola penyertaan (include pattern) dan nama tabelnya sendiri.

Penggantian manifes (JSON)

Tersembunyi di balik Tampilkan opsi lanjutan, dan lebih berguna di Parquet daripada di tempat lain. Di tempat lain dalam keluarga ini, penggantian (override) adalah cara untuk memperbaiki sesuatu yang ditebak oleh konektor. Di sini tidak ada yang ditebak — jadi penggantian adalah cara untuk memperbaiki sesuatu yang saluran pipa Memang benar, dan itulah tepatnya kasus di mana Anda tidak bisa begitu saja memperbaiki file-file tersebut.

Tiga skenario mencakup hampir setiap penggunaan nyata. Sebuah job Spark yang diberi nama sebuah kolom. kolom_14 atau amt_net_x Dan tidak ada yang mau menulis itu dalam laporan. Sebuah kolom berisi sesuatu yang rahasia dan seharusnya tidak ada di dalam tabel sama sekali. Atau kolom numerik membutuhkan presisi lebih tinggi di dalam tabel daripada yang dideklarasikan dalam file. Ketiga hal tersebut hanyalah suntingan satu baris di sini, yang diterapkan saat bentuk tabel dikunci, sehingga menjadi bagian dari definisi tabel dan bukan sesuatu yang Anda terapkan kembali di setiap kueri.

Penggantian manifes — tiga kunci yang diterima konektor
{ "mengganti nama": { "qty": "kuantitas" }, "mengetik ulang": { "harga": "DECIMAL(18,4)" }, "mengecualikan": [ "catatan_internal" ] }
  • mengganti nama — Beri nama kolom yang lebih baik. Anda tidak dapat mengganti nama kolom. berkas sumber atau _id_baris, dan dua kolom tidak dapat diganti namanya menjadi hal yang sama.
  • mengetik ulang — Memaksa tipe kolom. Tipe yang Anda tetapkan di sini adalah instruksi yang disengaja, sehingga diterapkan tanpa pemeriksaan footer ketat yang seharusnya akan menahan file. Nama tipe biasa dengan presisi opsional saja: DESIMAL(18,4), VARCHAR, BIGINT, TANGGAL.
  • mengecualikan — Menghapus kolom dari tabel sepenuhnya. Perlu diketahui bahwa kolom yang dikecualikan juga merupakan kolom yang tidak lagi diperhatikan oleh pemeriksaan pergeseran (drift check), jadi ini adalah cara yang tepat untuk mengabaikan kolom yang terus berubah dalam pipeline.

Kotak tersebut harus berisi objek JSON atau kosong sama sekali — JSON yang tidak valid akan ditolak saat Anda menyimpan, bukan diabaikan begitu saja. Mengosongkan kotak akan menghapus pengaturan penggantian Anda. dan mengembalikan tabel ke bentuk yang ditentukan oleh footer, yang merupakan cara yang dimaksudkan untuk membatalkan penimpaan daripada menghapus dan membangun kembali konektor.

Mengubah pengaturan apa pun akan melakukan pengambilan sampel ulang pada folder tersebut. Itulah mekanisme di balik saran di bagian lain halaman ini — ketika sebuah pipeline benar-benar menambahkan kolom dan file mulai disimpan, menyimpan konektor lagi dengan opsi apa pun yang disentuh akan menetapkan definisi baru yang menyertakannya. Ini juga berarti bahwa penggantian (override) bukanlah pengeditan langsung: penggantian tersebut berlaku pada pin berikutnya, bukan pada baris yang sudah ada di tabel.

Mengapa tidak ada opsi tata letak Tabel?

Folder CSV, Excel, dan JSONL menawarkan Tata letak tabel Pilihan — satu tata letak yang disematkan, atau satu tabel per tata letak — karena itulah format yang disusun manusia secara manual, dan sebuah folder berisi format tersebut benar-benar mengakumulasi berbagai set kolom yang berbeda selama bertahun-tahun. Parquet tidak memiliki pengaturan itu, dengan sengaja. Parquet pada dasarnya ditulis oleh mesin: sesuatu menghasilkan file-file tersebut secara terprogram, dan jika sesuatu itu mengeluarkan beberapa bentuk berbeda ke dalam satu folder, memisahkannya ke dalam tabel terpisah hanya akan menutupi masalah alur kerja daripada mengungkapkannya.

Jadi, sebuah folder Parquet hanya mendapatkan satu tabel, dan ketidaksepakatan dilaporkan daripada diakomodasi. Kolom yang hilang diserap ke dalam gabungan dan ditandai sebagai dapat bernilai null; terjadi konflik. jenis merupakan penolakan yang disebutkan namanya. Jika Anda benar-benar menyimpan beberapa dataset yang tidak terkait pada satu share, jawabannya adalah satu konektor per dataset, dengan cakupan tertentu. Sertakan pola — yang bagaimanapun juga lebih jelas, karena masing-masing kemudian mendapatkan nama tabelnya sendiri.

Batas penyerapan dan batas pemindaian

Keempat batasan penyerapan (baris dan byte, per file dan per sinkronisasi) dan batasan pemindaian (file per pemindaian, kedalaman, anggaran waktu, paralelisme per root) berlaku untuk semua jenis folder, dan berada di balik Tampilkan opsi lanjutan, dan ikuti satu aturan yang patut diulang: biarkan satu kotak kosong untuk menerima pengaturan default, karena angka nol tidak pernah berarti tak terbatas dan ditolak mentah-mentah. Nilai-nilai mereka dan alasan untuk mengangkat masing-masing nilai tersebut terdapat di dalam Panduan konektor Set File; hal-hal yang paling sering menjadi perhatian seorang editor Parquet tercantum dalam tabel pembatas di atas.

Parquet memang memiliki satu keunggulan di sini, seperti yang dijelaskan sebelumnya: karena jumlah baris ada di footer, batasan jumlah baris per file diperiksa sebelum data file dibaca, sehingga pelanggaran akan berupa penolakan yang diberi nama, bukan pemuatan yang gagal di tengah jalan. Menaikkan batasan tetap menjadi solusi terbaik kedua. Persempit pola penyertaan terlebih dahulu.

Memasukkan data Parquet ke Microsoft Excel

Permintaan di balik sebagian besar hal ini adalah mengkonversi Parquet ke Excel, dan jawaban jujurnya adalah Anda seharusnya tidak mengonversinya sama sekali. Setelah folder menjadi konektor, add-in Query Streams untuk Microsoft Excel menjalankan kueri yang tersimpan dan memasukkan baris ke dalam lembar kerja, yang diperbarui setiap kali Anda memintanya. Anda mendapatkan Parquet di Excel tanpa langkah konversi, tanpa kluster Spark, dan tanpa salinan data yang diam-diam tersimpan di folder Unduhan seseorang. Kueri yang sama berfungsi tanpa perubahan di Google Sheets.

Anda memerlukan akun Query Streams dan Network Agent yang berjalan pada mesin yang dapat melihat folder tersebut — server, workstation dengan share yang dipetakan, atau laptop Anda sendiri. Konektor Folder Parquet memerlukan Agen Jaringan 2.6 atau yang lebih baru.

  1. Instal agen dari halaman unduhan jika belum berjalan.
  2. Di portal, tambahkan konektor data dan pilih Folder Parket.
  3. Masukkan jalur folder seperti yang dilihat oleh mesin agen, dan beri nama tabel — kolom ini wajib diisi, karena semua isi folder akan digabungkan menjadi satu tabel.
  4. Biarkan pola include tetap aktif. **/*.parket kecuali jika folder tersebut memuat lebih banyak data daripada yang Anda inginkan dalam tabel, dalam hal ini persempit tabelnya — **/bagian-*.parket, atau partisi tunggal seperti tahun=2026/**/*.parquet.
  5. Simpan. Agen membaca footer hingga 64 file, menetapkan skema, dan melaporkan kolom serta tipe yang ditemukannya.
  6. Buka pembuat kueri, pilih konektor, dan tulis SQL — atau minta Nova AI untuk menuliskannya untuk Anda.
  7. Simpan kueri tersebut, lalu jalankan dari add-in Microsoft Excel atau Google Sheets setiap kali Anda membutuhkan angka-angka tersebut.
Gunakan jalur yang dilihat agen. Huruf drive yang dipetakan di desktop Anda sendiri tidak akan dapat diakses di server yang menjalankan agen. Gunakan jalur UNC seperti... pesanan ekspor danau, atau jalur lokal di mesin agen itu sendiri, dan periksa apakah akun yang digunakan agen dapat membacanya. Ekspor data lake sering kali berada di bawah struktur folder partisi tanggal, jadi biarkan pengaturan kedalaman apa adanya kecuali jika struktur foldernya benar-benar lebih dalam dari delapan level.

Dari situ, folder tersebut berperilaku seperti sumber data lainnya. Folder tersebut dapat terhubung ke Microsoft SQL Server, PostgreSQL, MySQL, BigQuery, dan lainnya, serta ke konektor API seperti Stripe atau Shopify, sehingga tabel gudang data yang diarsipkan di berbagi file dapat digabungkan dengan data produksi langsung dalam satu pernyataan baca saja tanpa perlu memuat apa pun ke dalam gudang data terlebih dahulu.

Pertanyaan yang Sering Diajukan

Bagaimana cara membaca file Parquet tanpa Spark? +
Instal Query Streams Network Agent pada mesin yang dapat melihat folder tersebut dan tambahkan Folder Parket Konektor diarahkan ke sana. Folder tersebut menjadi tabel SQL yang dapat Anda kueri dari portal, Microsoft Excel, Google Sheets, atau asisten AI. Tidak ada cluster yang perlu dijalankan, tidak ada notebook yang perlu dipelihara, dan tidak ada Python yang perlu ditulis — agen membaca file di tempatnya berada dan skema berasal dari file itu sendiri.
Bisakah saya membuka file Parquet di Microsoft Excel? +
Tidak secara langsung — Parquet adalah format kolom biner dan Excel tidak memiliki pembaca bawaan untuk format tersebut. Dengan konektor Folder Parquet, Anda tidak membutuhkannya. Tulis kueri terhadap folder, simpan, dan jalankan dari add-in Query Streams; baris-baris tersebut akan masuk ke lembar kerja dan diperbarui sesuai permintaan. Karena Anda melakukan kueri dan bukan mengimpor, Anda dapat mengagregasi satu miliar baris dalam folder dan mengambil kembali beberapa ratus baris yang sebenarnya Anda inginkan.
Apakah saya perlu memberi tahu Query Streams tentang tipe kolomnya? +
Tidak, dan Anda juga tidak mungkin salah. Setiap file Parquet menyatakan nama kolom, tipe data, dan kemungkinan nilai null-nya sendiri di bagian footer, dan deklarasi itulah yang menjadi dasar pembuatan tabel. Tidak ada yang disimpulkan dari nilai data, sehingga tidak ada risiko pengambilan sampel dan tidak ada opsi tebakan tipe data yang perlu diatur. A DESIMAL(18,2) Data dalam file tersebut masuk ke dalam tabel sebagai angka desimal yang tepat, tidak pernah sebagai angka desimal.
Apakah semua file Parquet memerlukan kolom yang identik? +
Mereka perlu menyepakati hal tersebut. jenis, tidak ada dalam daftar kolom lengkap. Tabel yang disematkan adalah gabungan dari kolom-kolom yang ditemukan di seluruh file sampel, dan kolom yang hanya ada di beberapa di antaranya ditandai sebagai dapat bernull dan dibaca sebagai BATAL untuk file yang tidak memilikinya. Kolom dengan tipe berbeda di file yang berbeda disebut penolakan bernama — konektor memberi tahu Anda kolom dan kedua tipenya, bukan mengkonversi satu ke yang lain.
Pipeline saya menambahkan kolom. Apakah folder tersebut masih akan berfungsi? +
Berkas yang berisi kolom yang belum pernah dilihat oleh tabel yang disematkan akan diparkir, sehingga tabel yang ada tetap benar dan Anda langsung mengetahuinya. Ini adalah penolakan yang disengaja untuk membuang data secara diam-diam. Ketika kolom baru tersebut akan tetap ada, mengubah opsi konektor apa pun akan mengambil sampel ulang folder dan menyematkan definisi baru yang menyertakannya, setelah itu berkas yang diparkir akan disinkronkan secara normal.
Mengapa salah satu berkas Parquet saya diparkir? +
Empat alasan: tipe deklarasi kolom berubah, kolom yang tidak boleh bernull hilang, file menghapus kolom yang dimilikinya saat folder diambil sampelnya, atau file tersebut membawa kolom yang belum pernah dilihat oleh pin. File yang sama sekali tidak dapat dibaca sebagai Parquet akan diparkir dengan alasan tersebut. Setiap kasus dicatat dalam file_kejadian dengan nama file dan perselisihan spesifik, dan setiap file lainnya terus disinkronkan.
Berapa banyak file Parquet yang dapat dibaca oleh satu konektor? +
Secara default, 100.000 file dapat dimuat dalam 8 level folder, yang dapat ditingkatkan hingga 2.000.000 file dan 64 level. File individual dibaca hingga ukuran 512 MB dan 2.000.000 baris secara default, dengan batas maksimal 4 GB dan 50.000.000 baris. Karena jumlah baris berasal dari footer, file yang melebihi batas jumlah baris akan ditolak berdasarkan namanya sebelum data apa pun dimuat, bukan di tengah proses pemuatan.
Bisakah saya mengetahui dari file mana suatu baris berasal? +
Ya. Setiap baris membawa berkas sumber menamai file-nya dan _id_baris mengidentifikasinya secara unik di seluruh tabel. Untuk Parquet, pengidentifikasi dibangun dari posisi ordinal sebenarnya dari baris di dalam file-nya, dengan tambahan nol sehingga pengurutan berdasarkan _id_baris Benar-benar mengurutkan baris sesuai urutan file. Pengelompokan berdasarkan berkas sumber Ini biasanya merupakan cara tercepat untuk menemukan partisi yang bertanggung jawab atas gambar yang terlihat salah.
Apa yang terjadi ketika pipeline menulis file bagian baru? +
Mereka bergabung dengan tabel pada sinkronisasi berikutnya tanpa konfigurasi ulang, dan hanya file baru atau yang diubah yang dibaca. File yang ditulis ulang mengganti barisnya sendiri daripada menambahkannya, sehingga partisi yang dibuat ulang tidak meninggalkan duplikat. Menghapus file akan menghapus barisnya dari tabel dan penghapusan tersebut dicatat dalam file_kejadian.
Apakah data Parquet saya sudah diunggah atau dimodifikasi? +
Tidak keduanya. File tetap berada di tempatnya dan tidak pernah ditulis, dipindahkan, atau diganti namanya. Data yang diurai di-cache dalam keadaan terenkripsi pada mesin yang sama dengan Agen Jaringan, dan hanya baris yang dikembalikan oleh kueri yang meninggalkan jaringan Anda, melalui koneksi keluar yang dibuka sendiri oleh agen. Kueri harus berupa satu kueri saja. PILIH, DENGAN, PRAGMA, MENGGAMBARKAN atau MENJELASKAN pernyataan — apa pun yang dapat menulis akan ditolak sebelum dijalankan.

Memulai

Lihat ke dalam folder file Parquet tersebut.

Arahkan agen ke folder dan kueri setiap file bagian sebagai satu tabel SQL — dengan nama dan tipe kolom yang persis sama seperti yang sudah dideklarasikan dalam file tersebut. Tanpa Spark, tanpa Python, dan tidak ada yang keluar dari jaringan Anda.

Panduan terkait: Cara melakukan query pada folder berisi file menggunakan SQL. | Gabungkan beberapa file CSV menjadi satu tabel. | Unduh Agen Query Streams | Semua panduan Konektor Set File

Kategori: Konektor Set Berkas

Tag: parquet ke excel, kueri file parquet, membaca parquet tanpa spark, folder parquet, parquet di excel, konektor folder parquet, sql pada parquet, ekspor data lake

Deskripsi Meta: Meng querying sebuah folder berisi file Parquet sebagai satu tabel SQL dan menariknya ke Microsoft Excel. Tanpa Spark, tanpa unggahan.

Updated on 27 Agustus 2026

Powered by BetterDocs