در این پست قصد دارم تا نگاهی اجمالی به موضوع Reporting، تعاریف، کاربردها، ابزار و ابعادی که متاسفانه کمتر مورد توجه قرار گرفته داشته باشم. فرآیند استخراج و عرضه داده ها و یا دانش را به اختصار Reporting میگوییم. به نظرم بد نیست تا نیم نگاهی به تعریف و تشریح واژه های “داده”، “دانش”، “استخراج” و “عرضه” بیاندازیم و بعد از اینکه به تعاریف و ادبیات مشابه به یکدیگر نزدیک شدیم، به ادامه بحث بپردازیم.
آنچه که مورد استخراج و عرضه قرار می گیرد، یا “داده” است و یا “دانش” یا ترکیبی از این دو. عبارت “داده” را به مجموعه اطلاعاتی اطلاق میکنیم که به همان صورتی که به سیستم منتقل می شود، به همان شکل نیز دریافت می شود، مثال: اطلاعات دانشجویان، واحدهای اخذ شده، نمرات و اساتید را به سیستم منتقل می کنیم، این ها اطلاعات ثبتی و مستقل هستند که حاوی هیچ پیام روشنی برای نتیجه گیری موضوع خاصی نیستند، به پرسش های زیر دقت کنید: [more]
- فهرست دانشجویان ورودی سال 70
- نمرات دانشجوی با شماره دانشجویی xxxxxxxxx
- فهرست دانشجویانی که در ترم اول سال تحصیلی 91-92 با استاد xxx درس xxx را اخذ کرده اند
- …
دامنه ی پردازش پرسش های فوق هرگز فراتر از اطلاعات ثبت شده نیست، و تنها با فیلتر کردن بخشی از اطلاعات و یا Join کردن جداول نتایچ به دست خواهند آمد. منظور ما از “داده” چنین اطلاعاتی می باشد. اطلاعاتی که ماحصل امکانات OLTP دیتابیس هاست. به بیان ساده، OLTP به عملکرد دستورات Insert/Update/Delete/Select گفته می شود، Select ها هم قادر به ارائه اطلاعاتی فراتر از داده نیستند.
با در نظر گرفتن مثال فوق، پرسش های زیر را بررسی می کنیم:
- تاثیر ناشی از اخذ همزمان کدوم دروس منجر به کسب نتایج بهتر دانشجویان در یک ترم می شود؟
- کدام اساتید در تدریس دروس پایه ی مهندسی، در پیشرفت و کسب نتیجه بهتر دانشجویان در سطوح بالاتر، موفق تر بوده اند؟
- کدام اساتید در ارائه کدام دروس، با توجه به وضعیت تحصیلی ترم های بعدی دانشجویان و فعالیت های علمی بعدی آنان، موفق تر بوده اند؟
- …
اگر به این پرسش ها و چگونگی رسیدن به پاسخ آن ها دقت کنیم، درخواهیم یافت که با Join و فیلتر و شرط قابل پاسخ دهی نیستند، بلکه با آنالیز و بررسی “داده” های قبلی خواهیم توانست به نتایجی برسیم که در ورای داده ها نهفته است، به عبارت ساده تر، پاسخ این پرسش ها، “دانش”ی است که با آنالیز و بررسی داده ها، کسب شده است. این آنالیز ها در حوزه عملکرد OLAP دیتابیس ها است، که در پستی مجزا به تعریف آن پرداخته ام.
خب،”داده” یا “دانش” مورد نظر را متوجه شدیم، حال با دو اصطلاح “استخراج” و “عرضه” بیشتر آشنا خواهیم شد. استخراج به واکشی داده ها و یا دانش از دیتابیس اطلاق می شود، در نتیجه سرعت اجرای گزارش (Report) وابستگی مستقیم به سرعت واکشی اطلاعات از دیتابیس دارد، نکته ای که متاسفانه کمتر به آن توجه میشود بحث کارایی دستورات و ساختار مرتبط با گزارش است. یک گزارش جدید، تنها ایجاد دستورات مرتبط با واکشی اطلاعات آن گزارش نیست، بلکه نگارش اصولی دستورات (کوئری) سهم بسزایی در سرعت و دقت گزارش دارد، خوشبختانه دیتابیس های امروزی، Oracle, SQL Server, … در نسخه های جدید خود قابلیت های کاراتری را برای واکشی اطلاعات ایجاد می کنند ولی متاسفانه اکثر برنامه نویس های ما، با SQL Server 2012 با همان دستوران SQL Server 2000 و با Oracle 11g با همان دستورات 9i برخورد می کنند. نکته بعدی در ساختار دیتابیس نهفته است، گاها برای یک گزارش جدید نیاز به ایحاد اصولی ایندکس و یا ایندکس های جدیدی است، که این موضوع هم با بی توجهی روبرو است.
پس از استخراج داده و یا دانش، نوبت به عَرضه ی نتایج است، کیفیت انجام این بخش، بسیار مهم است، چرا که همه ی مراحل قبلی و بعدی با هدف کمک به سازمان صورت می گیرد، در صورتیکه این نتایج به گونه ای عرضه شود که مدیر یا فرد مرتبط با سهولت هرچه بیشتر اطلاعات مورد نظر گزارش را دریابد. گاها نمایش اطلاعات بر روی نقشه و یا با کمک چارت، به مراتب خواناتر از جداول طولانی با اعداد و ارقام نزدیک به هم است.
در مباحث مربوط به MIS (Management Information System) نیز آموخته ایم که یکی از خصوصیات این سیستم ها این است که اطلاعات را در کمترین حجم، خواناترین صورت و به گونه ای که مدیر با بررسی کمترین حجم، در کمترین زمان قادر به اتخاذ بهترین تصمیم برای آینده ی سازمان خود باشد…
یکی از گلوگاه های این بخش “سلیقه” ی فرد تولیدکننده گزارشات است. شخصا هرگز تولید گزارشات را به افراد بیسلیقه نخواهم سپرد، بخش عمده سلیقه ذاتی است و بخش کوچکتری از آن را می توان به کسی آموخت. درنتیجه شاید بهترین کوئری نویس ما، گزارشات را به عالی ترین و کاراترین شکل ممکن است استخراج نماید ولی با عرضه ی بی سلیقه و نامناسب آن، سازمان را به سمت اشراف کامل بر وضعیت و اطلاعات رهنمون نسازد.
در بخش اول این مقاله به معرفی مفاهیم مرتبط با گزارش گیری پرداختم، در بخش بعدی به بررسی Microsoft Reporting Services و رقبای مطرح آن میپردازم و بخش سوم مقاله را به نکات، حقه های غلبه بر کاستی های آن و مواردی از این دست اختصاص می دهم…
پرسشهایی را که مطرح کردید بدون select تهیه میشوند؟ یا اینکه چون یک لایه روی آن آمده اینطور تصور میکنیم که نه select ایی است و نه join ایی.
منتظر پست های بعدی تون هستیم ممنون
سلام
این نوع پرسش ها، با استفاده از تکنیک های دیتاماینینگ، MDX Query ها به دست میاد که با Select های OLTP و ANSI SQL متفاوت است…
سلام
آیا برای جواب به سوالاتی چون تاثیر ناشی از اخذ همزمان کدوم دروس منجر به کسب نتایج بهتر دانشجویان در یک ترم می شود؟ خود برنامه نویس باید داده را تحلیل کند یا sql امکاناتی در اختیار قرار داده اگر این چنین است تا چه حد این امکانات را فراهم کرده؟ آیا نرم افزار هایی شبیه پیش بینی مثلا وضعیت بورس در آینده هم شبیه همین مسائل است؟
ممنون از مطالب جالبتون.
سلام
SQL Server امکاناتی را در اختیار برنامه نویس میگذارد تا بتواند چنین اطلاعاتی را با استفاده از دیتاماینینگ (داده کاوی) واکشی کند. نرم افزارهای دیگه ای مثل SPSS Clementine که پس از خرید IBM به SPSS Data Modeler تغییر نام داد هم قادر به چنین شناسایی هایی هستند…
salam
az matalebetoon behtarin estefade ha ro mibaram. montazere bakhshhaye badi maghalatoon hatsam.
سلام،
مطلب جالبی بود. کاش وقت کافی داشتی تا OLAP رو به صورت قدم به قدم آموزش بدی.
مرسی از مطالب خوبتون واقعا ممنون .امیدوارم همتتون پایدار باشه و باز هم به گذاشتن مطالب خوب ادامه بدین