top of page

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.

רן


 
 
 

תגובות


bottom of page