مقدمه‌ای بر SCD در Power BI

مقدمه‌ای بر SCD در Power BI

نوشته شده توسط: تیم فنی نیک آموز
تاریخ انتشار: ۱۶ بهمن ۱۴۰۱
آخرین بروزرسانی: ۲۲ مرداد ۱۴۰۲
زمان مطالعه: 12 دقیقه
۴.۹
(۱۲)

مقدمه

تغییر آهسته ابعاد (SCD) در Power BI یک مفهوم انبار داده است که توسط Ralph Kimball ابداع شده است. مفهوم SCD با انتقال مجموعه خاصی از داده‌ها، از یک وضعیت به وضعیت دیگر سروکار دارد. تصور کنید ما یک سیستم منابع انسانی (HR) داریم. Stephen Jiang یک مدیر فروش است که ۱۰ نماینده فروش را در تیم خود مدیریت می‌کند. تصویر زیر نمونه داده‌ها را نشان می‌دهد:

تغییر آهسته ابعاد (SCD) در Power BI ؛ قسمت 1، مقدمه ای بر SCD

حالا در نظر بگیرید Stephen Jiang به سمت معاونت فروش ارتقا یافته است؛ بنابراین تعداد تیم او از ۱۰ به ۱۷ افزایش یافت. Stephen همان شخص است، اما نقش او اکنون تغییر کرده است؛ همان‌طور که در شکل زیر نشان داده شده است:

تغییر آهسته ابعاد (SCD) در Power BI ؛ قسمت 1، مقدمه ای بر SCD

مثال دیگر زمانی است که در سیستم فروش، آدرس مشتری تغییر می‌کند. باز هم مشتری همان است، اما آدرس او درحال حاضر تغییر کرده است. از نقطه‌نظر انبار داده، بسته به نیازهای کسب و کار، گزینه‌های مختلفی برای مدیریت این موارد در انبار داده‌ها داریم. راه‌حل‌ها ما را به سمت انواع مختلف SCD  هدایت می‌کند. توجه به این نکته ضروری است که داده‌ها در سیستم‌های تراکنش (در مثال‌های ما، سیستم منابع انسانی یا سیستم فروش) تغییر می‌کنند.

ما داده‌ها را از سیستم‌های تراکنش ازطریق فرآیندهای استخراج، تبدیل و بارگذاری (ETL) منتقل و تبدیل می‌کنیم و آن‌ها را در یک انبار داده ذخیره می‌کنیم. انبار داده جایی است که مفهوم SCD معنا پیدا می‌کند. SCD در مورد چگونگی اعمال کردن تغییرات در سیستم‌های منبع داده‌ها در انبار داده به کار می‌رود. این نوع تغییرات در سیستم منبع، گاهی اوقات اتفاق می‌افتد و همیشگی نیست.

به همین علت، اصطلاح تغییر آهسته برای این مفهوم به کار رفته است. بسیاری از انواع SCD در طول این سال‌ها پیاده‌سازی شده‌اند که پرداختن به همه آن‌ها از حد این مقاله خارج است؛ اما برای نمونه، سه نوع اول را به شرح زیر پوشش می‌دهیم.

SCD type zero (SCD 0)

با این نوع SCD، ما تمام تغییرات یک dimension را نادیده می‌گیریم. بنابراین، هنگامی که آدرس محل سکونت یک شخص در سیستم منبع تغییر می‌کند، مانند مثال سیستم منابع انسانی، ما این dimension را در انبار داده خود تغییر نمی‌دهیم. به عبارت دیگر، تغییرات درون منبع داده را نادیده می‌گیریم. SCD 0 به عنوان fixed dimensions نیز نامیده می‌شود.

SCD type 1 (SCD 1)

با SCD type 1، داده‌های قدیمی را با جدید بازنویسی می‌کنیم و درواقع، داده‌های قدیمی نگه داشته نمی‌شوند. یک مثال عالی از این نوع، زمانی است که کسب و کار به آدرس قدیمی مشتری نیاز ندارد و فقط باید آدرس فعلی مشتری را حفظ کند.

SCD type 2 (SCD 2)

با SCD type 2، تاریخچه تغییرات داده را در انبار داده نگه می‌داریم. یک مثال برای این نوع، زمانی است که کسب و کار نیاز به حفظ آدرس‌های قدیمی و فعلی مشتری دارد. در سناریوی SCD 2، ما باید تاریخچه را حفظ کنیم؛ بنابراین هر زمان که یک سیستم تراکنش تغییر کرد، یک ردیف جدید از داده‌ها را در انبار داده درج می‌کنیم.

درج یک ردیف جدید از داده‌ها باعث داده‌های تکراری در انبار داده می‌شود؛ در نتیجه نمی‌توانیم از ستون CustomerKey به عنوان کلید اصلی استفاده کنیم. به همین علت، باید مجموعه جدیدی از ستون‌ها را به صورت زیر معرفی کنیم:

  • یک ستون کلید جدید اضافه می‌کنیم که منحصر به فرد بودن ردیف‌ها را در Customers dimension تضمین می‌کند. این ستون کلید، به سادگی یک ایندکس را ارائه می‌دهد که هر ردیف از داده‌های ذخیره شده در یک dimension انبار داده را نشان می‌دهد. کلید جدید به اصطلاح کلید جانشین (surrogate key) نامیده می‌شود. در حالی که surrogate key تضمین می‌کند که هر ردیف در dimension، منحصر به فرد است، ما همچنان باید کلید اصلی سیستم منبع را نیز حفظ کنیم. طبق تعریف، کلیدهای اصلی سیستم منبع در مفاهیم انبار داده، کلیدهای تجاری (business keys) یا کلیدهای جایگزین (alternate keys) نامیده می‌شوند.
  • ستون‌های Start Date و End Date نشان دهنده بازه زمانی است که طی آن بازه، یک ردیف از داده‌ها در وضعیت فعلی خود قرار دارد.
  • ستون دیگری به نام status اضافه می‌کنیم که وضعیت هر ردیف داده را نشان می‌دهد.

SCD 2 رایج‌ترین نوع SCD است.

مثال قبلی خود را در مورد Stephen Jiang که از مدیر فروش به معاونت فروش ارتقا یافت، مجدداً مرور می‌کنیم. شکل زیر داده‌ها را قبل از اینکه Stephen ارتقا شغلی داشته باشد را نشان می‌دهد:

تغییر آهسته ابعاد (SCD) در Power BI ؛ قسمت 1، مقدمه ای بر SCD

ستون EmployeeKey کلید جایگزین (Surrogate) برای dimension است و ستون EmployeeBusinessKey کلید تجاری (Business) که همان کلید اولیه customer در سیستم منبع است. ستون Start Date، تاریخ شروع کار Stephen Jiang به عنوان مدیر فروش آمریکای شمالی را نشان می‌دهد، ستون End Date خالی است و ستون Status، مقدار Current را نشان می‌دهد. حال نگاهی به داده‌ها پس از دریافت ارتقا توسط Stephen می‌اندازیم که در شکل زیر نشان داده شده است:

تغییر آهسته ابعاد (SCD) در Power BI ؛ قسمت 1، مقدمه ای بر SCD

همان‌طور که در شکل بالا نشان داده شده است، Stephen Jiang نقش جدید خود را به عنوان معاون فروش در تاریخ ۱۳/۱۰/۲۰۱۲ شروع کرده است و کار خود را به عنوان مدیر فروش آمریکای شمالی در تاریخ ۱۲/۱۰/۲۰۱۲ به پایان رسانده است.

بررسی می‌کنیم SCD 2 در مورد مدل‌سازی داده‌ها در Power BI به چه صورت است. سؤال اول این است: آیا می‌توانیم بدون داشتن انبار داده، SCD 2 را مستقیماً در Power BI Desktop پیاده‌سازی کنیم؟ برای پاسخ به این سؤال، باید به یاد داشته باشیم که هنگام ساخت یک مدل داده در Power BI، یک لایه معنایی (semantic layer) ایجاد می‌کنیم.

دوره آموزشی Power BI نیک آموز

در مورد اجزای مختلف یک BI solution، از جمله لایه معنایی، به مقالات دیگر مراجعه کنید. اما اینجا تأکید می‌کنم، لایه معنایی، طبق تعریف، نمایی از داده‌های منبع (معمولاً یک انبار داده) است که برای اهداف گزارش‌گیری و تحلیلی، بهینه‌سازی شده است. لایه معنایی جایگزین انبار داده یا نسخه دیگری از انبار داده نخواهد بود.

بنابراین پاسخ منفی است، ما نمی‌توانیم SCD 2 را در Power BI پیاده‌سازی کنیم. بنابراین ما یا به یک انبار داده و یا به یک سیستم تراکنش دارای مکانیزمی برای پشتیبانی از حفظ سابقه داده‌ها نیاز داریم، مانند temporal mechanism.

temporal mechanism ویژگی‌ای است که برخی از سیستم‌های مدیریت پایگاه‌ داده، رابطه‌ای مانند SQL Server برای ارائه اطلاعات در مورد داده‌های نگهداری شده در یک جدول ارائه می‌دهند که در هر زمان، فقط داده‌های فعلی را نگهداری می‌کنند.

پس از بارگذاری داده‌ها در مدل داده در Power BI Desktop، تمام داده‌های فعلی و سابقه داده‌ها را در جداول dimension داریم. بنابراین، هنگام کار با SCD ها باید دقت داشته باشیم. به عنوان مثال، شکل زیر فروش نمایندگی فروش را برای کارکنان نشان می‌دهد:

تغییر آهسته ابعاد (SCD) در Power BI ؛ قسمت 1، مقدمه ای بر SCD

در نگاه اول، اعداد، صحیح به نظر می‌رسند اما ممکن است مفهوم اشتباهی را منتقل کنند. بستگی به این دارد که کسب و کار انتظار دارد در گزارش چه موردی را مشاهده کند. به شکل ۴ نگاه کنید که تغییرات Stephen را نشان می‌دهد. Stephen زمانی که مدیر فروش آمریکای شمالی بود، حجم فروش زیادی داشت (EmployeeKey 272) اما پس از ارتقا خود، نشان می‌دهد که Stephen دیگر فروش نداشته است (EmployeeKey 277). این مورد به این دلیل است که وقتی جدول بالا را ایجاد کردیم، SCD را در نظر نگرفتیم. برای وضوح بیشتر، باید ستون Status  را به جدول اضافه کنیم.

تغییر آهسته ابعاد (SCD) در Power BI ؛ قسمت 1، مقدمه ای بر SCD

اگر کسب ‌و کار نیاز داشته باشد فقط ارزش‌های فروش را فقط برای کارکنانی نشان دهد که Status آن‌ها current است، در آن صورت، ما باید SCD را در معادله فاکتور بگیریم و مقادیر فروش Stephen را فیلتر کنیم. بسته به نیازهای کسب و کار، ممکن است لازم باشد ستون status را به عنوان فیلتر در بصری‌سازی‌ها اضافه کنیم؛ در حالی که در برخی موارد دیگر، ممکن است نیاز داشته باشیم معیارها را با افزودن ستون‌های Start Date و End Date و Status تغییر دهیم تا نتایج را فیلتر کنیم. وقتی از فیلترهای بصری برای کاهش فروش Stephen استفاده می‌کنیم، شکل زیر نتایج را نشان می‌دهد:

تغییر آهسته ابعاد (SCD) در Power BI ؛ قسمت 1، مقدمه ای بر SCD

نتیجه گیری

کار با SCD ها همیشه به این سادگی نیست. گاهی اوقات، لازم است تغییراتی در مدل داده خود ایجاد کنیم. بنابراین، آیا همه توضیحات بالا به این معنی است که ما نمی‌توانیم هر نوع SCD را در Power BI پیاده‌سازی کنیم؟ پاسخ این است که بستگی به سناریو شما دارد. در برخی از سناریوها، می‌توانیم راه حلی شبیه به عملکرد SCD 1 را پیاده‌سازی کنیم، اما در اجرای عملکرد SCD 2 در Power BI شانس زیادی نداریم.

چه رتبه ای می‌دهید؟

میانگین ۴.۹ / ۵. از مجموع ۱۲

اولین نفر باش

title sign
دانلود مقاله
مقدمه‌ای بر SCD در Power BI
فرمت PDF
7 صفحه
حجم 1 مگابایت
دانلود مقاله
title sign
معرفی نویسنده
تیم فنی نیک آموز
مقالات
278 مقاله توسط این نویسنده
محصولات
0 دوره توسط این نویسنده
تیم فنی نیک آموز
پروفایل نویسنده
title sign
دیدگاه کاربران