سؤال

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

كما ذكرت أن p_key الخاص بي هو Auto Auto_incrementing ، لذا لا يمكنني فقط إدراج قيمة تعسفية لـ P_Key.

أي فكرة عن كيفية إدراج صف في جدول الأبعاد الخاص بي ولا يزال يسترجع المفتاح الأساسي للإشارة في سجل الحقائق الخاص بي؟

مزيد من المعلومات:

ماذا لو لم يتم تطبيع البيانات الواردة؟ على سبيل المثال لدي CSV مع البيانات التالية:

order #   date        total customer# first_name last_name
111       1/2/2010    500    101      John        Smith     
222       1/3/2010    600    101      John        Smith

من الواضح ، أريد أن تظهر معلومات العميل في جدول الأبعاد ، وبيانات المعاملة في جدول الحقائق:

dimension
101  john smith

fact
111       1/3/2010
222       1/3/2010

كما ذكرت ، سيكون مفتاح جدول الأبعاد زيادة تلقائية. يحتاج جدول الحقائق إلى الرجوع إلى هذا المفتاح. كيف يمكنك تصميم وظيفة ETL بحيث يتم إرجاع مفتاح البديل بعد إدراج؟

أيضًا ، إذا تم إلغاء بيانات العميل (على النحو الوارد أعلاه) ، فكيف تتعامل مع المفاتيح؟

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

المحلول

ربما أسيء فهمك لمشكلة ، ولكن:

  1. قد يكون لدى جدول الحقائق أو لا يحتوي على PK المتمثل في التلقائي ، وعادة ما يكون PK في جدول الحقائق هو مركب من عدة جداول أبعاد مرجعية FKS.

  2. يجب أن يحتوي جدول الأبعاد على PK.

  3. يجب على العميل الجديد "الهبوط" في جدول أبعاد العميل قبل أن تصل حقيقة المعاملة إلى DW (أو على الأقل جدول الحقائق).

  4. يجب أن يحتوي جدول الأبعاد على BusinessKey الذي يحدد بشكل فريد عميل - مثل البريد الإلكتروني أو الاسم الكامل + PIN أو ما شابه.

  5. يجب أن يكون صف المعاملات الواردة حقل عمل العميل أيضًا - هكذا نحدد العميل.

  6. استخدم BusinessKey للبحث عن Customer PrimaryKey من جدول أبعاد العميل قبل إدخال المعاملة في جدول الحقائق.

تعديل

إذا تم تجميع بيانات العميل الجديدة مع المعاملة ، فابحث عن طريقة لاستخراج بيانات العميل وتوجيهها إلى DW قبل المعاملة.

تحديث:

تحميل DimCustomer أولاً ، اتخاذ قرار بشأن BusinessKey - لذلك يبدو البعد:

CustomerKey = 12345 (auto-incremented)
CustomerBusinessKey = john_smith_101 (must uniquely identify the John Smith)
CustomerFirstName = John
CustomerLastName = Smith

أثناء عملية تحميل الأبعاد ، يجب عليك فصل الصفوف الواردة int اثنين من الدفقين ، العملاء الحاليين والجدد. تحديث الصفوف من دفق "العميل الحالي" الجدول DIM (النوع 1 SCD) ، بينما يتم إدراج صفوف من دفق "العميل الجديد". لا ينبغي أن يكون هناك تكرارات في تيار الصفوف التي يتم إدخالها ؛ يمكنك تحقيق ذلك عن طريق إدخالها في طاولة التدريج وإزالة التكرارات هناك ، قبل الإدراج النهائي مباشرة في جدول الأبعاد. يمكنك أيضًا استخراج التكرارات وتوجيهها مرة أخرى إلى عملية التحميل لتحديث سجلات العملاء ؛ قد تحتوي على بيانات أحدث - مثل أرقام الهواتف المحدثة أو ما شابه.

بمجرد دخول العميل ، تحميل الحقائق.

يجب أن تبدو جدول الحقائق شيئًا مثل:

DateKey     (PK)
CustomerKey
OrderNumber (PK)
Total

لقد استخدمت المفتاح الأساسي المركب لـ DateKey و Ordernumber ، مما يسمح بإعادة ضبط تسلسل رقم الطلب من وقت لآخر.

أثناء عملية التحميل ، قم بتعديل سجل الحقيقة لتبدو شيئًا مثل:

DateKey CustomerBusinessKey OrderNumber Total
20100201  john_smith_101       111       500
20100301  john_smith_101       222       600

في هذه المرحلة ، نحتاج إلى استبدال CustomerBusinessKey مع CustomerKey من جدول الأبعاد باستخدام البحث. لذلك ، بعد البحث ، سيبدو الدفق:

DateKey CustomerKey OrderNumber Total
20100201 12345       111         500
20100301 12345       222         600

يمكن الآن إدراج هذا في جدول الحقائق.

لقد خدعت أيضًا قليلاً - لم أبحث عن مفتاح تاريخ من Dimdate ، ولم أكن أبحث عن الصفوف الموجودة في جدول الحقائق. عند تحميل جدول الحقائق ، يمكنك البحث عن مجموعة موجودة (DateKey ، OrderNumer) قبل التحميل ، أو يمكنك تركه حتى المفتاح الأساسي لحماية التكرارات مرة أخرى - اختيارك. في أي حال ، تأكد من فشل محاولة إعادة تحميل نفس البيانات في جدول الحقائق.

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