در طول این سری آموزشهای MDX (البته هنوز نمیدانم چند قسمت خواهد بود) تلاش خواهم کرد تمامی موارد موجود در MDXها را به طور کامل با شرح و توضیح مناسب پوشش دهم.
امیدوارم شما دوستان عزیز پس از مطالعهی این مجموعه مقالات به دانش کافی در خصوص MDX Queryها دست پیدا کنید.
در قسمت اول این آموزشها در نظر دارم در ابتدا مفاهیم اولیه OLAP و همچنین مفاهیم مورد نیاز در Multi Dimentional Data Base ها برای شما عزیزان توضیح دهم و در قسمتهای بعدی این مجموعه در خصوص MDX Queryها صحبت خواهم کرد.
انباره داده (Data Warehouse)
عملا یک یا چند پایگاه داده میباشد که اطلاعات تجمیع شده از دیگر پایگاههای داده را درخود نگه داری میکند. برای ارایه گزارشاتی که از پایگاه دادههای OLTP نمیتوانیم به راحتی بگیریم.
(OLTP (Online transaction processing
سیستم پردازش تراکنش برخط میباشند . که عملا همان سیستم هایی میباشند که در طول روز دارای تغییرات بسیار زیادی میباشند (مانند سیستمهای حسابداری، انبار داری و ... که در طول روز دایما دارای تغییرات در سطح داده میباشند.)
(OLAP (OnLine Analysis Processing
این سیستمها خدماتی در نقش تحلیلگر داده و تصمیم گیرنده ارائه میکند. چنین سیستمهایی میتوانند، داده را در قالبهای مختلف برای هماهنگ کردن نیازهای مختلف کاربران مختلف، سازماندهی کنند.
تفاوت انبار داده (Data Warehouse) و پایگاه داده(Data Base)
وظیفه اصلی سیستمهای پایگاهداده کاربردی OnLine ،پشتیبانی از تراکنشهای برخط و پردازش کوئری است. این سیستمها، سیستم پردازش تراکنش برخط(OLTP) نامیده میشوند و بیشتر عملیات روزمره یک سازمان را پوشش میدهند. از سوی دیگر انبارداده، خدماتی در نقش تحلیلگر داده و تصمیم گیرنده ارائه میکند. چنین سیستمهایی میتوانند داده را در قالبهای مختلف برای هماهنگ کردن نیازهای مختلف کاربران مختلف، سازماندهی و ارائه میکند. این سیستمها با نام سیستمهای پردازش تحلیلی برخط (OLAP) شناختهمیشوند.
موارد تفاوت انبار داده (Data Warehouse) و پایگاه داده(Data Base)
• از لحاظ مدلهای داده: پایگاههای داده برای مدل OLTP بهینه سازی شدهاست. که بر اساس مدل داده رابطهای امکان پردازش تعداد زیادی تراکنش همروند، که اغلب حاوی رکوردهای اندکی هستند را دارد. اما در انبارهای داده که برای پردازش تحلیلی بر خط، طراحی شدهاند امکان پردازش تعداد کمی کوئری پیچیده بر روی تعداد بسیار زیادی رکورد داده فراهم میشود. سرورهای OLAP میتوانند از دو نوع رابطهای (ROLAP) یا چندبعدی باشند (MOLAP).
• از لحاظ کاربران: کاربران پایگاهداده کارمندان دفتری و مسؤولان هستند در حالیکه کاربران انبارداده مدیران و تصمیمگیرندهها هستند.
• از لحاظ عملیات قابل اجرا بر روی آنها: عملیات انجام شده برروی پایگاههای داده عمدتا عملیات (Select/Insert/Update/Delete) میباشد ، در حالی که عملیات روی انبار داده عمدتا Select ها میباشند.
• از لحاظ مقدار دادهها: مقدار دادههای یک پایگاهداده در حدود چند مگابایت تا چند گیگابایت است در حالی که این مقدار در انبار داده در حدود چند گیگابایت تا چند ترابایت است.
• از لحاظ زمان پرس و جو : به طور کلی سرعت پرس و جو ها روی انبارهی داده بسیار بالاتر از کوئری مشابه آن روی پایگاه داده میباشد.
• پاکسازی داده (Data Cleansing)
پاکسازی دادهها عبارت است از شناسایی و حذف خطاها و ناسازگاریهای داده ای به منظور دستیابی به دادههایی با کیفیت بالاتر.
اگر دادهها از منابع یکسان مثل فایلها یا پایگاههای داده ای گرفته شوند خطاهایی از قبیل اشتباهات تایپی، دادههای نادرست و فیلدهای بدون مقدار را خواهیم داشت و چنانچه دادهها از منابع مختلف مثل پایگاه دادههای مختلف یا سیستم اطلاعاتی مبتنی بر وب گرفته شوند .با توجه به نمایشهای دادهای مختلف خطاها بیشتر بوده و پاکسازی دادهها اهمیت بیشتری پیدا خواهد کرد. برای دستیابی به دادههای دقیق و سازگار، بایستی دادهها را یکپارچه نموده و تکرارهای آنها را حذف نمود.
وجود خطاهای نویزی، ناسازگاری در دادههای انبار داده و ناقص بودن دادهها امری طبیعی است. فیلدهای یک جدول ممکن است خالی باشند و یا دارای دادههای خطا دار و ناسازگار باشند. برای هر کدام از این حالتها روشهایی جهت پاکسازی و اصلاح دادهها ارایه میشود.
در این بخش عملیات مختلفی برای پاکسازی دادهها قابل انجام است:
• نادیده گرفتن تاپلهای نادرست
• پرکردن فیلدهای نادرست به صورت دستی
• پرکردن فیلدهای نادرست با یک مقدار مشخص
• پرکردن فیلدها با توجه به نوع فیلد و دادهها ی موجود
• پرکردن فیلدها با نزدیکترین مقدار ممکن (مثلا میانگین فیلد تاپلهای دیگر میتواند به عنوان یک مقدار مناسب در نظر گرفته شود)
• یکپارچهسازی (Integration)
• تبدیل دادهها(Data Transformation)• شناسایی فیلدهای یکسان: فیلدهای یکسان که در جدولها ی مختلف دارای نامهای مختلف میباشند.
• شناسایی افزونگیها ی موجود در دادهها ی ورودی: دادههای ورودی گاهی دارای افزونگی است. مثلا بخشی از رکورد در جداول مختلف وجود دارد.
• مشخص کردن برخوردهای داده ای: مثالی از برخوردهای داده ای یکسان نبودن واحدهای نمایش داده ای است. مثلا فیلد وزن در یک جدول بر حسب کیلوگرم و در جدولی دیگر بر حسب گرم ذخیره شده است.
در این فاز، دادههای ورودی طی مراحل زیر به شکلی که مناسب عمل داده کاوی باشند، در میآیند:
• از بین بردن نویز داده¬ها(Smoothing)
• تجمیع داده¬ها(Aggregation)
• کلی¬سازی(Generalization)
• نرمال¬سازی(Normalization)
• افزودن فیلدهای جدید
• استفاده از مقادیر مجاور برای تعیین یک مقدار مناسب برای فیلدهای دارای نویز
• دسته بندی دادههای موجود و مقداردهی فیلد دارای داده نویزی با استفاده از دسته نزدیکتر
• ترکیب روشهای فوق با ملاحظات انسانی، در این روش، اصلاح مقادیر نویزی با استفاده از یکی از روشهای فوق انجام میگیرد اما افرادی برای بررسی و اصلاح نیز وجود دارند
4. نرمال سازی(Normalization): منظور از نرمال سازی، تغییر مقیاس دادهها است. به عنوان مثالی از نرمال سازی، میتوان به تغییر بازه یک فیلد از مقادیر موجود به بازه 0 تا 1 اشاره کرد.
5. افزودن فیلدهای جدید: گاهی اوقات برای سهولت عمل داده کاوی میتوان فیلدهایی به مجموعه فیلدهای موجود اضافه کرد. مثلا میتوان فیلد میانگین حقوق کارمندان یک شعبه را به مجموعه فیلدهای موجود اضافه نمود.
در این مرحله، عملیات کاهش دادهها انجام میگیرد که شامل تکنیکهایی برای نمایش کمینه اطلاعات موجود است
. این فاز از سه بخش تشکیل میشود:
• کاهش دامنه و بعد: فیلدهای نامربوط، نامناسب و تکراری حذف میشوند. برای تشخیص فیلدهای اضافی، روشهای آماری و تجربی وجود دارند ؛ یعنی با اعمال الگوریتمهای آماری و یا تجربی بر روی دادههای موجود در یک بازه زمانی مشخص، به این نتیجه میرسیم که فیلد یا فیلدهای خاصی کاربردی در انباره داده ای و داده کاوی نداشته و آنها را حذف میکنیم.
• فشرده سازی داده ها: از تکنیکهای فشرده سازی برای کاهش اندازه دادهها استفاده میشود.
• کدکردن داده ها: دادهها در صورت امکان با پارامترها و اطلاعات کوچکتر جایگزین میشوند.
مدل دادهای رابطهای (Relational) وچند بعدی (Multidimensional) :
1. مدل داده رابطهای (Relational data modeling) بر اساس دو مفهوم اساسی موجودیت (entity) و رابطه (relation) بنا نهاده شده است. از این رو آن را با نام مدل ER نیز میشناسند.
• موجودیت (entity) : نمایانگر همه چیزهایی که در پایگاه داده وجود خارجی دارند یا به تصور در میآیند. پدیدهها دارای مشخصاتی هستندکه به آنها صفت (attribute) گفته میشود.
• رابطه (relation) : پدیدهها را به هم میپیوندد و چگونگی در ارتباط قرار گرفتن آنها با یکدیگر را مشخص میکند.
2. مدل داده چندبعدی ( Multidimensional modeling ) یا MD بر پایه دو ساختار جدولی اصلی بنا نهاده شده است:
این ساختار امکان داشتن یک نگرش مدیریتی و تصمیمگیری به دادههای موجود در پایگاه داده را تسهیل میکند.
• جدول حقایق (Fact Table)
• جداول ابعاد (Dimension Table)
جدول حقایق : قلب حجم دادهای ما را تشکیل میدهد و شامل دو سری فیلد است : کلیدهای خارجی به ابعاد و شاخصها (Measure).
شاخصها (Measure) : معیارهایی هستند که بر روی آنها تحلیل انجام میگیرد و درون جدول حقایق قرار دارند. شاخصها قبل از شکلگیری انبار داده توسط مدیران و تحلیلگران به دقت مشخص میشوند. چون در مرحله کار با انبار اطلاعات اساسی هر تحلیل بر اساس همین شاخصها شکل میگیرد. شاخصها تقریباً همیشه مقادیر عددی را شامل میشوند. مثلا برای یک فروشگاه زنجیرهای این شاخصها میتوانند واحدهای فروختهشده کالاها و مبلغ فروش به تومان باشند.
بعد (Dimension) : هر موجودیت در این مدل میتواند با یک بعد تعریف شود. ولی بعدها با موجودیتهای مدل ER متفاوتند زیرا آنها سازمان شاخصها را تعیین میکنند. علاوه بر این دارای یک ساختار سلسله مراتبی هستند و به طور کلی برای حمایت از سیستمهای تصمیم گیری سازماندهی شدهاند.
اجزای بعدها member نام دارند و تقریباٌ همه بعدها، memberهای خود را در یک یا چند سطح سلسله مراتبی (hierarchies) سازماندهی مینمایند، که این سلسله مراتب نمایانگر مسیر تجمیع (integration) و ارتباط بین سطوح پایینتر (مثل روز) و سطوح بالاتر (مثل ماه و سال) است. وقتی یک دسته از memberهای خاص با هم مفهوم جدیدی را ایجاد میکنند، به آنها یک سطح (Level) میگوییم. ( مثلاٌ هر سی روز را ماه میگوییم. در این حالت ماه یک سطح است. )
حجمهای دادهای (Data Cube)
حجمهای دادهای یا Cube از ارتباط تعدادی بعد با تعدادی شاخص تعریف میشود. ترکیب memberهای هر بعد از حجم دادهای فضای منطقی را تعریف میکند که در آن مقادیر شاخصها ظاهر میشوند. هر بخش مجزا که شامل یکی از memberهای بعد در حجم دادهای است ، سلول (cell) نامیدهمیشود. سلولها شاخصهای مربوط به تجمیعهای مختلف را در خود نگهداری مینمایند. در واقع مقادیر مربوط به حقایق (Fact) که در جدول حقایق (Fact) تعریف میشوند در حجم دادهای (Data Cube) در سلولها (Cell) نمایان میگردند.
شماهای دادهای (Data Schema) : سه نوع Schema در طراحی Data Warehouse وجود دارد
1. Stare
2. Snowflake
3. Galaxy1. شمای ستارهای (Star Schema) : متداولترین شما، همین شمایستارهای است. که در آن انبارداده با استفاده از اجزای زیر تعریف میشود:
• یک جدول مرکزی بزرگ به نام جدول حقایق که شامل حجم زیادی از دادههای بدون تکرار است.
• مجموعهای از جدولهای کمکی کوچکتر به نام جدول بعد ، که به ازای هر بعد یکی از این جداول موجود خواهد بود.
• شکل این شما به صورت یک ستاره است که جدول حقایق در مرکز آن قرار گرفته و هر یک از جداول بعد به وسیله شعاعهایی به آن مربوط هستند.
مشکل این مدل احتمال پیشامد افزونگی در آن است.
2. شمای دانهبرفی ( Snowflake Schema ) : در واقع شمای دانهبرفی، نوعی از شمای ستارهای است که در آن بعضی از جداول بعد نرمال شدهاند. و به همین خاطر دارای تقسیمات بیشتری به شکل جداول اضافی میباشد که از جداول بعد جدا شدهاند.
تفاوت این دو شما در این است که جداول شمای دانه برف نرمال هستند و افزونگی در آنها کاهش یافته است. که این برای کار کردن با دادهها و از لحاظ فضای ذخیرهسازی مفید است. ولی در عوض کارایی را پایین میآورد، زیرا در محاسبه کوئریها به joinهای بیشتری نیاز داریم.
3. شمای کهکشانی (galaxy schema) : در کاربردهای پیچیده برای به اشتراک گذاشتن ابعاد نیاز به جداول حقایق چندگانه احساس میشود که یک یا چند جدول بعد را در بین خود به اشتراک میگذارند. این نوع شما به صورت مجموعهای از شماهای ستارهای است و به همین دلیل شمای کهکشان یا شمای منظومهای نامیدهمیشود. این شما به ما این امکان را میدهد که جداول بعد بین جداول حقایق مختلف به اشتراک گذاشته شوند.
عملیات بر روی حجمهای دادهای :
• Roll Up (یا Drill-up) : با بالا رفتن در ساختار سلسله مراتبی مفهومی یک حجم دادهای، یا با کاهش دادن بعد، یک مجموعه با جزئیات کمتر (خلاصه شده) ایجاد مینماید. بالا رفتن در ساختار سلسله مراتبی به معنای حذف قسمتی از جزئیات است. برای مثال اگر قبلاٌ بعد مکان بر حسب شهر بوده آن را با بالا رفتن در ساختار سلسله مراتبی بر حسب کشور درمیآوریم. ولی وقتی با کاهش دادن بعد سروکار داریم منظور حذف یکی از ابعاد و جایگزین کردن مقادیر کل است. در واقع همان عمل تجمیع (aggregation) است.
• Drill Down : بر عکس عملRoll-up است و از موقعیتی با جزئیات دادهای کم به جزئیات زیاد میرود. این کار با پایین آمدن در ساختار سلسله مراتبی( به سمت جزئیات بیشتر) یا با ایجاد ابعاد اضافی انجام میگیرد.
نمونهای از عملیات Drill Down و Roll Up
• Slice : با انتخاب و اعمال شرط بر روی یکی از ابعاد یک subcube به شکل یک برش دو بعدی ایجاد میکند. در واقع همان عمل انتخاب (select) است.
• Dice : با انتخاب قسمتی از ساختار سلسله مراتبی بر روی دو یا چند بعد یک subcube ایجاد مینماید.
نمونهای از عملیات Dice و Slice
• Pivot (یا Rotate) : این عملیات بردارهای بعد را در ظاهر میچرخاند.
نمونهای از عملیات pivot
• Drill-across : نتیجه اجرای کوئریهایی که نتیجه اجرای آنها حجمهای دادهایهای مرکب با بیش از یک fact-table است.
• Ranking : سلولهایی را باز میگرداند که در بالا یا پایین شرط خاصی واقع هستند. مثلاٌ ده محصولی که بهترین فروش را داشتهاند.
سرورهای OLAP :
در تکنولوژیOALP دادهها به دو صورت چندبعدی (Multidimensional OLAP) (MOLAP) و رابطهای (Relational OLAP) (ROLAP) ذخیره میشوند. OLAP پیوندی(HOLAP) تکنولوژیی است که دو نوع قبل را با هم ترکیب میکند.
MOLAP : روشی است که معمولاٌ برای تحلیلهای OLAP در تجارت مورد استفاده قرار میگیرد. در MOLAP، دادهها با ساختار یک حجم دادهای ( Data Cube ) چند بعدی ذخیره میشوند. ذخیرهسازی در پایگاهدادههای رابطهای انجام نمیگیرد، بلکه با یک فرمت خاص انجام میشود. اغلب محصولات موفق MOLAP از یک روش چندبعدی استفاده مینمایند که در آن یک سری حجمهای دادهای کوچک، انبوه و از پیش محاسبهشده، یک حجم دادهای بزرگ (hypercube ) را میسازند.
علاوه براین MOLAP به شما امکان میدهد دادههای دیدهای (View) تحلیلگران را دسته بندی کنید، که این در حذف اشتباهات و برخورد با ترجمههای پرغلط کمک بزرگی است.
گذشته از همه اینها از آنجا که دادهها به طور فیزیکی در حجمهای دادهای بزرگ چندبعدی ذخیره میشوند، سرعت انجام فعالیتها بسیار زیاد خواهد بود.
از آنجا که یک کپی از دادههای منبع در کامپیوتر Analysis server ذخیرهمیشود، کوئریها میتوانند بدون مراجعه به منابع مجدداً محاسبه شوند. کامپیوتر Analysis server ممکن است کامپیوترسرور که تقسیم بندیها در آن انجام شده یا کامپیوتر دیگری باشد. این امر بستگی به این دارد که تقسیمبندیها در کجا تعریف شدهاند. حتی اگر پاسخ کوئریها از روی تقسیمات تجمیع (integration) شده قابل دستیابی نباشند، MOLAP سریعترین پاسخ را فراهم میکند. سرعت انجام این کار به طراحی و درصد تجمیع تقسیمبندیها بستگی دارد.
مزایا : کارایی عالی- حجمهای دادهای MOLAP برای بازیابی سریع دادهها ساخته شدهاند و در فعالیتهای slice و dice به صورت بهینه پاسخ میدهند. ترکیب سادگی و سرعت مزیت اصلی MOLAP است.
در ضمنMOLAP قابلیت محاسبه محاسبات پیچیده را فراهم میکند. همه محاسبات از پیش وقتی که حجمهای دادهای ساخته میشود، ایجاد میشوند. بنابراین نه تنها محاسبات پیچیده انجام شدنی هستند بلکه بسیار سریع هم پاسخ میدهند.
معایب : عیب این روش این است که تنها برای دادههایی با مقدار محدود کارکرد خوبی دارد. از آنجا که همه محاسبات زمانی که حجمهای دادهای ساخته میشود، محاسبه میگردند، امکان این که حجمهای دادهای مقدار زیادی از دادهها را در خود جای دهد، وجود ندارد. ولی این به این معنا نیست که دادههای حجمهای دادهای نمیتوانند از مقدار زیادی داده مشتق شده باشند. دادهها میتوانند از مقدار زیادی داده مشتق شدهباشند. اما در این صورت، فقط اطلاعات level خلاصه (level ای که دارای کمترین جزئیات است یعنی سطوح بالاتر) میتوانند در حجمهای دادهای موجود باشند.
ROLAP : محدودیت MOLAP در حجم دادههای قابل پرسوجو و نیاز به روشی که از دادههای ذخیرهشده به روش رابطهای حمایت کند، موجب پیشرفت ROLAP شد.
مبنای این روش کارکردن با دادههایی که در پایگاهدادههای رابطهای ذخیرهشدهاند، برای انجام اعمال slicing و dicing معمولی است. با استفاده از این مدل ذخیرهسازی میتوان دادهها را بدون ایجاد واقعی تجمیع در پایگاهدادههای رابطهای به هم مربوط کرد.
مزایا : با این روش میتوان به حجم زیادی از دادهها را رسیدگی کرد. محدودیت حجم داده در تکنولوژی ROLAP مربوط به محدودیت حجم دادههای قابل ذخیرهسازی در پایگاهدادههای رابطهای است. به بیان دیگر، خود ROLAP هیچ محدودیتی بر روی حجم دادهها اعمال نمیکند.
معایب : ممکن است کارایی پایین بیاید. زیرا هر گزارش ROLAP در واقع یک کواِری SQL (یا چند کواِری SQL )در پایگاه دادههای رابطهای است و اگر حجم دادهها زیاد باشد ممکن است زمان پاسخ کواِری طولانی شود. در مجموع ROLAP سنگین است، نگهداری آن سخت است و کند هم هست. بخصوص زمانی که نیاز به آدرس دهی جدولهای ذخیره شده در سیستم چند بعدی داریم.
این محدودیت ناشی از عملکرد SQL است. زیرا تکنولوژی ROLAP بر پایه عبارات مولد SQL برای پرسش و پاسخ بر روی پایگاه داده رابطهای است و عبارات SQL به همه نیازها پاسخ نمیدهند (مثلاٌ محاسبه حسابهای پیچیده در SQL مشکل است)، بنابراین فعالیتهای ROLAP به آن چه SQL قادر به انجام آن است محدود میگردد.
تفاوت ROALP و MOLAP : تفاوت اصلی این دو در معماری آنها است. محصولات MOLAP دادههای مورد نیاز را در یک حافظه نهان (cache) مخصوص میگذارد. ولی ROLAP تحلیلهای خود را بدون استفاده از یک حافظه میانی انجام میدهد، بدون آن که از یک مرحله میانی برای گذاشتن دادهها در یک سرور خاص استفاده کند.
با توجه به کند بودن ROLAP در مقایسه باMOLAP ، باید توجه داشت که کاربرد این روش بیشتر در پایگاه دادههای بسیار بزرگی است که گاهگاهی پرس و جویی بر روی آنها شکل میگیرد، مثل دادههای تاریخی و کمتر جدید سالهای گذشته.
نکته: اگر از Analysis Services که به وسیله Microsoft OLE DB Provider مهیا شده استفاده میکنید، تجمیعها نمیتوانند برای تقسیمبندی از روش ROLAP استفاده نمایند.
HOLAP : با توجه به نیاز رو به رشدی که برای کارکردن با دادههای بلادرنگ (real time) در بخشهای مختلف در صنعت و تجارت احساس میشود، مدیران تجاری انتظار دارند بتوانند با دامنه وسیعی از اطلاعات که فوراً و بدون حتی لحظهای تأخیر در دسترس باشند، کار کنند. در حال حاضر شبکه اینترنت و سایر کاربردها یی که به دادههایی از منابع مختلف مراجعه دارند و نیاز به فعالیت با یک سیستم بلادرنگ هم دارند، همگی از سیستم HOLAP بهره میگیرند.
named set :
Named Set مجموعهای از memberهای بعد یا مجموعهای از عبارات است که برای استفاده مجدد ایجاد میشود.
Calculated member
Calculated Memberها memberهایی هستند که بر اساس دادهها نیستند بلکه بر اساس عبارات ارزیابی MDX هستند. آنها دقیقاَ به سبک سایر memberهای معمولی هستند. MDX یک مجموعه قوی از عملیاتی را تامین میکند که میتوانند برای ساختCalculated Memberها مورد استفاده قرار گیرند به طوری که به شما امکان داشتن انعطاف زیاد در کار کردن با دادههای چند بعدی را بدهد.
امیدوارم در این قسمت با مفاهیم نخستین OLAP آشنا شده باشید.
تلاش خواهم کرد در قسمت بعدی در خصوص نصب SQL Server Analysis Services و نصب پایگاه دادهی Adventure Work DW 2008 شرح کاملی را ارایه کنم.