در دروس اولیه دوره انبارداده (Data Warehouse) با مفهوم هوش تجاری و مفهوم انبار داده آشنا شدیم. گفتیم که هوشتجاری در واقع فرآیند تبدیل دادههای سازمان به ارزش (Value) برای آن سازمان است و برای این کار از انبار داده (Data Warehouse) استفاده میکند تا دادهها را در گوشهای انبار کند و بتواند از آنها در مواقع لازم استفاده نماید. در این درس میخواهیم یکی از روشهای معروف انبار کردن دادهها که به آن مکعب داده یا همان Data Cube گفته میشود را با هم دیگر مرور کنیم تا دید بهتری در حوزه انبار کردن دادهها به دست بیاوریم.
حتما با پایگاهدادههای رابطهای مانند SQL کار کردهاید. اگر اینطور نبوده، حتما نرمافزار Excel که نوعی از نرمافزار صفحه گسترده (Spread Sheet) هست را دیدهاید. در این حالت ذخیره دادهها که در SQL و یا Excel مورد استفاده قرار میگیرد، دادهها به صورت دو بُعدی (مستطیلی) ذخیره و نمایش داده میشوند. در درس دادههای مستطیلی به این موضوع پرداختهایم، اما برای فهم بهتر شکل آن درس را اینجا هم میآوریم:
همانطور که میبینید، دادهها در دو بُعد ذخیره شده اند. هر سطر یک دانشجو است و هر ستون یک ویژگی برای دانشجویان را نمایش میدهد (البته که در بحث دادهکاوی هر ستون یک بُعد است ولی در هنگام ذخیره کردن، دادهها به همین صورت دو بُعدی ذخیره و نمایش داده میشوند).
اما در مکعبداده (Data Cube) موضوع فرق میکند. در مکعبداده، دادهها به صورت چند بُعدی نمایش داده میشوند و هر بُعد یک ویژگی از انبارداده ما را نمایش میدهد. برای مثال فرض کنید شما مالک یک فروشگاه زنجیرهای هستید که در سراسر ایران شعبه دارد. حال فرض میکنیم میخواهید موضوع مبلغ کلی فروش در فروشگاههای خود را تحلیل کنید. برای این کار از انباردادهها استفاده میکنید و ویژگیهای مختلفی را مورد بررسی قرار میدهید. در اینجا فرض میکنیم شما فقط سه ویژگی زمان فروش، مکان فروشگاه و نوع اجناس فروخته شده را مورد بررسی قرار میدهید. در واقع این سه ویژگی هست که شما بایستی آنها را انبار کنید. هر کدام از دادههای مربوط به زمان فروش، مکان فروشگاهها و نوع اجناس فروخته شده ممکن است در نرمافزاری جدا باشد که بعد از عملیات ETL (که بعدا در مورد آن توضیح میدهیم) در انبار داده ذخیره میشوند. نمونهای از این انبار داده سه بُعدی به صورت زیر است:
همانطور که میبینید انبارداده ما ۳بُعد دارد. بُعد اول زمان است (که در اینجا به صورت فصلی جدا شده)، بُعد دوم مکان فروشگاه است (که در اینجا به صورت استانی جدا شده است) و بُعد سوم اجناس فروخته شده است (که در اینجا به صورت نوع جنس جدا شده است). عدد سبز رنگی که در یکی از خانههای این مکعب مشاهده میکنید، میزان فروش به تومان است. مثلا عدد سبز بیانگر این است که فروشگاههای شما در فصل چهارم سال، در استان اردبیل، نوع مواد شوینده را ۳میلیون تومان فروخته اند. توجه کنید که هر کدام از این مکعبهای کوچک (که تشکیل دهنده مکعب کلی بزرگ شدهاند)، به هر کدام از ویژگیها (ابعاد) متصل میشوند و در واقع نقطه طلاقی ۳بُعد (۳ویژگی) باشند. برای مثالی دیگر عدد قرمز رنگ را در نظر بگیرید. این عدد نشان میدهد در فصل اول سال، در تهران،شویندهها مبلغ ۱۰۰میلیون تومان فروش داشتهاند (زیرا این مکعب محل طلاقی سه بُعد فصل اول، استان تهران و نوع لوازم شوینده بوده است).
توجه کنید که ما برای راحتی دادهها را ۳بُعد فرض کردهایم در حالی که انبار داده میتواند بینهایت بُعد (ویژگی) داشته باشد که با توجه به آنها میتوانید دادههای خود را تحلیل کنید. البته این نیاز به درک عمیقتر آن کسب و کار و احتمالا مشورت با مدیران و صاحبنظران سازمان است.
خوب تا اینجا متوجه شدیم که مکعب داده (Data Cube) چیست و چگونه میتوان از آن استفاده کرد. اما ۴عمل اصلی در یک مکعب داده انجام پذیر است. Drill Down، Roll Up، Slice و Dice و Pivot، که هر کدام کاربرد خود را دارند.
مفهوم Drill Down یا رفتن به عمق ساده است. فرض کنید میخواهیم Drill Down را در مثال بالا بر روی بُعد زمان انجام دهیم. الان در سطح فصل قرار داریم. حالا میخواهیم یک سطح پایینتر برویم. سطح پایینتر فصل میتواند ماه باشد. یعنی ما در بُعد زمان از سطح فصل به سطح ماه Drill Down میکنیم (هر فصل متشکل از ۳ماه است). اگر مکعب اصلی مانند شکل بالا باشد، Drill Down شدهی آن در بُعد زمان چیزی مانند شکل زیر است:
شکل بالا همان مکعب شکل قبلی است با این تفاوت که بُعد زمان که در سطح فصل بوده است، حالا به یک سطح پایینتر یعنی سطح ماه ریزتر (خُردتر) شده است. برای مثال عدد قرمز رنگ در شکل بالا نشان میدهد که در ماه مهر، در تهران، لوازم شوینده به میزان ۳۰میلیون تومان فروخته شده است (که طبیعتا زیر مجموعهای از فصل اول بوده است). هر کدام از سطحها را با توجه به دادهها میتوان به سطح پایینتری خُرد کرد و با رفتن به عمق، جزییات بیشتری از یک بُعد را مشاهده کرد.
عکس عمل Drill Down، عمل Roll Up است. در همان شکل بالا اگر برای مثال در بُعد زمان از سطح ماه به سطح فصل بیاییم در واقع یک عمل Roll Up انجام دادهایم. شکل زیر میتواند عملیات Roll Up و Drill Down را برای سطوح مختلف در بُعد زمان نشان دهد:
توجه کنید که لزوما برای یک انبار داده نباید تمامی سطوح بالا وجود داشته باشد و با توجه به نیاز مسئله و و موضوع میتوانیم یک یا چند سطح داشته باشیم و بر روی آنها Roll Up یا Drill Down کنیم.
دو عمل دیگر Slice و Dice هستند. این دو عمل نیز بسیار سادهاند. در عملیات Slice ما میتوانیم یک مقدار از یک بُعد را انتخاب کنیم و بقیه مقادیر آن بعد را حذف کنیم (ابعاد دیگر باقی میمانند). مثلا در مثال بالا، از بُعد زمان فقط فصل ۱ را انتخاب میکنیم و بقیه زمانها (فصلها) را حذف میکنیم و دو بُعد نوع جنس و مکان (استان) باقی میماند. به این کار عملیات Slice میگویند. با عملیات Slice بر روی مثال بالا چیزی مانند شکل زیر به وجود میآید:
عملیات Dice هم به این صورت است که ابعاد حفظ میشوند ولی از هر بعد میتوان یک یا چند مقدار را حذف کرد. مثلا در مثال بالا میتوان از بُعد زمان، فصل سوم را حذف کرد و بقیه دادهها و ابعاد و مقادیر باقی بمانند. در واقع یک مکعب زیر مجموعه از مکعب اصلی در عملیات Dice باقی میماند.
یک عملیات دیگر عملیات Pivot (چرخش) در مکعب داده است. در این عملیات جای ابعاد عوض میشود. مثلا در مثال بالا، جای بُعد زمان (فصلها) و بعد مکان (استانها) میتواند عوض شود تا یک حالت دیگر از دادهها نمایش داده شود.
خب، در این درس به معرفی مکعب داده یا همان Data Cube و عملیات مختلفی که میتوان بر روی آن انجام داده پرداختیم. مکعب داده قلب اصلی عملیات تحلیل OLAP در انبار دادهها است و کاربرد فراوانی هم در بحث هوش تجاری و داشبوردهای مدیریتی دارد که در دروس بعدی به آن خواهیم پرداخت.
- ۱ » هوش تجاری (Business Intelligence) چیست؟
- ۲ » انبار داده (Data Warehouse) چیست؟
- ۳ » مفهوم مکعب داده (Data Cube) در انباردادهها
- ۴ » پردازش تحلیلی برخط یا همان OLAP چیست؟
- ۵ » تفاوت OLAP و OLTP چیست؟
- ۶ » فرآیند ETL در انبار داده (Extract, Transformation, Load)
- ۷ » ELT در انبار داده و تفاوت آن با ETL
- ۸ » طراحی انبار داده با شِمای چند بُعدی (Multidimensional Schema)
- ۹ » بازار داده (Data Mart) چیست و چه تفاوتی با انبار داده (Data Warehouse) دارد؟
- ۱۰ » دریاچه داده (Data Lake) چیست؟
ممنون بابت این موضوعات ۹۰ % به یاد گیری و امتحان ۲۰ % های مضمون DW ام کمک کرد/ دمتان گرم
مطالب شما عالی و کاملا قابل فهم بود. ممنون
خییلی عالی هستین استاد مرسی کلی
واقعا واقعا واقعا ممنونم،خوشحالم از اینکه پیدا کردم این مطالب رو و ناراحت از اینکه ادامش هنوز ساخته نشده،این ترم این درس رو داشتم و هیچی از مفهومشون نمیدونستم تا زمانی که مطالب شما رو خوندم.
خدا خیرتون بده الهی آمین.
بسیار عالی و روان بود ….درود برشما …مانا باشید.
بسیار سپاسگذارم ، برای شروع کار آموزش این مفهوم خیلی عالی بود .
سلام
ممنون از شما و سایت بسیار عالی تان.
بسیار مفهومی و عمیق توضیح دادین.ممنون از شما
سلام استاد بسیار عالی و روان بود ….درود برشما …مانا باشید.
عالی
عالی بود .واقعا ممنونم 🙏🙏🙏کلی دنبال مطلب در این خصوص گشتم ولی مطلب قابل فهم پیدا نکردم . درود بر شما
سلام
با سپاس از شما، چجوری می توانم فایل این مقاله یا کلا فایل های آموزشی تان را داشته باشم؟ آیا امکان ایمیل شدن هست؟ سپاسگذارم.