تنفيذ جداول الأبعاد
مع وجود الاستعلامات والعروض والإجراءات المخزنة، ستكون جاهزا لتنفيذ الجداول التي تحتفظ ببياناتك المحولة. ينظم النمذجة البعدية البيانات في جداول حقائق (مقاييس ومقاييس) وجداول أبعاد (سمات وصفية)، مما يخلق هيكلا محسنا للاستعلامات التحليلية والنماذج الدلالية.
إنشاء جداول الأبعاد
تحتوي جداول الأبعاد على السمات الوصفية التي تعطي سياقا لمقاييسك، مثل أسماء العملاء، وفئات المنتجات، والتواريخ الهرمية. كل جدول بعد يحتوي على مفتاح بديل (عدد صحيح مولد تلقائيا) حيث تراجع جداول الحقائق بدلا من مفتاح الأعمال الطبيعي.
استخدام المفاتيح البديلة يوفر عدة فوائد. هي أعداد صحيحة مضغوطة تنضم بكفاءة. هي تعزل المستودع عن تغييرات مفاتيح نظام المصدر. كما تدعم أنماط الأبعاد المتغيرة ببطء (SCD) حيث يمكن أن يمتلك الكيان التجاري نفسه سجلات تاريخية متعددة.
CREATE TABLE dim.customer (
customer_key INT IDENTITY(1,1),
customer_id NVARCHAR(20) NOT NULL,
customer_name NVARCHAR(100),
segment NVARCHAR(50),
region NVARCHAR(50),
effective_date DATE,
end_date DATE,
is_current BIT DEFAULT 1
);
يولد العمود IDENTITY مفتاحا بديلا فريدا لكل صف تلقائيا. تدعم الأعمدة effective_dateوأعمدة end_dateis_current تتبع SCD النوع 2، حيث تحافظ على النسخ التاريخية من السجل بدلا من الكتابة فوق التغييرات. عندما تتغير سمات العميل، تقوم بتعيين end_date و is_current = 0 على الصف الحالي، ثم تدرج صفا جديدا بالقيم المحدثة.
ملاحظة
نظم جداول الأبعاد باستخدام مخططات تعكس دورها. تشمل الاتفاقيات dim الشائعة جداول الأبعاد، fact جداول الحقائق، والبيانات staging المصدرية الخام.
إنشاء جداول الحقائق
جداول الحقائق تخزن البيانات الكمية: الأرقام التي تجمعها في التقارير. يمثل كل صف حدثا تجاريا (مثل بيع أو شحنة) ويحتوي على مفاتيح أجنبية تشير إلى جداول الأبعاد بالإضافة إلى مقياس رقمي أو أكثر.
CREATE TABLE fact.sales (
sales_key INT IDENTITY(1,1),
date_key INT NOT NULL,
customer_key INT NOT NULL,
product_key INT NOT NULL,
quantity INT,
unit_price DECIMAL(10,2),
sales_amount DECIMAL(12,2)
);
date_keyالأعمدة وcustomer_key، وproduct_key، هي مفاتيح أجنبية تشير إلى جداول الأبعاد المقابلة. الأعمدة quantityو unit_price، والأعمدة sales_amount هي المقاييس التي يتم تجميعها في الاستعلامات والتقارير.
Important
مستودعات Fabric لا تفرض قيودا على المفاتيح الأجنبية على مستوى المحرك. حدد علاقاتك الرئيسية من خلال اتفاقيات التسمية ومنطق التحميل للحفاظ على سلامة المرجع بين جداول الحقائق والأبعاد. هذا النمط شائع في مستودعات البيانات السحابية حيث يقوم محرك الاستعلام بتحسين الانضمام دون الحاجة إلى فرض القيود.
تحميل جداول الأبعاد
للتحميل الأولي، استخدم عبارة بسيطة INSERT ... SELECT لملء بعد من بيانات المرحلة:
INSERT INTO dim.customer
(customer_id, customer_name, segment, region, effective_date, is_current)
SELECT
customer_id,
customer_name,
segment,
region,
CAST(GETDATE() AS DATE),
1
FROM staging.customers;
بالنسبة للتحديثات المستمرة، يعتمد النهج على كيفية تعاملك مع التغييرات:
-
نوع SCD 1 (الكتابة فوق): استخدم عبارة
MERGEلتحديث الصفوف الموجودة في مكانها. هذا النهج أبسط لكنه لا يحافظ على التاريخ. وهذا مناسب عندما لا تكون القيم التاريخية مهمة للتحليل، مثل تصحيح اسم العميل المكتوب بشكل خاطئ. -
نوع SCD 2 (التاريخ): وضع علامة على الصف الحالي كمنتهي الصلاحية (تم تعيينه
is_current = 0وإلىend_dateاليوم)، ثم أدرج صفا جديدا بالقيم المحدثة. هذا النهج يحافظ على تاريخ كامل من التغييرات. من المهم في تحليل الاتجاهات، حيث تحتاج إلى معرفة ما كانت شريحة العميل في وقت المعاملة السابقة.
تحميل جداول الحقائق
تحميل جدول الحقائق يربط بيانات المراحل مع جداول الأبعاد للبحث عن المفاتيح البديلة الصحيحة. تقوم هذه الخطوة بترجمة مفاتيح الأعمال الطبيعية (مثل معرفات العملاء من النظام المصدر) إلى المفاتيح البديلة المستخدمة في النموذج الأبعادي.
INSERT INTO fact.sales
(date_key, customer_key, product_key, quantity, unit_price, sales_amount)
SELECT
d.date_key,
c.customer_key,
p.product_key,
s.quantity,
s.unit_price,
s.quantity * s.unit_price
FROM staging.orders AS s
INNER JOIN dim.date AS d
ON s.order_date = d.calendar_date
INNER JOIN dim.customer AS c
ON s.customer_id = c.customer_id
AND c.is_current = 1
INNER JOIN dim.product AS p
ON s.product_id = p.product_id;
يتم تصفية الانضمام إلى dim.customer الإشارة is_current = 1 لضمان ربط كل صف حقائق بالنسخة الحالية من سجل العميل. إذا كنت بحاجة إلى دقة تاريخية (ربط بسجل العميل الذي كان نشطا وقت الطلب)، قم بمطابقة في نطاق تاريخ التاريخ الساري بدلا من ذلك.
استخدم نسخ الجداول للتطوير والاختبار
عندما تطور منطق التحول، لا تريد المخاطرة بإفساد جداول الإنتاج. يدعم Fabric table clones، التي تنشئ مرجعا بدون نسخة لبيانات جدول موجود في نقطة زمنية. النسخ تتيح لك اختبار التغييرات بشكل منفصل دون تكرار التخزين.
CREATE TABLE fact.sales_dev AS CLONE OF fact.sales;
تشترك النسخة في البداية في نفس ملفات البيانات الأساسية مع جدول المصدر. عندما تعدل النسخة (إدراج، تحديث، أو حذف الصفوف)، يكتب Fabric البيانات المعدلة فقط، مما يحافظ على كفاءة التخزين. بعد أن تحقق من تغييراتك أمام النسخة المستنسخة، يمكنك تطبيق نفس المنطق على جدول الإنتاج بثقة.
نسخ الطاولة مفيدة أيضا لإنشاء لقطات قبل تنفيذ تحويل محفوف بالمخاطر، مما يمنحك نقطة رجوع إذا حدث خطأ ما.
لديك الآن مجموعة كاملة من الأدوات لتحويل بيانات T-SQL في مستودع Fabric: استعلامات تشكل البيانات الخام، عروض تجمع منطقا قابلا لإعادة الاستخدام، إجراءات مخزنة تؤتمت المعالجة، وجداول أبعاد تعمل كأساس محسن للتحليلات والنماذج الدلالية.