0% found this document useful (0 votes)
45 views24 pages

DW ...

Uploaded by

mmd yosefi
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
45 views24 pages

DW ...

Uploaded by

mmd yosefi
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 24

‫به نام خدا‬

‫خدایا کمکم کن‬

‫تاریخ ‪01/09/18 :‬‬


‫فهرست‬

‫جلسه اول‬

‫جلسه دوم‬

‫جلسه سوم‬

‫جلسه چهارم‬

‫جلسه ‪5‬‬
‫جلسه ‪2‬‬

‫بیل اینمون‬
‫‪Integrated …. Time variant … non volatile … subject orient‬‬

‫فرم نرمالسازی‬
‫عالوه افزونگی ‪ ،‬مشکل ‪ update insert delete‬را حل میکند‪.‬‬
‫اگرنرمال نکنیم مثال اگر چیزی رو دیل کنیم یهو کل اطالعات اون رکورد پریده یا اپدیت‬
‫کنیم باید کل حداول بگردیم پیداش کنیم اپدیت کنیم درحالی ک با نرمالسازی براحتی انجام‬
‫میدهیم‪.‬‬

‫‪va junction table…1:17‬‬


‫ایدی گذاشتن در سطح اپ راحته ولی در سلکت دیتابیس ؟‬
‫بسته ب شرایط بیزینس داره ‪ ...‬سلکت و کوئری ها زیاد جوینی ولی اگراینزرت= اپدیت‬
‫ایدی روش بهتریه برای پرایمری کی‬
‫درصد تغییرات زیاد سیستم های ‪ oltp‬یا ترنس اکشنال وسیستم های گزارشی بیشتر‬
‫ریپورتینگ‬

‫در ‪ DW‬دو دسته حدول داریم ‪ ...‬دایمنشن و فکت‬


‫فکت جدول رویدادها و تراکنس و بطورکلی عملیاتی‬
‫دایمنشن جدول تعریف خوده انتیتی ها ‪ +‬ویژگی هایشان (اون ‪ 4‬دسته)‬
‫‪ Dice‬تفکیک ‪...‬‬
‫در جدول دایمنشن چ ستونایی داریم؟‬
‫‪Suto key .. bus key .. att key .. meta data … dime key‬‬
‫در فکت چ ستونایی داریم؟‬
‫‪Pr key … dim key … meta data … measure‬‬
‫بیزینس کی ستون حوینی‬
‫متادیتا ‪ :‬ستونایی ک تاریخی ان‬
‫دایمنشن کی ؟ ستونی ک ب وسیله اون فکت را ب جداول دیگر ‪ Dw‬جوین میزنیم‬
‫درواقع در فکت ‪ BK %99‬های جدول اصلی وجود دارد ک بوسیله ان ب جداول دایمنشن‬
‫رفته(جوین میزنیم)‬

‫‪..Full adetive….sum count‬‬


‫‪Semi additive … baya dba shive digwri mohasbe konimeshan‬‬
‫‪Non additive‬‬

‫الگوی ‪star‬‬
‫اگر جداول دایمنشن مستقیم و بی واسطه ب جدول فکت متصل شن بوسیله دایمنشن کی البته‬

‫الگوی ‪snow flake‬‬


‫اگر نشد همه جداول مستقیم وصل شن ب فکت و حدولی ب وسیله حدول دیگر ب فکت‬
‫برسد در این الگو هستیم‬

‫دیقه ‪ 39‬دیاگرام‬
‫باید در ساخت ‪ dw‬حواسمان باشد که ممکن است برای بعضی از دسته ها مقداری هنو‬
‫نباشد و وقتی کوئری میزنیم یا داشبورد میسازیم دیگر ان نال هارا از دست میدهیم لرا‬
‫همین درست باید طراحی کنیم و درواقع در این حالت نمیتوان همه را یک جا دریک جدول‬
‫اورد و در واقع الگویمان اسنو فلیک میشود‪.‬‬

‫همچنین باید حواسمان باشد جدولی باشد که جامع باشد! صرفا نیایم بهم بچسبانیم بریم چرا‬
‫ک اگر وقتی دشبوردی میسازیم وقتی فیلتر میکنیم ممکن است ان وقت همه ی جدولمان را‬
‫فیلتر نکند ک این مربوط ب ان است ک اطالعات بعضی از جداول فقط در اسالیسر است‬
‫ک همه را فیلتر نمیکند پس در این صورت باید جدولی بسازی همه ی اون اطالعات ان تا‬
‫جدول را در بر گیرد‪.‬‬
‫دوطرفه ببین‪...‬یک مشتری چند ادرس هر ادرس ب چند مشتری؟‬
‫جلسه ‪3‬‬

‫‪Time variant‬‬
‫جدول دیم دیت فقط و فقط به جداول فکت متصل هست(برای جلوگیری از لوپ)‬

‫‪Role playing dimension‬‬


‫جدولی که به چند نقش مختلف اشاره میکند ب کمک اتریبیوت هایش‬
‫این حدول رول با هر جدولی رول پلینگ نمیباشد باید دید وقتی با جدولی ارتباط دارند‬
‫میتواند نقش های مختلف برای ان جدول بازی کند‬
‫مانند دیم دیت که هم زمان ارسال را دارد هم سفارش هم سررسید‬
‫به این جویند یا جانک دایمنشن گویند؟؟‬

‫تاریخ دراکثر جداولمان بیاید بهتره تا هی جوین دهیم‬

‫مهم‬
‫باید حواسمان به ارتباط جدول فکت و دیم باشد ک چند به چند نباشد ‪ ...‬اگر چند به چند بود‬
‫باید جدول واسط درست کرد ک کلید طرفین را در ان اورده ‪ ...‬ک ب این فکت لس فکت‬
‫گوییم ‪ ...‬فکت لس فقط بین جدول دیم و فکت ک بدلیل رفع چن ب چن درست شده‬
‫ایدی ندهیم برای پرایمری کی‬
‫‪ ... Shared dim … conformed dim‬کانفورد در واقع متحدالشمل و درست ترش‬
‫ابتدا شیر را درست را میکردیم و سپس کانفورد‬
‫جدولی ک بین دو فکت میاید ک تاریخ است باید اتریبیوت های هرجدول را شامل شود‬
‫فقط بین جداول فکت مفهوم دارد‬

‫دیتامارت در واقع همان دپارتمان ها و بخش های مختلف سازمان است‬

‫‪ Bus matrix‬بسیار مهم‬


‫یکی از راه های رسیدن ‪ shared dim‬درست کردن این ماتریکس است‬
‫اینده نگری کنید!‬

‫ترس اشکنال فکت‬


‫جداولی فکتی به جداول دیم وصلند و چنتا دایم‪..‬کی دارند‬
‫‪Snapshot‬‬
‫ب نوعی همون جداول دیتابیسیه معموال هم دایمشن کی ندارند و ترتبی است‬
‫‪Cumulative fact‬‬
‫جداولی ک ریزدانه ترین سطح را نداریم دران (یا اهمیت ندارد یا نداریم واقعا یا فضای‬
‫ذخیره سازی نداریم)‬
‫‪...‬جلسه ‪...4‬‬

‫دیتا دیکشنری ‪:‬‬


‫توضیحات و دفترچه راهنمای دیتااپرینش اون بیزینس ک معموال طراح دیتابیس نوشته اس‬
‫‪ Detaedo‬برای سنددیتا یا دیتا دیکشنری‬
‫ب کمک این سند از اون دیتابیس سردراورده میفهمیم چی چیه کجاس‪=+...‬‬

‫دیتاپروفایلر چ چیزایی مورد توجه‬


‫تایپ دیتا ک مناسب باشد ‪ ...‬زیاد بود درستش کرده‬
‫میزان توزیع و تنوع دیتا‬
‫مینیمم و مکسیمم ولیو هر ستون‬
‫میزان و مقدار نال ‪ ....‬اگر نال ها نیاز نبود نبر‪ 30 =...‬تا ستون ‪ 10‬تا نال بدردنخور‬
‫دیتا پروفایل بابت چیه ؟ شناخت بیزینس کی ینیک و‪...‬انتخاب بیزینس کی‬
‫تولز اپشن تم‬

‫کانکشن راستی در سطح پروژه ‪ ...‬در پایین در سطح پکیج‬

‫‪Data profile‬‬
‫از پیش نیازهای ساخت انبارداده میباشد‬
‫برای هرجدولی ک نیاز داریم از ‪ OPD‬دی پی را تهیه کرده‬
‫در ‪ ssis‬در تب کنترل فلو باید ایجادش کرد‪.‬‬
‫ابتدا رو کلیک کرده بهش مسیر تولید داده ‪ ...‬سپس در کوییک پروفایل کانکشنش را باید‬
‫مشخص کرد ک ب کدام دیتابیس وصل شود ‪ =...‬حال جدولی ک میخواهیم ببینیم چی ب چیه‬
‫انتخاب کرد ‪ ...‬در همون جا کلید یونیک هم میدهد ک میتوان ازش حواس کامپوزیت کی ای‬
‫بدهد‬
‫اکزکیوت باال کل پکیج ‪ ...‬اگز خودش تسک فقط همون اجرا میشه‬
‫در ویو با دبل کلیک میبینیم گزارش را‬
‫دیستبریوشن ‪ ...‬توزیع دیتا مینیمم و مکس ‪ ،‬طول‬

‫‪Data flow task‬‬


‫اساسا برای ‪ E T l‬بکار میرود ‪ =...‬ینی استخراج دیتا از منابع مختلف و چکش کاری آن و‬
‫در نهایت ب مسیری جایی ریختنش انتقال دادنش برای لود کردن و کار کردن روی ان‬
‫برای کوئری گرفتن امار و تحلیل دراوردن‬
‫دیتافلو تسک میتوان چنتا انداخت ‪..‬‬
‫اگر در قایل ‪ csv ya text‬مقادیر تسکمون داخل دبل یا سینگل کوتیشن بودند ب اصطالح‬
‫تکست کوالیفایر گوییم داریم‬
‫سایت ‪Kaggle‬‬
‫اگر فایل تکسمون فارسی بود تیک ‪ Unicode‬را زده‬
‫اگر فایلمان تک یا دبل کوت داشت در قسمت کوالیفایر دبل یا تک کوت را گذاشته تا فایلمان‬
‫را درست بارگذاری کند(البته در ادونس میتوان فقط اونی ک دارد ترو کرد بقیه رو فالس‬
‫گذاشت)‬
‫اگر فایلمان چند سطر الکی یا اضافی داشت ک باید پاک میکردیم تا ب هدر برسیم میتوان‬
‫ان را مشخص کرد‬
‫اگر در فلت فایلمان با چند نوع جداکننده رو برو بودیم در ادونس میتوان تنظیم کرد ‪ ...‬این‬
‫گزینه در ‪ sql‬نی کصمیخ‬
‫حواست ب دیتاتایپ های فلت فایل باش حتما‬
‫حتما اخر ب کالم هم برو‬
‫‪Ole db dest‬‬
‫ب منظور ریختن دیتا در ‪ sql‬ب کار میرود ( البته چنتا کامپونت دیگر هست ک میگیم )‬
‫توجه ‪ =...‬ابتدا جریان ورودی بهش مشخص کرده سپس روش کلیک کن‬
‫تو کانکشن کجا بره کدوم دیتابیس بره مشخص کرده‬
‫سپس کدوم جدول ازون دیتابیس بیس بره مشخص کرده ‪ ...‬میتوان یا جدول دیگر نیو کرد‬

‫ترفند‬
‫کامپوننت ‪multi task‬‬
‫ابتدا قبل وصل کردن مبدا به مقصد این را استفاده کرده ببینیم چی داریم میاریم‬
‫ابتدای مسیر وصلش= کرده و روی مسیرش زده و فعال کرده‬
‫‪ N‬تا ازین میتوان گذاشت مثال هر کاری کردیم چک کنیم کصشر درست نکرده باشیم‬
‫هدف ‪ :‬پیش نمایشی از دیتا‬

‫توجه مهم کانکشن های اضافی را حتما پاک کن‬

‫اگر ‪ data flow‬ها بهم وصل بودند مرحله ای اجرا میشدند ولی اگر از هم جدا بودند وصل‬
‫نبوند موازی اجرا میشدند‬
‫ادامه ساخت ‪DW‬‬

‫نکته ‪ ...‬جدول فکت نباید ب جزئیات و‪..‬تقسیم شود ‪ ...‬باید یدونه باشد ‪ ...‬اگر چنتا بود یکی‬
‫کرده با جوین‬

‫حال ب سراغ جداول دیم رفته‬


‫نکته ‪ :‬بعضی جداول دیم را از جدول فکت(درواقع از ‪ )DBO‬باید بفهمیم‬
‫مانند ‪ date‬ها و ادرس ها‬

‫کلید های دیت را اگر ‪ int‬بگیریم خیلی بهتر‬


‫‪...‬جلسه ‪...5‬‬

‫نکته‬
‫در جدول فکت دیتاورهوس ستون تفسیر شدنی به هیچ وجه نباید داشته باشیم‬
‫ینی مثال در ستونی ‪ 1‬ینی این اینترنتیه ‪ 0‬ینی این حضوری ‪ =...‬اینجوری نباید باشد‬
‫پس اینو باید به دو جدول فکت در دیتاورهوس تبدیل کرده‬

‫جوین در ‪ssis‬‬

‫اون ستونایی ک نیاز نداریم نیاریم بهتره‬


‫توجه‬
‫برای انتخاب ستونا در ‪ old dest‬از ‪ sql command‬انتخاب کرده نه بخش کالمن ک باگ‬
‫داره! دیقه ‪ 15‬توجه‬
‫اسم ستونارو در جدول جدید میتوان عوض کرد‬
‫از کامپوننت ‪ sort‬استفاده نمیکنیم بشدت کند میکند تسک را‬
‫از خوده جوین سرت میکنیم ‪ =...‬پراپرتیری ایز سرت را ان کرده ‪ =...‬البته خودمان حتما باید‬
‫سرت کنیم اینو صرفا ان بزنی اوکی نیس باز‬
‫اگر خواستیم جدولی به چند جدول تبدیل شود طی شرط هایی از ‪conitional split‬‬
‫حال ب ازای اون تعداد حدولی ک میخواهیم انشعاب یابد ا ال دست میزاریم‬
‫در مرحله بعدی باید اون ا ال دست هارا کانفیگ کنیم و حواسمان باشد ستون هایی ک‬
‫نمیخواهیم حذف کنیم (نیو کن)‬
‫تیونینگ دیقه ‪40‬‬
‫از همون جریان داده ای سورس مرتب باید کرد ایز سورتد ‪ ...‬همونجام باید مشخص کنی‬
‫ک برحسب چی مرتب میکنی‬
‫برای استفاده از ‪ look up‬ابتدا یکی از جداولی ک بهم میخوایم جوین کنیم اول اول اول ا ال‬
‫سورس اورده سپس کامپوننت لوک اپ را اورده و جدول دوم را باید در لوک اپ انتخابو‬
‫اینا کرده‬
‫دیقه ‪70‬‬
‫اگر عامل اتصال یک ستون نبود فقط باید اونارم مشخص کنی ینی کامپوزیت کی باشه‬
‫لوک آپ هارا میتوان پشت سرهم اورد‬

‫مهم‬
‫برای گرفتن فایل ‪ xml‬در سورس کامپوننت جدا داریم باید با اون بگیری فایل را‬
‫‪??In line schema‬‬
‫‪ Xsd‬را خودت درست کن ن با جنریت‬
‫‪Conditional split‬‬
‫شرط گذاشتن رو جدولی برحسب چیزی میخوایمش ‪ ...‬مثال فالن ستون یک بود میخوایم یا‬
‫فالن ستون نال هارا نمیخواهیم دیقه ‪ 19‬مهم‬

‫توجه !‬
‫کامپوننت ‪ agg‬هم داریم مثال جمع بزنیم گروپ بایش کنی اینا‬
‫خب توجه مهم‬
‫با همین ‪ SSIS‬هم میتوان اگری گیت کرد هم سرت کرد!‬
‫ب این صورت ک ابتدا باید فایل را حتما از سورس بگیریم ‪ ...‬سپس اگر خواستیم برحسب‬
‫ی سری شرط ها فایلمان را بگیریم از کاندیشمال اسپلیت ساتفاده کرده سپس اگری گیت‬
‫سپس اگر خواستیم سرت ! این پایان کار نیست در نهایت باید حتما ان را ب مقصدی تحویل‬
‫دهیم‬

‫حواست باشه هر کامپوننتی را در جای درستش بیاری‬


‫یکیش مثال دراوید کالمن‬

‫کامپوننت درایود کالمن‬


‫شبیه همون ‪ select‬ای ک میزنی رو ستونا ‪ ...‬با این کامپوننت ستون مشتق شده داریم ک‬
‫حاصل عملیاتیه‬
‫در اکسپرشن باید مشخص کنی چی کار کنه ‪ ...‬همچنین میتوانی از فانکشن هایی ک خودش‬
‫گذاشته است استفاده کنی‬

‫تقدم تاخر کلی گویی‬


‫به نام خدا‬ ‫جلسه ‪6‬‬

‫مهم‬
‫بیایم فرض کنیم از چنتا دیتابیس مختلف بخوایم داده بگیریم چیکار کنیم حاال؟!‬
‫میتوان سنتی کار کرد کلی ‪ DF‬گذاشت‬
‫یه راه دیگ هم هست ک ی جدول درست کنیم دیتا بیس ها و جداولی ک میخواهیم را در ان‬
‫جدول نوشته ‪ +‬اکتیو یا غیراکتیو بودنش‬
‫سپس با ‪ for each container‬لوپ ‪ado‬زده روش‬
‫برای استفاده ازین کانتینر باید ابتدا یک اگزتسک هم بنویسیم (در اس کیو ال تسک) ک بگیم‬
‫سلکت کن این جدولو با ایز اکیتوش و این اگز تسک را باید در متغیر ابجکت انداخت‬
‫در قسمت ریزالت ست تنظیمات اسمو انواع متغیرش را باید مشخص کنی‬
‫اگر دوتا ایکس تا سلکت داشتیم باید برای تک تکشون متغیر تعریف کرد‬
‫این اگزتسک خروجی اش یک جدول است پس باید ‪ result set‬فول باشه‬
‫ریزالت ست مجموعه ای از جداول یا جدول است‬

‫از انجایی ک این جداول در سرور و دیتابیس های مختلف است باید در پراپرتیع سورس‬
‫‪ Intial va server name‬را تغییر دهیم ‪ =...‬دیقه ‪35‬‬
‫هم چنین در همون سورس باید قسمت جدول را متغیر کرده حتما ‪ ...‬مقدار دهی اولیه حتما‬
‫انجام شود‬

‫تکنیک اپدیت جدولی ک از جدول دیگر دارد ورودی میگیرد‬


‫مثال ‪ 9-1‬جدولی بشیند جای ‪ 9-1‬جدول دیگر‬

‫حواست به تغییر کدپیج حین خواندن فایلی و ریختن ب جدولی باشد که باید یکی باشد چراکه‬
‫عوض میشود مقدار اشغال فضا و دیتاتایپش‬
‫این کدپیج در پراپرتیز سمت مقصد و مبدا است ک باید بسته ب شرایط یکیش را تغییر دهی‬
‫(دیقه ‪)70-60‬‬
‫کامپوننت ‪ comversion‬برای تغییر دیتاتایپ‬

‫توجه‬
‫پارامتر‬
‫دیقه ‪70‬‬
‫تمرین دیقه ‪ 90‬جالب‬

‫‪Incremental load‬‬
‫‪SCD‬‬
‫سه نوع دارد‬
‫‪ : 0‬بعضی از ستون ها هنگام بروزرسانی ب هیچ وجه نباید تغییر کند!میشه فیکسد‬
‫اتریبیوت ک تایپ یک‬
‫‪ : 1‬هرتغییری داشته باشیم تغییر میدهد هیستیکال نداریم‬
‫‪ : 2‬قبلی را نگه میدارد و یک سطر جدید با همون ایدی ویژگی ها میدهد البته ساروگیت‬
‫متفاوته‬
‫با اینکار هیستریکال رعایت شده‬

‫برای بروزروسانی‬
‫برای جداول دایم از ‪ scd‬استفاده میشود‬
‫‪ Update insert‬اک ولی دیل نه‬

‫ابتدا سورس را انتخاب کرده ‪...‬‬


‫کامپوننت ‪ scd‬را انتخاب کرده‬
‫سورس را ب بهش وصل کرده‬
‫کانکشن این ‪ scd‬را حواست باشد باید ورهوس باشد نه سورس!‬
‫حال باید بهم عامل جوینی مقایسه انتخاب شود ک میتواند کامپوزیت کی باشد‬
‫مرحله بعد باید تایپ تغییر را مشخص کنی‬
‫وقتی هیستروکیال میزاریم برای هیستریکال نوع نگه داریه تاریخو دومی گذاشته‬
‫البته توجه شود دوتا ستون هم باید اضافه شود‬
‫یوزر استارت هم بزار‬

‫‪Changing attributes‬‬
‫برای وقتی است ک اتریبیوتی را تغییر میدهیم و هیستریکال گرفته ایمش و حاال میپرسد‬
‫مقدار اتریبیوت در تاریخ قبل هم تغیییر کند یا خیر ‪ =...‬بستگی ب اون بیزنس و اتریبیوت‬
‫داره‬
‫‪Intramded memer‬‬
‫برای وقتی ک مشتری چیزی جدیدی در جدول دیم باید بیاید ولی هنو وقت اپدیتش نشده پس‬
‫نمیاید حال اون مشتری ی تراکنشی انجام داده در فکت میخواهیم بیاید‪.‬‬
‫وقتی اینو بزنیم دیگ مشکلی نداریم‬
‫تیکشو حواست باشه بزنی پس‬
‫این ویژگی برای لحظه ی آنی است!‬
‫وقتی جدولی هیستریکال داریم بقیه رو چنج باید بگیریم چرا ک اینفرد داشته باشیم و فیکس‬
‫باشه دیگ نال میده و چنج نمیکنید!!‬

‫بروزرسانی دیم ها خارج وقت اداری فکت وقت اداری‬


‫جلسه ‪6‬‬

‫مهم‬
‫در جدول فکت ستون تفسیر شدنی نداریم‬
‫ینی مثال بگیم ‪ 0‬ایناس ‪ 1‬ایناس ‪ ...‬پس باید جدا کنیم اگر اینجوری بودن‬

‫توجه‬
‫وقتی ک داریم در سورس دیتا مشخص میکنیم اگر ازون جدول ی سری ستونش مدنظرمون‬
‫بود ن همه اش از ‪ build query‬استفاده کرد ‪ ...‬از بخش کالم بری کیر میشی‬
‫در کامپوننت ‪ sort‬عامل اتصالو باید درش مشخص کنی‬

‫‪Conditional split‬‬
‫انشعاب دادن یک جریان(ورودیش در اصل باید یک جدول باشد مثل مرج)‬
‫میتوان رو متغیرها ستون اعمالش کرد یا ‪ n‬تا خروجی داشته باشد‬

‫توجه‬
‫وقتی مرج میکنی در ‪ ssis‬باید یا سرتش کنی با کامپوننت یا دستی تو همون سورس در‬
‫ادونس سرتش کنیم بعد بدیمش مرج‬

‫کامپوننت ‪lookup‬‬
‫چرایی استفاده؟!‬

You might also like