سؤال

أنا أقوم ببناء مستودع بيانات. كل حقيقة لديها timestamp. أحتاج إلى إنشاء تقارير حسب اليوم والشهر والربع ولكن بساعات أيضًا. بالنظر إلى الأمثلة التي أرى أن التواريخ تميل إلى حفظها في جداول الأبعاد. alt starexample
(مصدر: etl-tools.info)

لكنني أعتقد أنه لا معنى له للوقت. سوف تنمو جدول الأبعاد وتنمو. من ناحية أخرى ، فإن انضم إلى جدول Date Dimension أكثر كفاءة من استخدام وظائف التاريخ/الوقت في SQL.

ما هي آرائك/حلولك؟

(أنا أستخدم Infobright)

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

المحلول

أظن أن ذلك يعتمد على متطلبات التقارير الخاصة بك. إذا كنت بحاجة إلى شيء مثل

WHERE "Hour" = 10

بمعنى كل يوم بين الساعة 10:00:00 و 10:59:59 ، ثم سأستخدم البعد الزمني ، لأنه أسرع من

WHERE date_part('hour', TimeStamp) = 10  

لأنه سيتم تقييم وظيفة Date_part () لكل صف. لا يزال يتعين عليك الاحتفاظ بالطابع الزمني في جدول الحقائق من أجل تجميع حدود الأيام ، كما هو الحال في:

WHERE TimeStamp between '2010-03-22 23:30' and '2010-03-23 11:15' 

الذي يصبح محرجا عند استخدام حقول الأبعاد.

عادة ، يكون للبعد الزمني دقة دقيقة ، لذلك 1440 صف.

نصائح أخرى

توصي Kimball بأبعاد منفصلة للوقت والتاريخ:

تصميم طاولات التصميم-51-latest-on-on-time-dimension

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

يجب أن يكون الوقت بُعدًا على مستودعات البيانات ، حيث أنك ستحتاج كثيرًا إلى تجميعها. يمكنك استخدام Snowflake-schema لتقليل النفقات العامة. بشكل عام ، كما أشرت في تعليقي ، تبدو الساعات بدقة عالية بشكل غير عادي. إذا أصرت عليهم ، فإن جعل البعد المنفصل ، الذي جعل البعد المنفصل ، قد ساعد ، لكن لا يمكنني إخبارك إذا كان هذا تصميمًا جيدًا.

أود أن أوصي ببعد منفصل للتاريخ والوقت. سيكون لبعد التاريخ سجل واحد لكل تاريخ كجزء من نطاق صالح محدد من التواريخ. على سبيل المثال: 01/01/1980 إلى 12/31/2025.

وبعد منفصل للوقت وجود 86400 سجل مع كل ثانية لها سجل محدد في مفتاح الوقت.

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

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