MetaDapper: أصبح تعيين البيانات وتحويلها أمرًا سهلاً باستخدام الأدوات المناسبة
نشرت: 2022-03-11إن تحويل البيانات وترجمتها ورسم الخرائط ليست بأي حال من الأحوال علمًا صارخًا ، لكنها بكل الوسائل مملة. حتى مهمة تحويل البيانات البسيطة (على سبيل المثال ، قراءة ملف CSV في قائمة مثيلات الفئة) يمكن أن تتطلب قدرًا غير بسيط من التعليمات البرمجية. في حين أن كل هذه المهام تشترك كثيرًا ، إلا أنها جميعًا "مختلفة بما يكفي" لتتطلب طرق تحويل البيانات الخاصة بها.
في كل نظام نقوم ببنائه تقريبًا ، سنجد أنفسنا في مرحلة ما بحاجة إلى تحويل البيانات من نموذج إلى آخر ، سواء لاستيراد البيانات من مخزن بيانات موجود ، أو معالجة البيانات من دفق وارد ، أو الترجمة من تنسيق إلى آخر للداخلية معالجة البيانات أو تحويلها إلى تنسيق الإخراج المطلوب.
وفي كل مرة نقوم بذلك ، تبدو المهمة مشابهة بشكل محبط لما فعلناه مرات عديدة من قبل ، ومع ذلك توجد اختلافات كافية لمطالبتنا بإجراء عملية تعيين البيانات مرة أخرى ، إلى حد كبير من البداية.
علاوة على ذلك ، نظرًا لاستمرار تطور التنسيقات والتقنيات الأكثر شيوعًا للوصول إليها ، وإدخال صيغ جديدة واكتساب شعبية ، فإن المبرمجين ملزمون باستمرار بتعلم تقنيات جديدة لتحويل البيانات ورسم الخرائط والمكتبات وواجهات برمجة التطبيقات وأطر العمل. مع استمرار تطور خدمات علوم البيانات وتطورها ، يتوسع الطلب على الأدوات المتخصصة أيضًا.
على الرغم من أنه يمكنك الاستفادة من أدوات مثل AutoMapper (لتعيين البيانات من كائن إلى آخر) أو Resharper (لإعادة بناء الكود الحالي) ، بغض النظر عما تفعله ، سيكون الرمز مملاً للكتابة وسيحتاج دائمًا إلى الصيانة. وبعد ذلك يتعين عليك التوصل إلى حل للتعامل مع الترجمة عبر المجالات - مثل تحويل الرموز الداخلية وقيم المفاتيح إلى قيم لطبقة أو نظام آخر ، والقيم الفارغة إلى القيم الافتراضية ، وتحويل النوع ، وما إلى ذلك.
يحتوي التحقق من الصحة على مشكلات مشابهة يتم تناولها بواسطة تقنيات مثل DataAnnotations والمكوِّن الإضافي jQuery Validation ومن خلال رزم من رمز التحقق المخصص. ويمكن أن تكون الفروق الدقيقة مع كل من هذه التقنيات دقيقة للغاية.
بصفتك عالم بيانات متقدمًا ، فأنت تقول لنفسك "يجب أن تكون هناك طريقة أفضل." حسنًا ، في الواقع ، هناك. وهذا ما يدور حوله هذا البرنامج التعليمي لرسم خرائط البيانات.
تقديم أداة تعيين بيانات MetaDapper
MetaDapper هي مكتبة .NET تسعى جاهدة لتبسيط وتبسيط عملية تحويل البيانات إلى أقصى حد ممكن.
يسهل MetaDapper تحويل البيانات من خلال:
- فصل الأجزاء المعيارية القابلة للتكرار لعملية تحويل البيانات عن تلك الجوانب الفريدة لكل مهمة تحويل بيانات.
- توفير واجهة مستخدم سهلة الاستخدام وبديهية لتحديد قواعد التعيين والترجمة ذات التعقيد التعسفي.
يفصل MetaDapper التعيين المنطقي (المخطط ، وترجمة البيانات ، والتحقق من الصحة) من تعيين البيانات المادية (التحويل من وإلى تنسيقات الملفات المختلفة وواجهات برمجة التطبيقات). يتميز التعيين المنطقي بمجموعة قوية من الوظائف ويتيح لك ربط الأساليب الخاصة بك للتعامل مع احتياجات محددة للغاية. يتضمن التعيين المادي مجموعة غنية من التنسيقات المدعومة التي يتم توسيعها باستمرار. لتكوين التعيين ، يتم توفير MetaDapper Configurator ؛ بسيط لاستخدام Windows القابل للتنفيذ لإنشاء التعيينات وتحريرها ، ولتنفيذها للاختبار أو للتحويلات لمرة واحدة.
يتم تحويل قائمة مثيلات الفئة إلى ملفات XML أو CSV ، وتعبئة سجلات قاعدة بيانات SQL ، وإنشاء برامج نصية SQL لتعبئة الجداول ، وإنشاء جداول بيانات ، وغير ذلك الكثير ، باستخدام نفس ملف التكوين الذي يمكن غالبًا إنشاؤه في ثوانٍ.
لتضمين MetaDapper في برنامج .NET ، تحتاج ببساطة إلى:
- أضف مرجعًا إلى المكتبة
- إنشاء محرك MetaDapper
- نفّذ التعيين ، وحدد القارئ المصدر (وأي معلمات) ، وكاتب الوجهة (وأي معلمات) ، وملف التكوين الخاص بك.
عند النجاح ، سيخرج الكاتب البيانات المحولة. عند حدوث خطأ ، سيعيد الاستثناء معلومات الخطأ التفصيلية حتى تتمكن من رفض البيانات أو ضبط التكوين.
فيما يلي مثال موجز لتعيين البيانات:
List<MyClass> result; try { // Instantiate the MetaDapper library. var log = new Log(); var cultureInfo = new CultureInfo("en-US"); var md = new MetaDapper.Engine.MetaDapper(log, cultureInfo); using (var inputStream = new StreamReader(@"C:\myfile.csv")) { md.MapData( new CsvReaderParameters { Log = log, CultureInfo = cultureInfo, InputStream = inputStream.BaseStream, InputEncoding = Encoding.ASCII, FirstRecordIsHeader = false }, new PublicPropertiesWriterParameters { Log = log, CultureInfo = cultureInfo }, @"C:\MyMetaDapperConfiguration.xml", false, out result); } } catch (Exception) { throw; }
"مُكوِّن" MetaDapper
يوفر MetaDapper Configurator طريقة لتصفح خطوات تحديد هيكل البيانات وقواعد التحويل / التعيين بشكل مرئي. يتيح لك Configurator إنشاء التكوينات وتحريرها وتنفيذها (أي للاختبار أو التحويلات لمرة واحدة).
يسعى مُكوِّن MetaDapper جاهدًا لأتمتة أكبر قدر ممكن من العملية. على سبيل المثال ، عند تحديد تعيين حقل ، تتم مطابقة حقلي المصدر والوجهة تلقائيًا عندما يكون ذلك ممكنًا باستخدام مطابقة الاسم. أيضًا ، عند إنشاء تعريفات السجل لمصادر البيانات التي تحتوي على بيانات تعريف ، يمكن ملء تعريفات الحقول تلقائيًا عن طريق الإشارة إلى مصدر البيانات.
بمجرد إنشائه ، يحتفظ "تعريف السجل" بارتباطه بمصدر البيانات الذي تم إنشاؤه منه (إن وجد) حتى يمكن تحديثه تلقائيًا إذا تغير مخطط مصدر البيانات لاحقًا. عند تكوين تعريف سجل لمصدر بيانات به بيانات تعريف قليلة أو معدومة ، في حالة توفر مصدر بيانات مشابه آخر يحتوي على بيانات وصفية ، يمكن نسخ تعريف السجل هذا (مع بيانات التعريف الخاصة به) ليكون بمثابة أساس لتعريف السجل الجديد و يمكن تحريرها بعد ذلك لتعكس أي اختلافات قد تكون موجودة بين مصدري البيانات. وفي الحالات التي يكون فيها المخطط والبيانات الوصفية متطابقين لمصادر بيانات متعددة ، يمكن استخدام تعريف سجل واحد لهم جميعًا.
تبسيط عملية تحويل البيانات
دعونا نلقي نظرة أكثر تفصيلاً على بعض التحديات الكامنة في عملية تحويل البيانات والطرق التي يسهل بها MetaDapper وتبسيطها للمطور.
تعيين المصدر لبيانات الوجهة
عندما يتم تغيير هيكل داخلي أو خارجي أثناء الصيانة ، فإن أي كود تخطيط يعتمد على هذه الهياكل قد يحتاج إلى تعديل أيضًا. هذه منطقة تتطلب أعمال الصيانة غالبًا ، لذا مهما كان الحل الذي تستخدمه ، يجب تقييم تكاليف الصيانة. على سبيل المثال ، إذا تمت إزالة خاصية TotalSale من فئة Sale ، فيجب تعديل أي تعيينات تعيين ذات صلة وفقًا لذلك.
باستخدام MetaDapper ، قد يستغرق تحديث التعيين بضع ثوانٍ. بالنسبة لنوع فئة ، على سبيل المثال ، ما عليك سوى النقر فوق الزر "استيراد تعريفات الحقول من الفئة" لتحديث الحقول إلى التعريف المجمع حديثًا:
اكتب التحويل
بعض أنواع التحويلات ، مثل تحويلات نوع التاريخ / الوقت والرقم على سبيل المثال ، حساسة للإعدادات الدولية للبيئة المضيفة (ما لم يتم تحديدها صراحة في التعليمات البرمجية). وبالتالي ، فإن نشر تطبيق على خادم جديد بإعدادات دولية مختلفة يمكن أن يكسر الكود الذي لا يأخذ ذلك في الحسبان. سيتم تفسير قيمة التاريخ "1-2-2014" ، على سبيل المثال ، على أنها 2 يناير 2014 في جهاز بإعدادات الولايات المتحدة ، ولكن اعتبارًا من 1 فبراير 2014 على جهاز بإعدادات المملكة المتحدة. يدعم MetaDapper جميع تحويلات .NET الضمنية ويسمح بإعادة التنسيق المعقدة للقيم كجزء من الترجمة أيضًا. علاوة على ذلك ، يمكن تحديد إعدادات دولية منفصلة (أي مستقلة) في أجهزة قراءة وكتاب MetaDapper ومحرك الخرائط.
القيم الافتراضية المعقدة
في بعض الأحيان ، هناك حاجة إلى قواعد عمل محددة تتطلب الوصول إلى أنظمة أخرى ، أو تتطلب ترميزًا معقدًا ، لتحديد القيمة الافتراضية. يسمح MetaDapper بتسجيل أي عدد من طرق التفويض المخصصة مع المحرك وتوظيفها لتوفير القيم الافتراضية وإجراء تحويل البيانات المخصصة وتوفير التحقق من صحة الحقل المخصص.
قواعد التحقق من الصحة المشروطة
ليس من غير المألوف أن تكون قيم الحقول مطلوبة بشكل مشروط (أو حتى أن تكون قيمها الصالحة معتمدة على قيم الحقول الأخرى). على سبيل المثال ، قد يكون الأمر كذلك أنه يمكن ترك حقول اسم الشريك ورمز الضمان الاجتماعي للشريك فارغين ، ولكن إذا تم توفير اسم الشريك ، فيجب تقديم رمز الضمان الاجتماعي للشريك (وربما الحقول الأخرى). هذا النوع من التحقق الشرطي معقد ويسهل الخطأ في التعليمات البرمجية المخصصة. على النقيض من ذلك ، يسمح MetaDapper بتكوين هذا النوع من علاقة تعيين البيانات بسهولة. على وجه التحديد ، يمكن إدراج قائمة الحقول في "تعريف السجل" في مجموعة الحقول الإلزامية الشرطية:

بعد ذلك ، في التعيين ، يمكن ربط المجموعة بأي حقل ، إذا لم يكن فارغًا ، فسيتطلب بدوره توفير جميع الحقول في المجموعة. علي سبيل المثال:
تحويل القيم المعينة عبر المجالات
قد تحتوي بيانات المصدر على قيم غير متسقة. على سبيل المثال ، قد يحتوي حقل التحية على "السيد" أو "السيد" أو "السيد" أو "السيد" أو "م" بالإضافة إلى جميع المعادلات من الإناث. أو قد يحتوي حقل العملة على قيمة مثل "$" بينما يتطلب تنسيق الوجهة "USD". أكواد المنتج هي مثال آخر للقيم التي قد تحتاج إلى تحويل من نظام إلى آخر. يسمح MetaDapper بتحديد "قوائم المرادفات" القابلة لإعادة الاستخدام والتي يمكن استخدامها لترجمة القيم أثناء التعيينات.
بمجرد تحديدها ، يمكنك تحديد مجموعة المرادفات لتوظيفها في أي تعيين حقل ذي صلة:
تعتمد التعيينات على تنسيق القيمة والحسابات المعقدة
قد يلزم استخدام القيم من حقل واحد أو أكثر لتنسيق قيمة جديدة. على سبيل المثال ، قد تحتاج القيمة المصدر إلى التزيين بالثوابت (على سبيل المثال ، sale.PriceEach = "$" + priceEach;
) أو قد يلزم استخدام عدة حقول لإنشاء قيمة (على سبيل المثال ، sale.Code = code1 + “_” + code2;
).
يوفر MetaDapper إمكانية التنسيق / القوالب التي تتيح لك إنشاء قيم باستخدام أي من الحقول الموجودة في السجل الحالي ، بما في ذلك أجزاء السلسلة الفرعية للحقول أو القيم الثابتة. بعد التنسيق ، سيتم تحويل القيمة إلى نوع الوجهة المحدد (والذي ، بالمناسبة ، لا يلزم أن يكون سلسلة).
وبالمثل ، يمكن إجراء العمليات الحسابية المعقدة أثناء التعيينات ، باستخدام مجموعة كاملة من العوامل والوظائف الرياضية على أي مجموعة من قيم الحقل والثوابت.
قواعد التحقق من الصحة
يمكن تسجيل مفوضي التحقق المخصص واستخدامها في التعيينات. فيما يلي مثال لطريقة مخصصة للتحقق من أن قيمة الحقل هي عدد صحيح (بدون جعل نوع البيانات للحقل عددًا صحيحًا):
private static bool ValidateIsInteger( Log log, CultureInfo cultureInfo, object value, ref List<ErrorInfo> errors) { try { Convert.ToInt32(value); } catch (Exception) { return false; } return true; }
سيتم تسجيل الطريقة عند إنشاء MetaDapper. ثم يمكن تطبيقها بسهولة في أي تعريف لرسم الخرائط الميدانية:
التجميع والفرز والتصفية
يمكن غالبًا معالجة عمليات التجميع والفرز في استعلام قاعدة بيانات ولكن ليست كل مصادر البيانات عبارة عن قواعد بيانات. لذلك يدعم MetaDapper تكوين عمليات التجميع والفرز المعقدة التي يمكن إجراؤها في الذاكرة.
في الحالات التي قد تكون هناك حاجة إلى جزء فقط من البيانات المصدر ، يمكن أن تكون التصفية من مصادر غير قاعدة البيانات معقدة للغاية في التنفيذ والصيانة. يدعم MetaDapper تكوين عوامل التصفية المعقدة باستخدام عوامل تشغيل منطقية لأي عدد من التقييمات الميدانية لكل سجل ، مع التداخل العميق التعسفي للعمليات حسب الحاجة. علي سبيل المثال:
المرشح أعلاه يعادل كود C # التالي:
if (sale.TransactionID > “0” AND sale.Currency == “USD” AND (sale.Amount > “3” || sale.Amount == “1”)
التعيينات المتداخلة
تتطلب بعض التعيينات تمريرات متعددة لإكمال عملية تحويل البيانات. تتضمن بعض الأمثلة البيانات التي تتطلب تسجيلات البادئة أو التجميع ، والبيانات التي يجب تعيينها بشكل مختلف اعتمادًا على قيم الحقل أو بنية المستند ، أو ببساطة لعزل مراحل مختلفة من التعيين المعقد (مثل ترجمة الأسماء ، وتحويلات النوع ، وما إلى ذلك). لتحقيق هذه الغاية ، يدعم MetaDapper التعيينات المتداخلة على أي مستوى من العمق.
التنسيق مقابل الهيكل
كأداة لرسم خرائط البيانات وتحويلها ، تم إنشاء MetaDapper للسماح فعليًا بقراءة أي تنسيق بيانات أو كتابته باستخدام واجهات القارئ الداخلي والكاتب. يسمح هذا بإنشاء فصول للقارئ / الكاتب خفيفة الوزن للغاية وتركز على الفروق الدقيقة الخاصة بالتنسيق فقط.
القراء والكتاب أيضا يتصرفون بذكاء ومرونة قدر الإمكان. على سبيل المثال ، يستخدم قارئ وكاتب XML XPaths لتحديد مكان استرداد البيانات أو كتابتها في ملف XML. يمكن أيضًا استخدام نفس التكوين للقراءة والكتابة ، على سبيل المثال ، من تنسيقات غير XML (مثل ملفات CSV) وفي هذه الحالة سيتم ببساطة تجاهل قيم XPath. وبالمثل ، إذا تم استخدام تكوين لا يتضمن إعدادات XPath مع قارئ أو كاتب XML ، فسيتم إنشاء خطأ.
نعم. حق. بالتأكيد. (بعض أمثلة تعيين البيانات الحقيقية)
أنت متشكك. وأنا لا ألومك. نادرًا ما تكون أدوات البرمجيات هي كل ما يدعونه. إذن ، إليك بعض الأمثلة من العالم الحقيقي حيث تم بالفعل استخدام MetaDapper لتوفير فائدة تشغيلية.
الشركة التي تقدم برامج إدارة التأمين الطبي لديها عملاء لا يريدون ملء نماذج الويب ولكنهم يريدون تقديم بياناتهم في جداول البيانات. باستخدام MetaDapper ، تتم قراءة جداول البيانات التي تم تحميلها في الذاكرة وتنظيف البيانات والتحقق من صحة السجلات وتخزين النتائج في قاعدة البيانات الخاصة بهم. يمكنهم قبول ملفات Excel من عملائهم دون أي تحقق بشري باستخدام MetaDapper مع سهولة إنشاء ملف تكوين لكل قالب جدول بيانات ينشرونه.
تمتلك شركة غاز كبيرة تطبيقًا داخليًا وأرادت أن يتمكن مستخدمو إدارتها من تنزيل التقارير بتنسيق Excel. من المحتمل أن يتم تغيير تنسيقات التقارير بانتظام. سهلت MetaDapper إنشاء أوراق Excel من قاعدة البيانات الخاصة بهم. يتطلب تحديث تنسيقات Excel فقط تحديث ملفات تكوين MetaDapper دون أي تغيير في التعليمات البرمجية أو إعادة تجميعها.
احتاجت الشركة التي توفر برامج إدارة الأصول إلى حل لتوليد البيانات المالية في تنسيقات حزمة المحاسبة المعتمدة على العميل للاستيراد إلى تلك الأنظمة. تم تطوير استعلام بيانات محاسبية عام باستخدام مغلف ORM وتم استخدام MetaDapper لفرز البيانات وتصفيتها وتعيينها إلى المخطط والتنسيق المطلوبين لكل عميل. يتم إجراء واحد أو أكثر من تكوينات MetaDapper لكل عميل وقد أصبح هذا ميزة بيع رئيسية للعملاء الجدد. يمكن تكوين المنتج (باستخدام MetaDapper) في دقائق لدعم أي تنسيق مخصص أو قياسي لحزمة المحاسبة بحيث يتم تضمين التكامل مع الأنظمة الأساسية والحالية مع كل عملية بيع جديدة. تستخدم نفس الشركة MetaDapper في العديد من مشاريع تكامل البرامج ، ورسم الخرائط وتحويل البيانات وتحويل الرموز الداخلية بين أنظمتها.
يحتاج بائع السيارات الرئيسي إلى إضافة بعض تقارير المبيعات بتنسيق Excel إلى أحد تطبيقاته. تمت إضافة التقارير إلى التطبيق في أقل من ساعة - من البداية إلى النهاية.
يحتاج المطور إلى جدول للولايات الأمريكية مطابق للمجموعة المستخدمة في موقع ويب آخر. تم استخدام MetaDapper لاستخراج البيانات من الموقع وإنشاء برنامج نصي SQL لملء جدوله في بضع دقائق.
هذه مجرد أمثلة قليلة على فائدة MetaDapper المثبتة وقيمتها كأداة لرسم خرائط البيانات.
يتم إحتوائه
يتطلب الأمر قفزة ذهنية لبدء التفكير في تحويل البيانات بشكل أكثر عمومية والبدء في التفكير في مجموعات من البيانات مع قواعد العمل والفائدة غير المحدودة. MetaDapper هو إطار عمل يعزز ويسهل هذا المنظور.
سواء كنت تستخدم MetaDapper ، أو تقنية أخرى ، أو تقدم حلول تعيين البيانات الخاصة بك ، فقد كان هذا مقدمة لبعض التكاليف المعقدة والمخفية في مشاريع تحويل البيانات. وآمل أن تجد أنه من المفيد.
(لمزيد من المعلومات حول MetaDapper ، اتصل بفريق MetaDapper على [email protected].)