top of page
Search

SSIS - שיעור 7 - נושאים ותרגול‎

  • class928417
  • Oct 21, 2014
  • 3 min read

***** מייל מרן *****

היי,

מצורפת מצגת קצרה: לינק למצגת

שקף 1: מבט על מחזורי הטעינה ל DWH

שקף 2: הסוגים השונים של SCD - Slowly Changing Dimention

שקף 3: פקודת MERGE

שקף 4: סדר הפעולות בשליפת רשומות ממערכת המקור לפי שדה DateTime -

כאשר רוצים לטעון לטבלת FACT נתוני Incremental data

להלן הנושאים שעברנו עליהם במהלך שיעור 7:

1. Data Flow - Merge Join Transformation

2. Data Flow - Merge Transformation

בקשר לשתי הטרנספורמציות, 1+2, הודגש כי המידע המוזרם אליהם צריך להיות ממוין.

Implementing an Incremental ETL Process:

(הנושאים הבאים מפורטים בספר, בפרק 7)

3. (Loading Dimension Tables (Full data

3.1 Truncate and Insert

3.2 SCD - Slowly Changing Dimention (שקף 2)

- (Type 0: Fixed attribute (No Change - לא ציינו את זה - הכוונה היא למקרים בהם נחליט שאין צורך לעדכן שום דבר במימד, אלא רק להכניס חדשים.

- Type 1: Simple upsert

- Type 2: Save historical data

- Type 3: Save current and Previous values on each row

עדכון Upsert יעשה לרוב באמצעות פקודת ה SQL שאתם מכירים - MERGE (שקף 3).

4. (Loading Fact Tables (Incremental data

- ("Using Date+time columns ("High water mark (שקף 4)

- Using sequence numerator

- Logical solution

- CDC - Change Data Capture

- Change Tracking

5. עשינו דוגמה שממחישה את טעינת טבלת FACT מהמערכות התפעוליות בארגון - אל מחסן הנתונים (DWH).

בשיעור, ביצענו שליפה מטבלאות תפעוליות של נתונים שמיועדים לטבלת Fact - שליפה זו התבצעה לפי שדה תאריך שנשמר בטבלת ניהול - הוא התאריך של הרשומה המאוחרת ביותר שנקלטה ל DWH בטעינה הקודמת. לנתון זה קראנו "High water mark".

בדוגמאות אחרות התאריך לבדו לא יספיק - ונרצה לשמור גם את השעה בנוסף - תלוי באופי של בסיס הנתונים.

בכל הדוגמאות (מצורף package) שמרנו את הHigh water mark במשתנה שקראנו לו הפעם VarMaxDate.

לאחר מכן יצרנו שאילתה דינמית - שתלנו את VarMaxDate בתוך השאילתה שב Source שנמצא ב Data Flow. כך, בכל ריצה של התכנית הSQL ירוץ עם תאריך שונה (ולכן הוא "דינמי").

ראינו 3 דרכים לבצע את זה. השתיים הראשונות כאשר משתמשים ב Data Flow ב OLEDB, והשלישית כאשר משתמשים ב ADO .NET:

5.1. Data Flow - OLE DB Source - Data access mode - SQL command from variable

בשיטה הראשונה שתלנו את המשתנה VarMaxDate בתוך משתנה נוסף שקראנו לו VarSQL. עשינו זאת באמצעות ה Expression של VarSQL.

לאחר מכן, ב OLEDB source, השתמשנו באופציה של "SQL Command from variable" - ובחרנו ב VarSQL שבעצם שומר את השאילתה הדינמית שלנו.

שימו לב!! לא הדגשתי את זה, אבל כדי שExpression של variable יעבוד חשוב שהמאפיין EvaluateAsExpression של המשתנה יהיה TRUE.

Var1 --> Properties --> EvaluateAsExpression = TRUE

ברגע שלוחצים על שלוש הנקודות של ה Expression בחלון ה Variables (כמו שהדגמתי בכיתה) המאפיין הזה אוטומטית עובר ל TRUE. אבל אם עושים את אותה הפעולה דרך ה Properties של ה Variable אז הוא נשאר על FALSE, וצריך לשנות ל TRUE.

5.2. Data Flow - OLE DB Source - Data access mode - SQL command using parameters

בשיטה השנייה משתמשים בSQL Command ובסימני שאלה בתוך השאילתה. לאחר מכן לוחצים על כפתור Parameters -שם משייכים כל סימן שאלה למשתנה המתאים.

על האופציות השונות ב OLEDB SOURCE תמצאו הסבר קצר ב http://technet.microsoft.com/en-us/library/ms183570.aspx

כמו כן מצורף למייל זה Package עם שלושת האפשרויות.

5.3. Use expressions to pass parameters to ADO.NET Source

בשיטה השלישית משתמשים ב ADO.NET Source. הוא מאוד דומה ל OLEDB אבל לעתים יש הבדלים, כמו במקרה זה- אין בו אפשרות ל "SQL From Variable" או כפתור "Parameters". מה שעושים: מגדירים את ה ADO.NET Source ב Data Flow. לאחר מכן עוברים ל Control Flow ושם, ב Expressions של ה Data Flow Task, בוחרים ב [ADO NET Source].[SqlComamnd] ושם שותלים את ה SQL הדינמי שמשתמש ב Variable.

*** הסבר על ה Package המצורף ****

בשלב הראשון עשינו TRUNCATE על טבלת ה MIRROR. הרי בכל טעינה אנחנו מרוקנים אותה.

בשלב השני שלפנו את התאריך מטבלת הניהול שלנו, ושמנו את הערך במשתנה VarMaxDate.

בשלב השלישי ביצענו את שליפת נתוני ה"דלתא" וטענו לתןך הטבלה המיועדת ב MIRRORDB (יש 3 השיטות, רק אחת מהן צריכה לפעול, ולכן ה2 האחרות צריכות להיות ב DISABLED).

לבסוף, דאגנו לעדכן את טבלת הניהול שלנו ב "High water mark" החדש, כדי שנוכל להשתמש בו בהרצה הבאה.

תרגול:

1. תרגלו את הנושאים בבית בצורה בסיסית- כמו שעשינו בשיעור. קחו נתונים מהטבלאות והשתמשו ברכיבים השונים.

2. מחוברת התרגול בנושא "Microsoft Integration Services":

תרגיל 7.2 - טעינת DIM תוך שימוש בפקודת MERGE

תרגיל 8 - טעינה אל Staging - תרגול של Merge Join

תרגיל 8.2 - תרגול של SQL MERGE, הפעם בטעינת טבלת FACT.

תרגיל 8.3 - דוגמה ל"למה צריך לטעון קודם לStaging?" - תהליך ה RI מתבצע לפני הכנסת הנתונים ל DWH

תרגיל 9 - שימוש ב For Loop Container ב Contriol Flow ובפרמטרים של SQL ב OLEDB SOURCE אשר ב Data Flow.

רן


 
 
 

Recent Posts

See All
Project MDX

נוספו MDX עבור הפרויקט למי שמתקשה. נמצא בלשונית "project" שאול

 
 
 
דוגמאות משלבי הפרויקט

הי, הוספתי בחלק של הפרויקט באתר מספר דוגמאות לתהליכים שונים משלב ה MRR וה - STG. אעדכן תוך כדי התקדמות הפרויקט. במידה ויש משהו שאתם...

 
 
 
קבוצת פייסבוק חדשה לקורס

המרצה במודול החדש ( מודול הפרויקט) פתח קבוצת פייסבוק לכיתה שלנו. הנה הלינק : https://www.facebook.com/groups/JBH9284.17/ שם הקבוצה :...

 
 
 

Comments


bottom of page