سؤال

أقوم بإنشاء عملية ETL في خادم MS SQL وأود أن يكون لدي أخطاء خاصة بعمود معين من صف معين. على سبيل المثال ، يتم تحميل البيانات مبدئيًا من ملفات Excel إلى جدول (سنتصل بالجدول الأولي) حيث توجد جميع الأعمدة varchar(2000) وبعد ذلك أقوم بتنظيم البيانات إلى جدول آخر (DataTypedTable) الذي يحتوي على أنواع بيانات أكثر تحديدًا (datetime,int, ، وما إلى ذلك) أو أطوال varchar المقيدة بإحكام. يجب أن أكون قادرًا على إنشاء رسائل خطأ لحقل معين مثل: "13 يناير" ليس تنسيق تاريخ صالح لتاريخ التقديم. يرجى استخدام تنسيق من mm/dd/yyyy

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

سؤال: لذلك أنا أتساءل عما إذا كان يمكن تحقيق ذلك باستخدام SSIS ، أو أداة مفتوحة المصدر مثل Talend ، وإذا كان الأمر كذلك ، فما هو نهجك العام؟ أو ما هو النهج المشفر باليد التي ستتخذها؟

مقاربات زوجين فكرت في استخدام SQL (حتى لا ، لقد فعلت ETL باليد في SQL Procs ، لكنني أريد أن أفكر في طرق أخرى. C# حتى.):

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

أدخل جميع البيانات كما هي في الجدول الذي تم تصميمه ، ولكن لديها أعمدة مكررة مثل SubmissionDate و SubmissionDateOld. بعد إدراج الأعمدة الأولية ، تحتوي الأعمدة القديمة على بيانات ، والباقي فارغ ، ولدي تحديث واحد لكل عمود يعين تقديم التقديم بناءً على sridmisionDateold.

بالإضافة إلى اقتراح نهج ما ، أود أن أعرف ما إذا كنت تستخدم هذا النهج أو شيء مشابه بالفعل في العمل الذي تقوم به.

هل كانت مفيدة؟

المحلول

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

نصائح أخرى

ماذا عن بعض التنظيف/التحول قبل التحميل في الجداول (ما تسميه الجداول الأولية)؟ قم بتفريغ البيانات من Excel إلى علامة تبويب أو ملف مفصل ، ثم استخدم بعض لغات البرمجة التي تختارها للقيام بتنظيف البيانات الذي لاحظته. أيضا ، ما هو حجم تحميل كل بيانات؟ يمكنك الاستفادة من تطبيق متعدد الخيوط أو متعدد العمليات للتعامل مع الأحمال الرئيسية (مثل تحميل بضعة ملايين صف في وقت واحد). خلال هذه العملية ، يمكن تحميل أي خطأ تواجهه في جدول الاستثناء مع تفاصيل المعرف والخطأ والتعليق. تساعد هذه التقنية في التحكم بشكل أفضل أثناء مرحلة تنظيف البيانات.

إذا لم يكن الحمل مرتفعًا وترغب في القيام بمعظم عملك في قاعدة البيانات (SQL) ، فقد ترغب في القيام بأكبر قدر ممكن من توصيف البيانات ولديها فهم جيد لتغيرات البيانات المحتملة التي يمكنك توقعها. مع ذلك ، يمكنك استخدام المكون المناسب (Talend أو SSIS) للقيام بالتحول أو التحكم في تدفق البيانات. أيضًا ، باستخدام تعبيرات منتظمة ، يمكنك التقاط أي كيان ينحرف عن قاعدة المحددة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top