فرض کنید بنا به نیاز سازمان باید اطلاعات مربوط به دورههای آموزشی و تعداد ساعات سپری شده هر یک از پرسنل در کلاسهای آمورشی را در داشبورد نمایش دهید. میدانیم که برای اینکار ابتدا باید جداول Fact و Dimension مربوطه را در انبار داده طراحی و سپس مدل OLAP و Cube مورد نظر را ایجاد کنیم. به نظر میرسد برای اینکار مشکل خاصی وجود نداشته باشد و به سادگی این کار انجام گیرد اما با کمی دقت متوجه میشوید که برای ایجاد معیار (Measure) با فرمت زمان (DateTime) با مشکل مواجه هستید چراکه MSBI به شما اجازه نمیدهد تا از نوع DateTime به عنوان Measure استفاده کنید.
برای حل این مشکل مراحل زیر را انجام دهید.
1- ابتدا به جدول Fact خود فیلدی با نوع Float اضاقه نمایید.
2- از کوئری زیر برای تبدیل اطلاعات فیلد CourseTime_TimeFormat به فرمت Float استفاده کنید.
update [TimeMeasure].[dbo].[FactPersonnelCourse]
set [CourseTime]=convert(float,CourseTime_TimeFormat)
3- به SQL Server Business Intelligence Development Studio رفته و یک پروژهی SSAS جدید با عنوان PersonnelCourse ایجاد کنید.
4- همانطور که در شکل زیر مشاهده میکنید، در هنگام انتخاب Measure فیلد CourseTime_TimeFormat نمایش داده نمیشود زیرا نوع آن بعنوان معیار قابل قبول نمیباشد و فقط فیلد CourseTime که نوع اعشاری دارد نمایش داده میشود.
5- پس از اتمام مراحل ساخت Cube پروژه را پردازش کنید و به صفحهی Browser بروید.
6- معیارها و ابعاد مورد نظر خود را به محل نمایش انتقال دهید. همانطور که در شکل زیر مشاهده میکنید اطلاعات به صورت اعشاری و همانطور که در Fact ذخیره شده است نمایش داده میشود.
7- برای اینکه اطلاعات نمایش داده شده را به فرمت ساعت مشاهده کنید کافی است خصوصیت Format String معیار Course Time را به HH:MM تغییر دهید.
8- پروژه را مجدد پردازش کنید. همانطور که مشاهده میکنید اطلاعات به فرمت ساعت نمایش داده میشود.
با تغییر ابعاد گزارش دلخواه خود را مشاهده کنید.
الگوریتم سریهای زمانی (Time Series) یک الگوریتم پیش بینی بر جسته است. در واقع ترکیبی از رگرسیون اتوماتیک و تکنیکهای درخت تصمیم میباشد. این الگوریتم را ART (Auto Regression Tree) هم مینامند. به مثال زیر توجه کنید:
فرض کنید که مالک یک فروشگاه هستید و قصد دارید پیش بینی فروش چند هفته آینده را برای هر گروه از محصولات بدانید، تا بتوانید موجودی کالاهایتان را مدیریت نمایید. نمیخواهید موجودی بیشتری در انبار داشته باشید و همچنین کالاها را بیش از اندازه در انبار نگه دارید. از طرفی هم میدانید که در تعطیلات، فروش برخی از کالاها ممکن است افزایش یابد و میخواهید بدانید که چه زمانی و به چه مقدار از هر کدام از این محصولات باید سفارش دهید و در انبار داشته باشید.
الگوریتم سریهای زمانی ماکروسافت به منظور پاسخ به این نوع سوالات طراحی شده است.
معرفی الگوریتم سریهای زمانی
سریهای زمانی شامل یک سری اطلاعات از افزایشهای متوالی در طول زمان یا سایر شاخص های متوالی که در یک دوره زمانی جمع آوری شدهاند؛ می باشد. دنیای پیرامون ما ثابت نیست و متغیرهای بسیاری با تغییر زمان ارزش خود را تغییر میدهند و در نهایت ترتیب ارزشهای یک متغیر در طول زمان یک سری زمانی را تشکیل می دهد.
به عنوان مثال قیمت نهایی سهام ماکروسافت که به صورت روزانه می باشد در یک سری زمانی نمایش داده شده است.
فروش ماهانه شرکت پیسی یک سری زمانی را تشکیل میدهد و همچنین در آمد هر فصل یک شرکت نیز یک سری زمانی است. در سریهای زمانی بیشتر اوقات ارزش و مقدار متعلق به یک زمان، به ارزش در زمان قبل بستگی دارد. .به عنوان مثال قیمت نهایی سهام میکروسافت در 10 می(May) شدیدا به قیمت تمام شده آن در 8 و 9 می بستگی دارد.
مقادیر مشاهده شده در سریهای زمانی ممکن است پیوسته و یا گسسته باشند. ما تنها سریهای زمانیای را که مقادیر آنها پیوسته میباشند را در نظر می گیریم.
ارزش سهام، میزان فروش یک فروشگاه و درآمد شرکت به شکل پیوسته است و یک سری زمانی از پیش بینی وضعیت آب و هوا، مشاهداتی از مقادیر گسستهی، آفتابی، ابری، بادی یا بارانی است.
همانطور که پیشتر گفته شد هدف اصلی از جمع آوری دادههای سری زمانی پیش بینی و یا پیشگویی درباره مقادیر آینده است. به مثالهای زیر توجه کنید:
در یک کارخانه صنعتی به پیش بینی درخواستهای مشتریان در ماههای آینده جهت برنامه ریزی تولید نیاز است.
یک وب سایت باید رشد و ترافیک کاربران را به منظور استفاده از یک سخت افزار مناسب تخمین بزند و همچنین یک فروشگاه خرده فروشی باید فروش محصولات را به منظور بهینه سازی موجودی انبار پیش بینی نماید.
پیشتر مطالبی در مورد روشهای مقایسه رکوردهای دو جدول نوشته بودم. یکی از این روشها استفاده از tablediff است که مطالب مربوط به آن را میتوانید اینجا مشاهده کنید، اما برای انجام آن دو مسئله وجود دارد. اول اینکه پس از ایجاد فایل تغییرات، باید آن فایل را باز کرده و اجرا کنیم و دوم گرفتن خطا توسط SQL در زمان ایجاد مجدد است، چراکه این فایل قبلا ایجاد شده است. البته از چند طریق میتوان این مشکلات را حل کرد.
در این پست قصد دارم به حل این مسئله از طریق ایجاد یک پکیج در SSIS بپردازم.
1- در SSIS یک Package مطابق شکل زیر ایجاد کنید.
2- قطعه کد زیر را در Execute TableDiff قرار دهید.
exec master..xp_cmdshell'"C:\Program Files\Microsoft SQL Server\100\COM\tablediff.exe" -sourceserver (local) -sourcedatabase Shop -sourcetable A -destinationserver (local) -destinationdatabase Shop -destinationtable B -f C:\Result.sql'
برای اطلاع از سایر پارامترها و ویژگی های Tablediff به اینجا مراجعه کنید.
همانطور که در مطالب مربوط به tablediff گفتم، با اجرای این کوئری رکوردهای دو جدول با هم مقایسه و نتیجهی آن در فایل Result.sql ذخیره میشود.
3- توسط Execute SQL file فایل SQL ایجاد شده در مرحله قبل را اجرا کنید.
4- برای اینکه در زمان اجرای مجدد پکیج و ایجاد فایل به مشکل بر نخوریم، با استفاده از یک دستور ساده فایل ایجاد شده در مرحله قبل را حذف میکنیم.
xp_cmdshell 'del c:\Result.sql'
کار تمام است! حال هر زمان که اطلاعات موجود در جدول اول تغییر کرد میتوانید پکیج را اجرا کنید و جدول دوم را همانند جدول اول داشته باشید.
جهت بررسی این موضوع ابتدا به معرفی اجمالی از کلیک ویو میپردازم.
کلیک ویو یکی از بهترین و انعطاف پذیرترین پلتفرم های هوش تجاری است. بیشتر از 24000 سازمان کوچک و بزرگ در سراسر جهان برای تحلیل گرافیکی داده هایشان از کلیک ویو استفاده میکنند.
این ابزار با ترکیب نمودن قابلیت هایی همچون ارائه پویا، تجزیه و تحلیل و به کارگیری آنی داده ها به کاربران توانایی اخذ تصمیمات تجاری مبتکرانه را میدهد و به بهترین نحو داده ها را به دانش تبدیل میکند. این نرم افزار با ارائه یک پلتفرم تجاری هوشمند و قدرتمند که به سادگی قابل استفاده میباشد، دید عمیق تر و شفاف تری از داده ها را به کاربران میدهد تا آنها در تصمیمات تجاری خود در تمام سطوح پیشگام باشند. کلیک ویو با ارائه تحلیلی دقیق و بدون محدودیت در دادهها، کاربران خود را در تصمیم گیری کمک میکند. ابزار کلیک ویو یک سطح کاملا جدیدی از تجزیه و تحلیل، بینش و ارزش دادههای موجود را با رابط کاربری بسیار شفاف، ساده و صریح ارائه میدهد.
بله! کلیک ویو یک داشبورد قدرتمند است که به وسیله آن میتوان دادهها را به صورت ویژوال کنار هم قرار داده و گزارشات متعدد با قابلیتهای بسیار بالا ایجاد نمود. اما آیا کلیک ویو به تنهایی قادر است که داشبوردهای گوناگون، زیبا و کاربردی ایجاد کند؟ قبل از پاسخ به این سوال به بررسی اجمالی پیش نیازها در یک پروژهی هوشمندی کسب و کار میپردازم.
سه بخش اصلی در هوشمندی کسب و کار وجود دارد که نبودن هر یک به منزله شکست پروژه است.
منبع داده: هر سازمانی بنا به نیاز خود از سیستمهایی استفاده میکند. به عنوان مثال برای کارهای مالی، حقوق و دستمزد، فروش، منابع انسانی و ... سیستمهای نرم افزای فراهم میکند. این سیستمها میتوانند در قالب یک پکیج آماده باشند و یا یک تیم برنامه نویس بر اساس نیاز سازمان آن را نوشته باشد. به مرور زمان بر اساس نیاز، این نوع سیستمها گسترش پیدا میکنند و در نتیجه با حجم زیادی از دادهها روبرو میشویم.
با بالا رفتن حجم دادهها و زیاد شدن منابع داده، گزارش گیری بسیار سخت و گاهی ناممکن میشود در حالی که با حجم بالایی از دادهها روبرو هستیم، هیچ استفادهی مفیدی از آنها نمیتوانیم بکنیم.
در اینجا است که BI میتواند به کمک سازمان رفته و نیازهای آن را مرتفع کند.
انبار داده: در منابع دادهها اطلاعات بسیار زیادی وجود دارد که ممکن است تمام این اطلاعات مفید نباشد و از طرفی ممکن است نیاز به ترکیب دادهها از چند منبع با یکدیگر باشد. در اینجا انبار دادهها به کمک ما میآید و بوسیله آن میتوانیم اطلاعات مفید را از یک یا چند منبع مختلف کنار هم گردآوری کنیم. البته کار به این سادگی هم نیست! این کار نیاز به تحلیل و طراحی دارد که بنا به نیاز سازمان و چندین آیتم دیگر انجام میگیرد.
داشبورد: این همان مرحلهای است که میتوانید نتیجه کار را مشاهده کنید. ایجاد گزارشات و شاخصها با استفاده از نمودار و گیج همراه با امکاناتی همچون حرکت در سطوح مختلف گزارش و Drill Down در یک محیط کاملا انعطاف پذیر. این داشبوردها را میتوان توسط کلیک ویو و یا هر ابزار دیگهای که این قابلیت را داشته باشد ایجاد نمود.
نبود هر یک از این موارد به شکست پروژه خواهد انجامید.
اما بر میگردم به سوالی که کمی پیشتر پرسیدم! آیا کلیک ویو به تنهایی قادر است که داشبوردهای گوناگون، زیبا و کاربردی ایجاد کند؟
با وجود قدرت بسیار بالای کلیک ویو در برقراری ارتباط با منابع دادهای مختلف و یکپارچه کردن دادهها، پاسخ خیر است زیرا کلیک ویو یک ابزار است که باید از آن در مرحله Presentation استفاده کرد.
به طور کلی کلیک ویو ابزاری است بسیار قوی جهت ایجاد داشبوردهای مدیریتی که بواسطه آن مدیران بتوانند برای سازمان خود تصمیم گیری کنند.
OLAP مجموعهای از مکعبها (Cubes) است. داخل این مکعبها دادههایی قرار دارند که از پیش انتخاب شدهاند. ارتباطات بین ابعاد از قبل تعریف شده و همه ابعاد (نتایج) از قبل محاسبه و پیشبینی شده است. هنگامی که یک مکعب ایجاد میشود، یک واسط کاربر نهایی که میتواند یک داشبورد باشد برای یک فرد واقعی پیادهسازی میشود که کاربر نهایی(مدیران و تصمیم گیرندگان سازمان) بتواند با جوابهای داخل مکعب تعامل داشته باشد.
اما فرض کنید در یک مکعب برای تحلیل فروش در یک سازمان مقدار و مبلغ فروش را بر اساس ابعادِ مناطق فروش، فروشنده (بازاریاب)، مشتری و ماه یا سال داشته باشیم. زمانی که این مکعب فرضی ساخته میشود، نرمافزار مبتنی بر OLAP کلیه ترکیبات عناصر دادهها را محاسبه و ذخیره میکند، کاربر نهایی به این دادهها از طریق داشبوردها و یا یک سری فرمها مثلا Pivot Table ها یا انواع دیگر فرمها دسترسی خواهد داشت.
در این مثال فرضی کاربر نهایی محدود به تحلیل در محدوده ابعاد از قبل تعریف شده مثل مناطق، نمایندگیها، مشتریها و ماه است. اگر کاربر بخواهد درباره فروش هفتگی، روزهای هفته یا محصولات فروخته شده (و یا صدها ترکیب دیگر از دادهها) اطلاعاتی کسب کند دیگر شانسی برای بدست آوردن آن ندارد، باید صبر کند که مکعب دیگری از اطلاعات مورد نیاز او ایجاد شود که این یعنی محدودسازی و کاهش بهرهوری و اثربخشی برای تصمیمگیران آن سازمان. به عبارت دیگر کاربر نهایی باید نیازهای خود را از پیش شناخته و برای این نیازها Cubeها، جداول حقایق (Fact) و ابعاد (Dimension) مورد نیاز را پیاده سازی کند تا با کنار هم قرار دادن گزارشات مختلف تا حدودی به دانش استخراج شده و مورد نیاز خود دست پیدا کند.OLAP برخی از قابلیتهای تحلیل را فراهم میکند، اما تقریبا میتوان گفت در کشورهای پیشرفته یک رویکرد قدیمی است و متاسفانه در کشور ما همچنان ناشناخته! یا کمتر شناخته شده است. در حال حاضر انواع مختلف OLAPوجود دارد، مثل MultiDimensiona OLAP (MOLAP) که به آن MMD نیز گفته میشود و Relational OLAP (ROLAP) یاRDBMS و سیستم های OLAP از نوع
HOLAP.
در پست جداگانه به تشریح انواع OLAP و مقایسه آنها میپردازم.