आँकड़ों और विज्ञापन के लिए कुकीज़
हम आँकड़ों और विज्ञापन के लिए कुकीज़ इस्तेमाल करते हैं, दोनों Google को जाती हैं। मना करने से आपको दिखने वाली किसी चीज़ में कोई फ़र्क़ नहीं पड़ता।निजता पेज पढ़ें
यहाँ आप NDJSON को XLSX में बदलते हैं, मुफ़्त और बिना खाते के: फ़ाइल ऊपर छोड़िए और कुछ ही सेकंड में नतीजा डाउनलोड के लिए तैयार मिलेगा। कन्वर्ज़न आपके अपने ब्राउज़र के भीतर होता है, इसलिए फ़ाइल कभी अपलोड नहीं होती। यह Windows, macOS और Linux पर वैसे ही चलता है जैसे iPhone और Android पर, और कनेक्शन काट देने पर भी चलता रहता है।
एक बार में 100 फ़ाइलें। फ़ॉर्मेट अलग-अलग हों तो भी चलेगा।
ये एक के बाद एक बदलती हैं और साथ में एक ZIP बनकर उतरती हैं।
NDJSON से XLSX
लाइन-दर-लाइन JSON फ़ाइल के इस साइट पर मौजूद बदलावों में यही अकेला किसी इंसान के लिए बना है। बाक़ी हर लक्ष्य — लोडर के लिए CSV, डेटाबेस के लिए SQL, क्वेरी इंजन के लिए Parquet — दूसरे छोर पर सॉफ़्टवेयर मान लेता है। वर्कबुक किसी ऐसे इंसान को मान लेती है जो इसे खोलेगा, कॉलम चौड़ा करेगा और तारीख़ से छाँटेगा।
अगर फ़ाइल किसी पाइपलाइन में जानी है, तो यह ग़लत पन्ना है और CSV या Parquet सही है। अगर यह किसी सहकर्मी, ग्राहक या फ़ाइनेंस टीम के पास जानी है, तो वर्कबुक उस बातचीत से बचाती है जो टेक्स्ट फ़ाइल के बाद होती है: यह कैसे खोलूँ, संदर्भ नंबर ग़लत क्यों हैं, कौन-सा कॉलम क्या है।
सीमांकित फ़ाइल में कोई प्रकार होता ही नहीं, इसलिए खोलते वक़्त Excel हर कॉलम के लिए ख़ुद अंदाज़ा लगाता है। यही वह अनुमान है जहाँ जाना-पहचाना नुक़सान होता है: खाता और उत्पाद कोड से आगे के शून्य ग़ायब हो जाते हैं, तारीख़ जैसा दिखने वाला कुछ भी तारीख़ बन जाता है।
NDJSON फ़ाइल के रिकॉर्ड पहले से अपने प्रकार लिए होते हैं — मात्रा एक संख्या है, फ़्लैग बूलियन है, स्ट्रिंग के रूप में निर्यात संदर्भ स्ट्रिंग है। उन्हें वर्कबुक में लिखना यह फ़र्क़ फ़ाइल में ही सुरक्षित रख देता है, इसलिए खोलते वक़्त कुछ अंदाज़ा नहीं लगता और 00714 का कोड 00714 ही आता है। यह एक फ़र्क़ पूरी तरह की एक समस्या हटा देता है।
जिस फ़ील्ड की वैल्यू ऑब्जेक्ट है वह प्रति-पत्ती एक कॉलम बन जाती है, हेडिंग में रास्ता लिखा होता है: कोई नेस्टेड user ऑब्जेक्ट जिसमें नाम हो, वह user.name नाम के कॉलम की तरह आता है, अपने रिकॉर्ड वाले प्रकार के साथ। सरणियाँ स्थिति के हिसाब से फैलती हैं, इसलिए a और b वाली tags सूची tags.0 और tags.1 बनती है, और हेडिंग पूरी फ़ाइल में हर जगह की सूची का जोड़ होती हैं।
नतीजा नुक़सान नहीं, चौड़ाई है, और चौड़ाई अपनी अलग दिक़्क़त है जब पाने वाला इंसान हो। किसी इवेंट रिकॉर्ड में request ब्लॉक, user ब्लॉक और context ऑब्जेक्ट छह फ़ील्ड से तीस कॉलम तक पहुँचा सकते हैं, जो कोई नहीं पढ़ता। जहाँ नेस्टेड ब्लॉक मुद्दे की बात नहीं, वहाँ बदलने से पहले jq से उन्हें छाँट देना संकरी, ज़्यादा पढ़ने लायक़ वर्कबुक देता है।
वर्कबुक में सिर्फ़ एक शीट होती है, क्योंकि लाइन-दर-लाइन फ़ाइल रिकॉर्ड की एक ही धारा है जिसमें अलग-अलग टैब में बाँटने लायक़ कोई भीतरी विभाजन नहीं। इसका नाम फ़ाइल के नाम से बिना एक्सटेंशन के आता है, 31 अक्षरों तक काटा हुआ, जो शीट नाम की सीमा है।
अगर एक्सट्रैक्ट में सचमुच कई तरह के रिकॉर्ड हों, तो कई वर्कबुक या फ़िल्टर की गई फ़ाइलों के कई बदलाव एक शीट में डिस्क्रिमिनेटर कॉलम से कहीं ज़्यादा काम की चीज़ देते हैं। फ़ाइल को पहले बाँटना एक लाइन का कमांड है, उस फ़ॉर्मेट के ख़िलाफ़ जो बँटने के लिए ही बना है।
स्रोत की हर लाइन अलग है और दूसरी को पहली जैसी कुंजियाँ रखने की कोई शर्त नहीं। बदलाव फ़ाइल में कहीं भी दिखी हर कुंजी इकट्ठा करता है और हर एक को कॉलम देता है, जहाँ किसी लाइन के पास कुछ नहीं वहाँ सेल ख़ाली छोड़ देता है।
कुछ नहीं खोता, और तीन तरह के इवेंट मिलाने वाली फ़ाइल ऐसी शीट बनाती है जहाँ हर पंक्ति एक-तिहाई कॉलम इस्तेमाल करती है। यह पाने वाले को टूटा हुआ निर्यात लगता है, हालाँकि है वह ईमानदार। बदलने से पहले स्रोत को एक ही इवेंट प्रकार तक छाँटना अतिरिक्त क़दम के क़ाबिल है।
हर लाइन एक पंक्ति बनती है, इसलिए पंक्ति गिनती लाइन गिनती घटा ख़ाली लाइनों के बराबर है। यह बदलने से पहले जाना जा सकता है: wc -l, या एडिटर के नीचे लाइन नंबर।
यह जाँच लेना ठीक रहता है कि स्प्रेडशीट किस आकार के लिए सहज कंटेनर है। कुछ हज़ार पंक्तियों की वर्कबुक तुरंत खुलती है और काम करने में सुखद है; कई लाख पंक्तियाँ धीरे खुलती हैं, धीरे छाँटती हैं और ज़्यादातर मेल सिस्टम उसे अटैचमेंट की तरह मना कर देते हैं। उससे ज़्यादा पर जवाब है बदलने से पहले जोड़ना — दिन का जोड़, ग्राहक का सारांश।
दो जाँचें मिलकर एक मिनट लेती हैं। पहली, कॉलम गिनना: फ़ील्ड सूची से कहीं ज़्यादा चौड़ी शीट का मतलब है कोई नेस्टेड ब्लॉक या सरणी फैल गई, और तय करने लायक़ है कि पाने वाले को वे कॉलम चाहिए भी या नहीं। दूसरी, पहचान और तारीख़ वाले कॉलम देखकर पक्का करना कि वे वैसे ही दिखते हैं जैसे उम्मीद थी।
और यह भी पढ़िए कि उसमें असल में क्या है। लाइन-दर-लाइन एक्सट्रैक्ट मशीन का आउटपुट है, और आमतौर पर सिस्टम के भेजे हर फ़ील्ड में होता है — भीतरी पहचान, फ़्लैग, ट्रेस संदर्भ, कभी-कभी कोई ईमेल पता जिसकी उम्मीद नहीं थी। स्प्रेडशीट यह सब उस तरह दिखा देती है जो लॉग फ़ाइल नहीं दिखाती, और फ़ाइल संगठन से बाहर जाने से पहले यह जानना कहीं बेहतर है।
दोनों काम इस ब्राउज़र टैब में चलते हैं: फ़ाइल लाइन-दर-लाइन पढ़ी जाती है और वर्कबुक मांग पर लोड हुई लाइब्रेरी से जोड़ी जाती है। कुछ अपलोड नहीं होता, न कोई खाता या क़तार, और मुफ़्त सीमा 100 MB तक स्वीकार करती है, असली सीमा याददाश्त की है।
इस जोड़ी के लिए गोपनीयता सिर्फ़ बातचीत का मुद्दा नहीं है, क्योंकि एक्सट्रैक्ट परिभाषा से ही किसी के साथ साझा होने वाला है। किसी तीसरे-पक्ष सेवा से बदलना मतलब डेटा दो जगह पहुँचता है, जहाँ इरादा सिर्फ़ एक था। स्थानीय रूप से करना सूची को उसी एक इंसान तक सीमित रखता है जिसे आप सचमुच भेज रहे हैं।
CSV भेजिए जब पाने वाला कोई सिस्टम है, या जब शीट बहुत चौड़ी निकली और सीमांकित फ़ाइल वैसे भी किसी स्क्रिप्ट में जानी है। Parquet भेजिए जब गंतव्य क्वेरी इंजन है और वही रिकॉर्ड बार-बार पढ़े जाएँगे। NDJSON ख़ुद भेजिए जब पाने वाला इंजीनियर है, क्योंकि यही वह रूप है जिसमें अब भी संरचना बची है।
वर्कबुक ठीक एक हालत के लिए सही जवाब है, और वह आम है: कोई इंसान जिसे आज इस डेटा को देखना है, बिना कुछ इंस्टॉल किए, और जो निर्यात को इस बात से आँकेगा कि कॉलम एक नज़र में समझ आते हैं या नहीं।
| NDJSON | XLSX | |
|---|---|---|
| पूरा नाम | Newline-Delimited JSON | Excel वर्कबुक |
| फ़ाइल एक्सटेंशन | .ndjson, .jsonl | .xlsx |
| मीडिया टाइप | application/x-ndjson | application/vnd.openxmlformats-officedocument.spreadsheetml.sheet |
| पहली बार प्रकाशित | 2013 | 2007 |
| प्रकाशक | — | Microsoft |
| विनिर्देश | — | ECMA-376 |
| लाइसेंस | खुला मानक | खुला मानक |
| आज की स्थिति | मौजूदा | मौजूदा |
| ब्राउज़र में खुलता है | कोई ब्राउज़र नहीं | कोई ब्राउज़र नहीं |
| इसकी जगह विचारणीय | JSON, CSV | CSV, ODS, Parquet |
दोनों तरफ़ के प्रोग्राम अलग हैं: NDJSON फ़ाइल jq और pandas में खुलती है और XLSX फ़ाइल Microsoft Excel, LibreOffice Calc और Google Sheets में — यानी नतीजा जिसके पास जाएगा, उसे दूसरी सूची में से कोई प्रोग्राम चाहिए होगा।
दोनों का निशाना अलग काम है: NDJSON का प्रोग्रामों के बीच डेटा ले जाना और स्ट्रीमिंग पर, XLSX का एडिटिंग पर। इस पर सोचना बनता है, क्योंकि जिस वजह से एक मौजूद है, आम तौर पर उसी वजह से दूसरा असुविधाजनक होता है।
XLSX Microsoft का है और 2007 से चला आ रहा है, और ECMA-376 में तय किया गया है। Microsoft Excel, LibreOffice Calc और Google Sheets इस फ़ॉर्मेट को पढ़ लेते है।
नहीं। यह कन्वर्ज़न पूरी तरह आपके ब्राउज़र में होता है, इसलिए फ़ाइल आपके डिवाइस से बाहर नहीं जाती। आप ख़ुद जाँच सकते हैं: डेवलपर टूल्स का नेटवर्क टैब खोलिए और कुछ बदल कर देखिए। आपको पेज ख़ुद दिखेगा और आँकड़ों तथा विज्ञापन के वे अनुरोध दिखेंगे जिनसे इस सेवा का ख़र्च निकलता है — और एक भी ऐसा अनुरोध नहीं जो आपकी फ़ाइल साथ ले जा रहा हो। इस जोड़ी के पीछे SheetJS है, JavaScript में लिखा स्प्रेडशीट का एक पाठक और लेखक; आपका ब्राउज़र इसे एक बार उतारता है और फिर सहेज कर रखता है।
हाँ। न खाता, न वॉटरमार्क, और न कोई रोज़ का कोटा जो ख़त्म हो: यह आपकी अपनी मशीन पर चलता है, इसलिए आप जितनी बार चाहें लौट सकते हैं। ब्राउज़र 100 MB तक की फ़ाइलें सँभालता है, एक बार में 100। SheetJS आपकी अपनी मशीन पर उतरता है और वहीं चलता है — इसीलिए उस पर कोई गिनती नहीं है।
NDJSON और XLSX सामग्री का वर्णन बुनियादी तौर पर अलग-अलग तरीक़ों से करते हैं। इसलिए यह कन्वर्ज़न नक़ल नहीं, पुनर्निर्माण है: ईमानदार, पर बाइट-दर-बाइट एक जैसा नहीं। एक के अंदर एक बैठी वस्तुएँ चपटी होकर कॉलम बन जाती हैं। गहराई तक बैठा डेटा अपना आकार खो देता है।
कन्वर्ज़न के लिए नहीं: वह उसी ब्राउज़र में होता है जो आपने पहले से खोल रखा है। नतीजा खोलने के लिए उसके बाद वही प्रोग्राम चाहिए जिससे आपका डिवाइस Excel Workbook आम तौर पर दिखाता है।