आँकड़ों और विज्ञापन के लिए कुकीज़
हम आँकड़ों और विज्ञापन के लिए कुकीज़ इस्तेमाल करते हैं, दोनों Google को जाती हैं। मना करने से आपको दिखने वाली किसी चीज़ में कोई फ़र्क़ नहीं पड़ता।निजता पेज पढ़ें
यहाँ आप XLSX को Parquet में बदलते हैं, मुफ़्त और बिना खाते के: फ़ाइल ऊपर छोड़िए और कुछ ही सेकंड में नतीजा डाउनलोड के लिए तैयार मिलेगा। कन्वर्ज़न आपके अपने ब्राउज़र के भीतर होता है, इसलिए फ़ाइल कभी अपलोड नहीं होती। यह Windows, macOS और Linux पर वैसे ही चलता है जैसे iPhone और Android पर, और कनेक्शन काट देने पर भी चलता रहता है।
एक बार में 100 फ़ाइलें। फ़ॉर्मेट अलग-अलग हों तो भी चलेगा।
ये एक के बाद एक बदलती हैं और साथ में एक ZIP बनकर उतरती हैं।
XLSX से Parquet
वर्कबुक का हर दूसरा लक्ष्य एक-के-बाद-एक रिकॉर्ड सहेजता है। Parquet एक-के-बाद-एक फ़ील्ड सहेजता है: पचास हज़ार ऑर्डर की तारीख़ें साथ, फिर पचास हज़ार शहर, फिर सारी रक़म। यह फ़ॉर्मैटिंग की पसंद नहीं, फ़ॉर्मेट के होने की पूरी वजह है।
नतीजा पहली बार क्वेरी करने पर दिखता है — दो सौ फ़ील्ड में से दो पढ़ने वाला सवाल सिर्फ़ दो कॉलम के बराबर बाइट छूता है, पूरी रो नहीं। बदलना इसलिए ट्रांसपोज़िशन भी है, सिर्फ़ सिरियलाइज़ेशन नहीं।
टाइप वैल्यू से तय होता है, घोषित नहीं होता, क्योंकि स्प्रेडशीट कोई स्कीमा नहीं ढोती। हर कॉलम पूरी तरह जाँचा जाता है: सारी ग़ैर-ख़ाली वैल्यू बूलियन हों तो BOOLEAN; सारी 32-बिट सीमा के भीतर पूरे नंबर हों तो INT32; कुछ और हो तो DOUBLE; बाक़ी सब स्ट्रिंग।
खाली जगहें इसमें शामिल नहीं होतीं। पूरी गिनती पढ़ना नमूने लेने से धीमा है और उस तरह ग़लत नहीं हो सकता जिस तरह नमूना गड़बड़ करता है।
पाँच हज़ार अंकीय एंट्री के बाद SW1A 1AA वाला पिनकोड कॉलम एक स्ट्रिंग कॉलम है, और अंकीय एंट्री भी स्ट्रिंग बनकर लिखी जाती हैं।
पहली रो से टाइप उधार लेने वाला विकल्प एक ऐसी फ़ाइल बनाता जो लोड होती, चलती, और चुपचाप जो मेल न खाए उसे मिटा देती। स्ट्रिंग कॉलम दिखता है, एक एक्सप्रेशन में कास्ट किया जा सकता है, और कभी चुपचाप रो नहीं खोता।
Parquet में 64-बिट इंटीजर टाइप है, पर यहाँ इस्तेमाल नहीं होता। वैल्यू वर्कबुक से JavaScript नंबर के रूप में आती हैं, जो 53 बिट सटीकता रखते हैं।
ऐसी वैल्यू को INT64 लिखना एक ऐसी सटीकता का वादा करेगा जो अब नंबर के पास है ही नहीं। DOUBLE ईमानदार घोषणा है। अगर आपके डेटा में इससे बड़े ID हैं, स्प्रेडशीट में उन्हें टेक्स्ट के रूप में सहेजिए।
पचास हज़ार रो और छह कॉलम की एक शीट पर Parquet फ़ाइल 301 KB में आई। वही डेटा .xlsx के रूप में लगभग 4.3 MB था और टैब-अलग टेक्स्ट के रूप में 1.8 MB।
यह फ़र्क़ सिर्फ़ कंप्रेशन से नहीं आता। कॉलम में दोहराई वैल्यू एक बार सहेजी और संदर्भित होती हैं, इसलिए शहर और प्रोडक्ट कोड कॉलम लगभग मुफ़्त में आते हैं।
स्प्रेडशीट किसी तारीख़ सेल में जो सहेजती है वह एक नंबर और एक दिखावट-फ़ॉर्मेट है। बदलाव वही नंबर लिखता है, इसलिए 1 जनवरी 2024 दिसंबर 1899 के आख़िर से गिनकर 45292 बन जाता है, और कॉलम को इंटीजर की तरह टाइप किया जाता है।
कैलेंडर लगाना जहाँ आप क्वेरी करें वहाँ एक-पंक्ति एक्सप्रेशन है — दिन-गिनती को epoch तारीख़ में जोड़ना — और वहीं करना बेहतर है बजाय वर्कबुक को टेक्स्ट में फिर से फ़ॉर्मैट करने के।
कुछ ख़ास चाहिए नहीं। DuckDB इसे FROM क्लॉज़ में सीधे पढ़ता है, pandas एक ही कॉल से पढ़ता है। फ़ाइल चार बाइट PAR1 से शुरू और ख़त्म होती है, जिससे इनमें से कोई भी इसे पहचान लेता है।
लोड करने के बाद सबसे पहले अनुमानित टाइप देखना ज़रूरी है, पहली दस रो नहीं। जो कॉलम आपको अंकीय लगे और टेक्स्ट बनकर आया, वह स्प्रेडशीट के बारे में एक सच बता रहा है।
बदलाव वर्कबुक की पहली शीट पढ़ता है। Parquet एक स्कीमा वाली एक टेबल रखता है, इसलिए कई शीट को बिना किसी मर्ज गढ़े एक फ़ाइल में नहीं दिखाया जा सकता।
कई मायने रखने वाली शीट वाले वर्कबुक के लिए हर एक अलग बदलिए और क्वेरी इंजन को उन्हें साथ जोड़ने दीजिए — यह वही व्यवस्था है जिसके लिए ये इंजन बने हैं।
दोनों हिस्से आपके ब्राउज़र में चलते हैं: स्प्रेडशीट रीडर और Parquet राइटर दोनों पेज पर माँग पर लोड लाइब्रेरी हैं, और कोई अनुरोध वर्कबुक कहीं नहीं ले जाता।
सीमा याददाश्त की है, किसी प्लान की नहीं। शीट को रो में पढ़ा जाता है, कॉलम में बदला जाता है और लिखा जाता है, इसलिए पूरी टेबल एक साथ मौजूद रहती है — दसियों मेगाबाइट सामान्य है।
| XLSX | Parquet | |
|---|---|---|
| पूरा नाम | Excel वर्कबुक | Apache Parquet |
| फ़ाइल एक्सटेंशन | .xlsx | .parquet |
| मीडिया टाइप | application/vnd.openxmlformats-officedocument.spreadsheetml.sheet | application/vnd.apache.parquet |
| कंप्रेशन | — | बिना नुक़सान — कुछ छोड़ा नहीं जाता |
| पहली बार प्रकाशित | 2007 | 2013 |
| प्रकाशक | Microsoft | Apache Software Foundation |
| विनिर्देश | ECMA-376 | — |
| लाइसेंस | खुला मानक | खुला मानक |
| आज की स्थिति | मौजूदा | मौजूदा |
| ब्राउज़र में खुलता है | कोई ब्राउज़र नहीं | कोई ब्राउज़र नहीं |
| इसकी जगह विचारणीय | CSV, ODS | CSV, JSON |
स्प्रेडशीट एक तय पन्ना बन जाती है। फ़ॉर्मूले उसके बाद फ़ॉर्मूले नहीं रहते, सिर्फ़ अपना आख़िरी नतीजा रह जाते हैं, और पन्ना कहाँ टूटेगा यह शीट नहीं बल्कि प्रिंट क्षेत्र तय करता है — इसीलिए चौड़ी XLSX फ़ाइल Parquet में अक्सर कई पन्नों पर बँटकर आती है।
दोनों तरफ़ के प्रोग्राम अलग हैं: XLSX फ़ाइल Microsoft Excel, LibreOffice Calc और Google Sheets में खुलती है और Parquet फ़ाइल pandas, Apache Spark और DuckDB में — यानी नतीजा जिसके पास जाएगा, उसे दूसरी सूची में से कोई प्रोग्राम चाहिए होगा।
दोनों का निशाना अलग काम है: XLSX का एडिटिंग पर, Parquet का सहेजना और प्रोग्रामों के बीच डेटा ले जाना पर। इस पर सोचना बनता है, क्योंकि जिस वजह से एक मौजूद है, आम तौर पर उसी वजह से दूसरा असुविधाजनक होता है।
XLSX Microsoft का फ़ॉर्मेट है, जो 2007 में आया। यह ECMA-376 में तय किया गया है, और अगर फ़ाइल को उस औज़ार से ज़्यादा जीना है जिसने उसे लिखा, तो यह बात क़ीमती है।
Parquet Apache Software Foundation का है और 2013 से चला आ रहा है। pandas, Apache Spark और DuckDB इस फ़ॉर्मेट को पढ़ लेते है।
नहीं। यह कन्वर्ज़न पूरी तरह आपके ब्राउज़र में होता है, इसलिए फ़ाइल आपके डिवाइस से बाहर नहीं जाती। आप ख़ुद जाँच सकते हैं: डेवलपर टूल्स का नेटवर्क टैब खोलिए और कुछ बदल कर देखिए। आपको पेज ख़ुद दिखेगा और आँकड़ों तथा विज्ञापन के वे अनुरोध दिखेंगे जिनसे इस सेवा का ख़र्च निकलता है — और एक भी ऐसा अनुरोध नहीं जो आपकी फ़ाइल साथ ले जा रहा हो। इस जोड़ी के पीछे parquet-wasm है, Apache Arrow के पाठक का एक WebAssembly संस्करण; आपका ब्राउज़र इसे एक बार उतारता है और फिर सहेज कर रखता है।
हाँ। न खाता, न वॉटरमार्क, और न कोई रोज़ का कोटा जो ख़त्म हो: यह आपकी अपनी मशीन पर चलता है, इसलिए आप जितनी बार चाहें लौट सकते हैं। ब्राउज़र 100 MB तक की फ़ाइलें सँभालता है, एक बार में 100। parquet-wasm आपकी अपनी मशीन पर उतरता है और वहीं चलता है — इसीलिए उस पर कोई गिनती नहीं है।
XLSX और Parquet सामग्री का वर्णन बुनियादी तौर पर अलग-अलग तरीक़ों से करते हैं। इसलिए यह कन्वर्ज़न नक़ल नहीं, पुनर्निर्माण है: ईमानदार, पर बाइट-दर-बाइट एक जैसा नहीं। सिर्फ़ पहली शीट पढ़ी जाती है, और उसमें भी सिर्फ़ मान। सूत्र, फ़ॉर्मैटिंग, कॉलम की चौड़ाई और पहली के बाद की हर शीट पीछे रह जाती है।
स्प्रेडशीट एक तय पन्ना बन जाती है। फ़ॉर्मूले उसके बाद फ़ॉर्मूले नहीं रहते, सिर्फ़ अपना आख़िरी नतीजा रह जाते हैं, और पन्ना कहाँ टूटेगा यह शीट नहीं बल्कि प्रिंट क्षेत्र तय करता है — इसीलिए चौड़ी XLSX फ़ाइल Parquet में अक्सर कई पन्नों पर बँटकर आती है।