Slowly Changing Dimension چیست؟

Dimension ها به آهستگی در طول زمان تغییر می کنند. خیلی اوقات نیاز داریم تا گزارشات را بر اساس تاریخچه داده ایجاد کنیم. لذا نیاز به ساز و کاری که در نگه داری تاریخچه داده به ما کمک کند ضروری به نظر می رسد. این امر با SCD ( Slowly Changing Dimension ) قابل دست یابی است.

در مورد Fact و Dimension مطالب زیر را مطالعه نمایید.

مطالعه نمایید!
مطالعه نمایید!

 

turtle - Slowly Changing Dimension چیست؟

مساله

برای اینکه با صورت مساله و ساز و کار Slowly changing Dimension به خوبی آشنا شوید در مورد مثال های زیر اندکی تامل کنید.

فرض کنید که شخصی به نام حسین وثوقی ساکن در شهر تهران تا کنون از ما ۲۰ میلیون تومان کالا خریداری نموده است. حال از امروز این شخص نام خود را تغییر داده و نام بهروز وثوقی را برای خود انتخاب نموده است. این شخص بعد از تغییر نام ۱۰ ملیون از ما خریداری کرده است. حال در گزارشات ما چه تغییری حاصل می شود؟ آیا باید خریدهای حسین وثوقی را جدا از خرید های بهروز وثوقی محاسبه کنیم؟! البته که خیر. ما باید کل خرید های قبل از تغییر نام و بعد از تغییر نام را به بهروز وثوقی اختصاص دهیم. در واقع بهروز وثوقی ۳۰ میلیون تومان از ما کالا خریداری کرده است. در این مثال کافی است ما نام حسین را در داده ها به بهروز تغییر دهیم و نیازی به نگه داری تاریخچه تغییرات نداریم.

حال فرض کنید شخصی به نام پوریا بغدادی تا سال ۱۳۹۰ ساکن شهر تهران بوده و تا پایان سال ۱۳۹۰، ۱۵ میلیون تومان از ما کالا خریداری نموده است. این شخص از ابتدای سال ۱۳۹۱ تصمیم به تغییر محل سکونت خود گرفته است. ایشان از ابتدای سال ۱۳۹۱ به شهر کرج نقل مکان کرده است. از ابتدای سال ۱۳۹۱ تا امروز ایشان ۱۰ میلیون تومان از ما کالا خریداری کرده است.

حال مدیریت از ما می خواهد ۲ گزارش تهیه کنیم. یکی گزارش فروش به تفکیک مشتری و دوم گزارش فروش به تفکیک شهر. اگر بخواهیم میزان فروش به تفکیک مشتریان را نمایش دهیم، چه میزان از فروش ما به پوریا بغدادی بوده است؟ درست حدس زدید! ۲۵ میلیون تومان.

حال می خواهیم بر اساس شهرهای مختلف میزان فروش را نمایش دهیم. بدیهی است که فروش به شخص پوریا بغدادی تا سال ۱۳۹۰ متعلق به شهر تهران و پس از آن متعلق به شهر کرج است.

حال فرض کنید ما هر تغییر در داده را با داده قبلی جایگزین کنیم و تاریخچه آن را نگه داری نکنیم. در این صورت با تغییر مکان پوریا بغدادی به کرج، محل سکونت او را در داده ها به کرج تغییر می دهیم و تمام فروش این شخص به کرج اختصاص می یابد. در واقع ۲۵ میلیون تومان فروش به پوریا بغدادی به کرج اختصاص می یابد و این گزارش غلط خواهد بود. لذا در این مثال ما به ساز و کاری نیاز داریم که تاریخچه تغییرات را نگه داری کنیم.

نگه داری تاریخچه تغییرات با Slowly Changing Dimension قابل دستیابی است. توجه کنید که همان طور که گفته شد برای تمام ویژگی ها نگه داری تاریخچه تغییرات لازم نیست. نگه داری تاریخچه تغییرات بسته به نیاز کسب و کار و گزارشات شما تعیین می گردد. به طور مثال، احتمالا برای ویژگی هایی مثل نام، نام خانوادگی، کد ملی و ویژگی هایی از این دست نیازی به نگه داری سابقه تغییرات نداریم. کافی است با تغییر این ویژگی ها، آن را به روز رسانی کنیم و مقدار قبلی را با مقدار جدید جایگزین کنیم. مثلا بهروز را جایگزین حسین کنیم.

اما برای برخی ویژگی ها مثل شهر محل سکونت، مدرک تحصیلی و ویژگی هایی از این دست ممکن است نیاز داشته باشیم که سابقه تغییرات را نگه داری کنیم. در این صورت نیاز ما با جایگزین کردن داده قدیمی با داده جدید رفع نخواهد شد. با تغییر محل شهر سکونت از تهران به کرج، نه تنها نیاز ما رفع نخواهد شد بلکه گزارشات ما غلط خواهند بود.

انواع رویکرد ها

SCD - Slowly Changing Dimension چیست؟

رویکرد اول

در اولین رویکرد که به Type 0 شناخته می شود، اجازه هیچ تغییری به ویژگی مورد نظر داده نمی شود. به طور مثال اگر برای کد ملی Type 0 را در نظر بگیریم تنها داده ای که اولین بار درج شده اعتبار دارد و اجازه هیچ گونه تغییری داده نمی شود.

رویکرد دوم

در این رویکرد که به Type 1 معروف است، داده قدیمی با داده جدید جایگزین می شود. برای ویژگی هایی که ممکن است در طول زمان تصحیح شوند و تغییر کنند و تغییرات آن ها در گزارشات ما اهمیتی ندارد این رویکرد مناسب به نظر می رسد. مانند نام و نام خانوادگی که ممکن است اشتباه وارد شده باشد یا واقعا توسط شخص تغییر داده شود. در این رویکرد مقدار جدید جایگزین مقدار قبلی می شود و تاریخچه نگهداری نمی شود. استفاده از این رویکرد نیز مانند رویکرد اول به سادگی صورت می پذیرد.

همان طور که در تصویر مشاهده می کنید نام مشتری حسین وثوقی بوده و بعد از تغییر به سادگی به روز رسانی شده و با نام بهروز جایگزین گشته است.

s1 - Slowly Changing Dimension چیست؟

جدول مشتریان را بعد از به روز رسانی و استفاده از Type 1 مشاهده می کنید.

s2 1 - Slowly Changing Dimension چیست؟

رویکرد سوم

رویکرد سوم که به Type 2 معروف است با تغییر در یک ویژگی یک رکورد به جدول اضافه می شود و ردیف قبلی بدون تغییر باقی می ماند. بدیهی است این عمل نباید برای تمامی ویژگی ها انجام شود. این عمل تنها برای ویژگی هایی که نگه داری تاریخچه تغییرات آن برای ما حیاتی است انجام می شود. در این رویکرد جدول به کلید جدیدی نیاز خواهد داشت. همچنین در این رویکرد ۳ ستون تاریخ شروع، پایان و وضعیت نیز به جدول اضافه می شود.

تصویر زیر وضعیت جدول را قبل و بعد از تغییر نمایش می دهد. ما برای شهر محل سکونت مشتری ویژگی Type 2 را در نظر گرفته ایم. لذا با تغییر محل سکونت مشتری از تهران به کرج یک رکورد دیگر برای آن مشتری درج می شود. جدول اول وضعیت قبل از تغییر را نشان می دهد. حسین هنوز در تهران زندگی می کند. لذا تاریخ شروع برای این رکورد وجود دارد اما تاریخ پایان درج نشده است و وضعیت با Y نشان داده می شود که نشان دهنده این است که این ردیف آخرین وضعیت مشتری را نمایش می دهد.

اما جدول دوم که پس از تغییر را نمایش می دهد، ۲ رکورد برای حسین ثبت شده است. اولین رکورد که نشان می دهد از سال ۱۳۸۵ تا سال ۱۳۹۰ در شهر تهران زندگی کرده است و N نشان دهنده این است که این رکورد آخرین تغییرات این مشتری را نمایش نمی دهد. رکورد سوم این جدول پس از تغییر محل سکونت اضافه شده است که نشان می دهد حسین از ابتدای سال ۱۳۹۱ به کرج نقل مکان کرده است و Y نشان دهنده این موضوع است که این رکورد آخرین وضعیت او را نمایش می دهد.

S4 - Slowly Changing Dimension چیست؟

استفاده از این روش بسیار پرهزینه است. لذا تا زمانی که نیاز به آن را حس نکرده اید از انجام آن پرهیز کنید.

رویکرد چهارم

در این روش که به Type 3 معروف است جدول دارای دو ستون مقدار قبلی و مقدار فعلی است. در هر ردیف مقدار قبلی و فعلی نگهداری می شود.

همان طور که در تصویر مشاهده می کنید برای حسین مقدار قبلی تهران و مقدار فعلی کرج درج شده است.

S5 - Slowly Changing Dimension چیست؟

رویکرد پنجم

در این روش که به type 4 معروف است جدول مشتریان به روال عادی نگه داری می شود و تاریخچه تغییرات در جدول دیگری نگه داری می شود. در واقع در جدول اصلی آخرین وضعیت و در جدول دوم تاریخچه تغییرات نگه داری می شود.

s6 1 - Slowly Changing Dimension چیست؟

رویکرد ششم

رویکرد ششم که از آن به عنوان Type 6 یاد می شود، ترکیبی از رویکردهای نوع اول، دوم و سوم می باشد (۱+۲+۳). در این رویکرد مقدار قبلی، مقدار فعلی، تاریخ شروع و پایان و در نهایت وضعیت رکورد ذخیره می شود. جدول زیر وضعیت ابتدایی رکورد نمایش می دهد. این رکورد نشان می دهد حسین ساکن تهران است و تا به حال تغییری در محل سکونت او ایجاد نشده است. تاریخ شروع اولین مراجعه او به شرکت ما و تاریخ پایان نشان دهنده این است که او همچنان ساکن تهران است. و ستون آخر نمایش دهنده این است که این رکورد آخرین وضعیت او را نشان می دهد.

S8 - Slowly Changing Dimension چیست؟

حال پس از تغییر مکان او به تهران و به روز رسانی آن، جدول به صورت زیر در می آید. همان طور که مشاهده می کنید رکورد ابتدایی باطل شده که با عدد ۰ در ستون آخر نمایش داده شده است. عدد ۱ برای رکورد آخر نمایانگر این است که این رکورد وضعیت نهایی این مشتری را نمایش می دهد.

S9 - Slowly Changing Dimension چیست؟

جمع بندی

گاهی لازم است که تاریخچه داده نگه داری شود. برای این منظور از یک امکان به نام Slowly Changing Dimension استفاده می شود که تغییرات در Dimension ها را ذخیره می کند. این امکان در ابزار های یکپارچه سازی مثل SSIS قابل پیاده سازی است. انواع رویکرد های پیاده سازی Slowly Changing Dimension در این مطلب شرح داده شد که متناسب با نیاز می توان از آن استفاده نمود.

مطالعه نمایید!




6b77990865d588b48d7f55a013cdd7ec?s=300&d=mm&r=g - Slowly Changing Dimension چیست؟

حسین وثوقی

دانش آموخته مهندسی صنایع و مدیریت فناوری اطلاعات دانشگاه تهران، علاقه مند به تحلیل و ارائه راه حل برای مسائل و بهینه سازی راه حل ها هستم ...

دیدگاه بگذارید

avatar
  عضویت  
به دوستتان خبر دهید.