امروزه استفاده از شیرپوینت به عنوان ابزار ایجاد کننده وب سایت به دلیل سرعت بالا در ایجاد و راهاندازی، بسیار گسترش پیدا کرده است و بسیاری از سازمانها از آن استفاده میکنند. بنابراین میتوان شیرپوینت را به عنوان منبع دادهها در نظر گرفت.
برای خواندن و بارگذاری دادههای شیرپوینت در SQL Server از طریق SSIS چندین روش وجود دارد که در این مقاله به یکی از بهترین و سادهترین آنها که استفاده از SharePoint Web services است، میپردازم.
متن بالا مقدمه ای از مقاله "نحوه خواندن داده ها از شیرپوینت و بارگذاری در SQL توسط SSIS" است که میتوانید با مراجعه به لینک زیر و پرداخت هزینه اندکی آن را دریافت نمایید.
http://spdor.ir/p/83/ssis-sharepoint
نمیتوان ETL و Data Warehouse را از یکدیگر جدا کرد. در واقع با انجام ETL، تحلیل و طراحی انجام گرفته برای Warehouse به ثمر میرسد. پیشتر در مقاله " مراحل و نحوه بارگذاری داده ها در انبار داده " به ETL پرداخته شده بود. در این مقاله به تشریح مراحل و ابزارهای ETL میپردازم.
Extract: منظور استخراج داده از یک یا چند منبع مختلف است. پس از آنکه تحلیل و طراحی مدل Warehouse به پایان رسید، نوبت به بارگذاری دادهها در آن میرسد. اما بارگذاری دادهها تابع قوانین خاصی هستند و باید به آنها توجه شود. ابتدا باید منابعی که قرار است اطلاعات آنها را در Warehouse داشته باشیم شناسایی کنیم و پس از آن دادهها را در یک محیط واسط قرار دهیم. این عملیات میتواند توسط یکی از ابزارهای ETL و یا Stored Procedureها، Functionها و کوئریها انجام گیرد. منظور از محیط واسط یک بانک اطلاعاتی است که میان انبار دادهها و منابع داده قرار گیرد. دلیل استفاده از محیط واسط این است که معمولا دادههای منبع نیاز به پالایش دارند که اولا این پالایش نباید در منبع دادهها انجام گیرد و دوما اطلاعاتی که در Warehouse بارگذاری میشوند باید به صورت پالایش شده باشد. باید در زمان استخراج، دادهها را از منابع مختلف جمع آوری و در یک محیط واسط قرار دهیم.
Transform: منظور پالایش دادههای استخراج شده است. پالایش دادهها بسیار مهم است چرا که بعد از پالایش دادهها باید آنها را در انبار داده بارگذاری کرد. برای این کار از یک محیط واسط که کم و بیش شبیه انبار داده است استفاده میشود. پالایش دادهها شامل موارد زیر است.
· بررسی کیفیت دادهها (Verify data quality)
کیفیت دادهها به وسیله پرسشهایی از قبیل سوالات زیر مورد بررسی قرار میگیرند:
آیا دادهها کامل هستند (مواردی مورد نیازمان را پوشش میدهند)؟
دادهها صحیح هستند یا اشتباهاتی دارند؟ اگر اشتباه هستند علت اشتباهات چیست؟
آیا ارزشهای گم شده در داده وجود دارد؟ اگر اینگونه است آنها چگونه نمایش
داده میشود؟ عموماً در کجا اتفاق افتاده است؟
· پاکسازی دادهها (Clean data)
بالا بردن کیفیت دادهها نیازمند انتخاب تکنیک آنالیز میباشد. این انتخاب شامل پاک کردن زیر مجموعهای از دادههای نامناسب و درج پیشفرضهای مناسب میباشد.
· شکل دادن دادهها (Construct data)
این قسمت شامل عملیات ویژهای مانند تولید خصوصیتهای مشتق شده، تولید رکوردهای جدید و کامل یا مقادیر تبدیل شده از خصوصیات موجود میباشد.
· ادغام دادهها (Integrate data)
روشهایی وجود دارد که به وسیله آن اطلاعات از چند جدول ترکیب شده و رکوردهای جدید یا مقادیری جدیدی ایجاد میشود.
· قالب بندی دادهها (Format data)
منظور از قالب بندی دادهها، تغییر و تبدیل قواعد اولیه داده مورد نیاز ابزار مدل سازی می باشد.
Load: آخرین کاری که در ETL انجام میگیرد بارگذاری دادههای استخراج و پالایش شده از منابع مختلف در انبار دادهها است. معمولا در زمان بارگذاری در انبار داده تغییرات خاصی روی دادهها انجام نمیگیرد و آنها بدون هیچ تغییری از محیط واسط در انبار دادهها بارگذاری میشوند.
یکی از بهترین و قویترین ابزارها برای عملیات ETL، ابزار SSIS است که استفاده از آن سرعت و دقت در عملیات را بالا میبرد.
برای تبدیل تاریخ میلادی به تاریخ شمسی در packageهای SSIS میتوان از زبان سی شارپ استفاده کرد . بدین طریق میتوان در طی عملیات ETL و هنگام transform کردن دادهها ، عملیات تبدیل از میلادی به شمسی را انجام داد . عملیات تبدیل داده در این مثال به کمک Script Component انجام میشود.
گاهی اوقات ممکن است نیاز داشته باشیم در یک عدد، آخرین رقم (ارقام) غیر صفر را بدست بیاوریم. برای مثال دو عدد 185005035 و 56056502 را در نظر بگیرید، با اجرای کوئری زیر نتیجه عدد اول برابر 35 و نتیجه عدد دوم 2 میباشد.
declare @t table (num int) insert into @t select 185005035 union all select 56056502 select num, right(num,case when string_len=0 then total_len else string_len-1 end) as new_num from ( select num,len(num) as total_len, patindex('%[0]%',cast(reverse(num) as varchar(100))) as string_len from @t ) as t |
برای پیاده سازی مدلهای داده کاوی در SSAS از دو نوع دادهای استفاده میشود. یک نوع فیزیکی که در ساختار دادهکاوی کاربرد دارد و دیگری نوع منطقی است که برای ستونهای مورد استفاده در مدل بکار میرود. به زبان سادهتر در زمان ایجاد یک مدل دادهکاوی برای ستونهای انتخاب شده از جداول دو نوع دادهای Data Type و Content Type خواسته میشود که اولی به عنوان نوع فیزیکی و دومی به عنوان نوع منطقی برای SSAS شناخته میشود.
در ادامه به شرح هر یک از آنها خواهم پرداخت اما قبل از آن به عبارات و تعارف زیر توجه کنید.
Data Type: از آن به عنوان نوع دادهای نام برده میشود که نشان دهنده نوع رکوردهای یک ستون خاص در جدول است.
Content Type: از آن به عنوان نوع محتوایی نام برده میشود که بیانگر شرح حالت و نوع منطقی رکوردهای ستون است.
Column: ستونهای هر جدول است.
Row: به سطرهای هر جدول گفته میشود.
Case Table: منظور از آن جدول اصلی و پایه است.
Nested Table: منظور از آن جدول کمکی یا تودرتو است.
Input: به ستونهای ورودی انتخاب شده برای مدل گفته میشود.
Predictable: به ستونهایی که باید پیش بینی بر اساس آنها انجام شود گفته میشود. از آنها به عنوان ستونهای قابل پیشبینی نیز یاد میشود.
در زمان ساخت مدل، نوع دادهای هر ستون در قسمت Data Type مشخص میشود که این کار باعث میشود تا الگوریتم اطلاعاتی از دادههای هر ستون بدست آورد و در پردازش آنها بکار گیرد. در دادهکاوی هر نوع دادهای یک یا چند نوع محتوایی را پشتیبانی میکند. Content Type رفتار محتوای ستونها را به SSAS توصیف میکند. برای مثال اگر دادههای یک ستون در وقفههای زمانی خاصی مانند روزهای هفته تکرار شوند میتوان نوع محتوایی مربوط به آن ستون را برابر با Cyclical قرار داد.
برخی از الگوریتمهای دادهکاوی برای اینکه به خوبی کار کنند حساسیت زیادی به مشخص بودن این انواع دارند مانند الگوریتم بیز که نمیتواند از نوع محتوایی Continus برای مقادیر ورودی استفاده کند.
Data Type
هنگام ساخت مدل دادهکاوی در SSAS باید نوع دادهای هر ستون مشخص شود. در واقع نوع دادهای مشخص کنندهی متنی یا عددی بودن دادههای موجود در ستون است. موتور دادهکاوی از این اطلاعات برای مشخص کردن نحوه پردازش استفاده میکند.
هر نوع دادهای یک یا چند نوع محتوایی را پشتیبانی میکند. برای مثال اگر دادههای موجود در یک ستون عدد باشند میتوانید در قسمت Data Type آن نوع Numeric یا Text را انتخاب کنید. اگر نوع Numeric را انتخاب کنید در آن صورت برای Content Type نوعهای Continuous و Discretize قابل انتخاب هستند.
جدول زیر نوعهای دادهای و محتوایی قابل پشتیبانی را نشان میدهد.
نوع محتوایی (Content Types) نوع دادهای (Data
Type) Cyclical,
Discrete, Discretized, Key Sequence,Ordered, Sequence Text Continuous,
Cyclical, Discrete, Discretized, Key, Key Sequence, Key Time, Ordered, Sequence Long Cyclical, Discrete, Ordered Boolean Continuous, Cyclical, Discrete, Discretized, Key, Key Sequence, Key
Time, Ordered, Sequence Double Continuous, Cyclical, Discrete, Discretized, Key, Key Sequence, Key
Time, Ordered Date
Content Type
همانطور که پیشتر گفته شد نوع محتوایی برای SSAS به عنوان یک نوع منطقی شناخته میشود که بیانگر رفتار محتوای ستونها است. در ادامه به شرح هر یک از انواع Content Type میپردازم.
Discrete: این نوع نشان دهنده این است که ستون مورد نظر شامل تعداد محدودی از مقادیر است. برای مثال ستون جنسیت را در نظر بگیرید، مقادیر این ستون یا مرد است یا زن، به ستونهایی که این نوع مقادیر را در خود دارند Discrete گفته میشود. این نوع مقادیر نظم و ترتیب خاصی ندارند و نمیتوانند حاکی از مسئلهای باشند و با اینکه ممکن است گاهی اوقات عددی هم باشند، نمیتوانند ما را به مقصود خاصی برسانند. مثل شماره تلفن که عدد است اما کاربردی در محاسبات ندارند.
Continuous: این نوع بیانگر دادههای عددی نامحدود است که در یک مقیاس خاصی میان مقادیر وجود دارد. همانطور که در مورد نوع Discreteمتوجه شدید، این نوع محدود و قابل شمارش است اما مقادیر Continuous مقادیر عددی در رنج بزرگ و نامحدود میباشند. یک ستون با رکوردهایی از درجه حرارت مثال مناسبی برای این نوع است.
Discretized: این نوع بیانگر فرایند قرار دادن یک مجموعه از تعداد محدودی از مقادیر Continuous در یک گروه است. به عبارت دیگر نوع discretized گروهی از دادههای مشتق شده از ستون Continuous را شامل میشود. میتوان دادهها را به صورت دستی discretized کرد.
Key: همانطور که از نام این نوع مشخص است، به معنای یونیک بودن رکوردها در هر سطر است. معمولا در جداول اصلی (Case Tables) کلید به صورت عددی یا متنی مشخص میشود. انتخاب نوع Key برای ستون به معنای عدم آنالیز برروی آن ستون است و فقط جهت پیگیری رکوردها استفاده میشود.
جداول تودرتو (Nested Tables) نیز ستون کلید دارند اما معنای Key در این جداول کمی متفاوت با قبلی است. در جداول تودرتو زمانی یک ستون را به عنوان Key معرفی میکنیم که قصد داشته باشیم تا از خصوصیات آن ستون برای آنالیز استفاده کنیم. با این حال مقادیر ستون این جدول باید جدول اصلی یونیک باشد. برای مثال اگر قصد آنالیز محصولات خریداری شدهی مشتریان را دارید، باید در قسمت Content Type مربوط به ستون CustomerID در جدول اصلی نوع Key را انتخاب کنید و همین کار را برای ستون PurchasedProducts در جدول تودرتو انجام دهید.
key sequence: از این نوع فقط در الگوریتم خوشه بندی زنجیرهای استفاده میشود و بیانگر و توصیف کنندهی رویدادهای پیوسته و زنجیرهای در ستون است.
key time: از این نوع فقط در الگوریتم سری زمانی استفاده میشود و به معنای این است که مقادیر این ستون در واحد زمان نمایش داده میشوند.
Cyclical: رکوردهای موجود در این نوع بیانگر وجود یک مجموعهی گردشی است برای مثال روزهای هفته یک مجموعه گردشی است زیرا هفت روز هفته مرتبا تکرار میشود. ستونهای cyclical را با نوعهای ordered discrete نیز مشخص میکنند.
Ordered: این نوع معمولا مشخص کنندهی ستونهایی است که مقادیر آنها به صورت زنجیرهای است.