محتويات الدورة

هندسة البيانات / الأساسي: العقود والدفعات القابلة للإعادة / الدرس 2

الصيغ والترميز وحدود الملفات

اختر صيغ التبادل والتحليل من النوع والوصول والتوافق، وحلل السجلات المقتبسة صحيحاً وميز الملف عن مجموعة منشورة ذرياً.

وقت القراءة التقريبي: 4 دقيقةتاريخ مراجعة المحتوى
في هذه الصفحة

أهداف الدرس

  • شرح موازنة CSV وJSON والصيغة العمودية.
  • حفظ الترميز وحدود السجل وهوية المصدر.

لا يثبت امتداد الملف مخططاً صالحاً

تسهل CSV التبادل الجدولي، لكنها تحتاج اتفاقاً على الفاصل والاقتباس والرأس والترميز وتفسير القيم. تحمل JSON بنية متداخلة، ولا تحفظ تلقائياً كل أنواع قواعد البيانات أو أي سياسة عددية دقيقة. تنظم صيغ عمودية مثل Parquet البيانات لقراءة تحليلية انتقائية باستخدام بيانات وصفية وكتل أعمدة مرمزة. ليست هذه مجرد بدائل نصية متبادلة. اختر من حاجة المستهلك والوصول بالصف أو العمود وتطور المخطط ودعم المنظومة، لا من افتراض أن أصغر ملف أو الامتداد المألوف أفضل دائماً.

حلل السجل بدلاً من التقسيم على الفاصلة

تحتوي العينة المحلية الكاملة فاصلة داخل اسم عميل مقتبس. يعيد محلل CSV في Python سجلين بالحقلين المقصودين؛ أما تقسيم النص ساذجاً فيخترع حقلاً إضافياً. قد توجد أسطر جديدة داخل الحقول المقتبسة أيضاً، فلا تتساوى الأسطر الفيزيائية والسجلات المنطقية دائماً. صرّح بلهجة الصيغة وسياسة الرأس، واحفظ المدخل الأصلي عند رفض صف غير صحيح. يعمل المثال على سلسلة في الذاكرة فقط، ولا يدعي قراءة كل لهجة يمكن أن يرسلها مورد حقيقي.

python عينة CSV مقتبسة في الذاكرة
import csv
import io

text = 'id,label\n1,' + chr(34) + 'Quay, East' + chr(34) + '\n2,North\n'
rows = list(csv.DictReader(io.StringIO(text)))
assert rows == [{'id': '1', 'label': 'Quay, East'}, {'id': '2', 'label': 'North'}]
assert len(rows) == 2

تبقى الفاصلة بالاسم وتظل القيم نصية إلى تحويل صريح.

فك البايتات قبل تفسير القيم

يمنع ترميز Unicode المتفق عليه تفسير البايتات نفسها بطرق مختلفة بين الأنظمة. ينبغي أن تنتج أخطاء فك الترميز دليلاً صريحاً، لا استبدالاً اعتباطياً يفسد المعرفات أو الربط. قد تغير علامة ترتيب البايتات، أو نهايات الأسطر غير المتسقة، أو تكرار الرأس وسط الملف عملية الإدخال أيضاً. يعتمد تفسير أعداد JSON على المحلل، وقد لا تحفظ العائمة الثنائية مبلغاً عشرياً دقيقاً. افصل فك الترميز والتحليل والتحويل، حتى يحدد الخطأ الطبقة الفاشلة بدلاً من إعادة مجموعة فارغة تبدو مقبولة.

اختر محلل العدد بوعي

تستخدم عينة JSON النوع Decimal للرموز العشرية، وتبقي وحدة العملة بجوار المبلغ. إنها توضح إعداد المحلل، لا مكتبة محاسبة عامة أو تحقق شامل من المخطط. القيمة الدقيقة هي 12.30، وتبقى الوحدة الرمز الاصطناعي المعلن. ما زالت الحقول المفقودة والقيم المنطقية والمعرفات الصحيحة والقيم الضخمة تحتاج قواعد مستقلة. لا تستنتج وحدة معتمدة من شكل العدد، ولا تحول نصاً مالياً خاطئاً إلى صفر لمجرد إكمال الدفعة. وثق تمثيل الوجهة إلى جانب محلل المدخل.

python تحليل عشري لـJSON في الذاكرة
import json
from decimal import Decimal

row = json.loads('{"amount":12.30,"currency":"LAB"}', parse_float=Decimal)
assert row['amount'] == Decimal('12.30')
assert str(row['amount']) == '12.30'
assert row['currency'] == 'LAB'

يحفظ المحلل القيمة والمقياس المعلنين دون ملف أو سعر صرف أو خدمة.

افصل بيانات الصيغة ونشر المجموعة

تستخدم قارئات Parquet البيانات الوصفية وتنظيم مجموعات الصفوف والأعمدة لتجنب قراءات غير لازمة، عندما تسمح الشروط والإحصاءات المدعومة بذلك. كون الملف Parquet لا يثبت اكتمال أقسامه أو توافق مخططه مع كل قارئ. يجب أن يحدد النشر مجموعة ملفات مكتملة أو لقطة، لا أن يكشف مجموعة نصف مكتوبة. لا يثبت المقرر محرك Parquet؛ فالنقاش مفاهيمي مستند إلى التوثيق الرسمي. تحقق من إصدارات الكاتب والقارئ والأنواع المنطقية في البيئة المعتمدة قبل ادعاء التوافق أو مكسب الأداء.

الأخطاء الشائعة وإصلاحها

تنشئ الفاصلة المقتبسة عموداً زائداً

لماذا يحدث؟
قُسم النص دون محلل اللهجة.
كيف تصلحه؟
استخدم محللاً ولهجة ورأساً صريحين.
كيف تتجنب تكراره؟
اختبر الفاصلة والاقتباس والسطر المضمن.

تتغير المعرفات أثناء الفك

لماذا يحدث؟
استبدلت أخطاء الترميز أو فسرت بصمت.
كيف تصلحه؟
احفظ البايتات وصحح الترميز المتفق.
كيف تتجنب تكراره؟
ضمّن لغات متعددة وبايتات غير صالحة.

تفترض المجموعة كاملة لفتح ملفاتها

لماذا يحدث؟
اختلط فتح الملف باكتمال المجموعة.
كيف تصلحه؟
تحقق من الملفات والمخطط والإصدار.
كيف تتجنب تكراره؟
انشر بحد اكتمال معلن.

اختبر فهمك

1. لماذا لا يساوي عد أسطر CSV عدد السجلات دائماً؟

اعرض الحل المشروح

يمكن أن تحتوي الحقول المقتبسة أسطراً جديدة، كما تؤثر سياسة الرأس والأسطر الفارغة في العدد. حلل السجلات المنطقية باللهجة المعلنة، ثم أبلغ المقبول والمرفوض منفصلين. لا تجعل عدد الأسطر الخام دليلاً دقيقاً على الاكتمال من دون تحديد هذه الشروط.

2. هل يثبت تحويل CSV إلىParquet حفظ المعنى؟

اعرض الحل المشروح

لا. ما زال تحويل الأنواع وتفسير null والمقياس العشري والطوابع الزمنية وتطور المخطط وتغطية الملفات المتوقعة بحاجة إلى تحقق. قد تحسن صيغة فيزيائية مختلفة بعض القراءات، لكنها تغير القيم المنطقية إذا أخطأ عقد التحويل. قارن قيماً ممثلة وثوابت المجموعة، لا نجاح إنشاء الملف فقط.

أهم ما تعلمته

  • الفك والتحليل والنوع والنشر حدود منفصلة.
  • اختر الصيغة من عقد الوصول والتوافق الكامل.

المراجع الرسمية