PracticU

לולאת Foreach ב-SSIS - חלק 4

בלי כתוביותעם כתוביות
PracticU › קורס SSIS › לולאת Foreach ב-SSIS - חלק 4
מילון מושגים:
SSIS - רכיב של SQL Server לבניית תהליכי ETL להעברה ולעיבוד של נתונים בין מקורות.
טבלה - מבנה במסד נתונים שמאחסן נתונים בשורות ועמודות. כל שורה היא רשומה וכל עמודה היא שדה.
מסד נתונים - אוסף מאורגן של נתונים המאוחסן כך שאפשר לשמור, לחפש, לעדכן ולשלוף אותו ביעילות, לרוב באמצעות שפת שאילתות.
Northwind - מסד נתונים לדוגמה של מיקרוסופט, המדמה חברת מסחר ומשמש ללימוד ולהדגמת שאילתות SQL.
Integer - סוג נתונים למספר שלם, כלומר מספר ללא חלק עשרוני.
פרמטר - ערך שמועבר לפונקציה או לפקודה כקלט, ומשפיע על אופן פעולתן ועל התוצאה שהן מחזירות.
תנאי - ביטוי לוגי בקוד שתוצאתו אמת או שקר, וקובע אילו פקודות יתבצעו בהתאם לערכו.

לולאת Foreach ב-SSIS - חלק 4
ממשיכים את הדוגמה על ספירת הטבלאות בכל בסיס נתונים. הפעם שומרים את התוצאה בטבלה, והמעבר בין שני הרכיבים מותנה, כך שרק בסיסי נתונים גדולים מספיק נרשמים.
השלבים העיקריים
1. טבלת תוצאות: יוצרים את הטבלה dbCount בבסיס הנתונים Northwind, עם database name מסוג sysname ו-tables count מסוג integer.
2. הכנסת שורה: אחרי רכיב ספירת הטבלאות מוסיפים Execute SQL עם insert into dbCount ושני סימני שאלה. הפרמטר הראשון הוא db name כ-nvarchar בגודל 128, במיקום 0. השני הוא number, מספר שלם, במיקום 1, וגודל לא רלוונטי.
3. תנאי על החץ: בדאבל קליק על החץ בין הרכיבים אפשר לבחור Success, Failure או Completion, ובשדה Evaluation operator לבחור גם Expression. בדוגמה הוגדר ביטוי שבו number גדול מ-8. הכפתור Test בודק שהביטוי תקין, ובחץ מופיע סימן פונקציה.
4. התוצאה: התהליך עובר על כל בסיסי הנתונים, אך שורות נכנסות לטבלה רק כשמספר הטבלאות גדול מ-8. AdventureWorks נכנס, ובסיסי נתונים עם פחות טבלאות לא נכנסו.
5. הוכחה: אחרי ניקוי הטבלה והשבתת התנאי (חזרה לחץ רגיל) נכנסו כל בסיסי הנתונים, כולל אלה עם 8 טבלאות ופחות.
שימו לב
- אפשר לשרשר כמה תנאים בעזרת AND או OR.
- שורות שנחסמות על ידי התנאי לא מגיעות לטבלה בכלל.
אחרי ההרצאה אפשר להתנות מעבר בין רכיבים ב-Control Flow בביטוי, ולא רק בהצלחה או כישלון.
השיעור הבא בקורס: לולאת Foreach ב-SSIS - חלק 5

פרקי ההרצאה: לולאת Foreach ב-SSIS - חלק 4

  1. 00:00

    יצירת טבלת dbCount

  2. 01:29

    פקודת INSERT לטבלת dbCount

  3. 02:11

    הגדרת שני הפרמטרים

  4. 03:40

    התניית המעבר בין רכיבים

  5. 04:15

    Success, Failure ו-Completion

  6. 04:51

    ביטוי בוליאני ב-Evaluation Operator

תמלול ההרצאה: לולאת Foreach ב-SSIS - חלק 4

הטקסט המלא של הדקות הראשונות בהרצאה «לולאת Foreach ב-SSIS - חלק 4» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:02

    הדוגמה הבאה היא המשך ישיר לדוגמה הקודמת שאותה ראינו, ובתוכה נוסיף רכיב נוסף, ומתוך כך נכיר יכולות נוספות של הוויז'ואל סטודיו.

  2. 00:12

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

  3. 00:25

    את הנתון הזה אנחנו רוצים להכניס לתוך טבלה ב-SQL. אז ניצור טבלה dbCount, ובתוך הטבלה אנחנו נגדיר קודם כל את ה-database name שהוא יהיה מסוג sys name, גודל שמספיק לנו כדי לציין את שם ה-database, ואנחנו רוצים לציין כמה טבלאות יש בו tables count,

  4. 00:47

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

  5. 01:11

    איך נגדיר זאת? נחזור לתוך הוויז'ואל סטודיו. וואנס עברנו וקלטנו כמה טבלאות יש בתוך אותו דאטאבס אנחנו רוצים לבצע הכנסה. שימו לב ההכנסה הפעם לא תהיה סטנדרטית אז נא לעקוב היטב.

  6. 01:29

    אנחנו רוצים לבצע הכנסה, זאת אומרת שאנחנו רוצים לבצע פקודת SQL. פקודת ה-SQL עצמה, שוב פעם מתחברים קונקשן סטרינג, הפקודה עצמה היא הכנסה לתוך הטבלה עצמה db-count, להעתיק את שם הטבלה, insert into שם הטבלה והערכים שאנחנו רוצים לשלוף בהתאמה.

  7. 01:52

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

  8. 02:06

    מה הם אותם פרמטרים? נגדיל את המסך כדי שנוכל לראות טוב יותר. נבחר את הפרמטרים בהתאמה. Add, פרמטר ראשון, אנחנו יודעים, זהו שם הדאטאבס שעליו אנחנו רצים.

  9. 02:19

    הוא נמצא לי בפרמטר dbName1, הוא מסוג ורקר, הוא מחרוזת, אז אנחנו נבחר כאן ורקר או nVarkar על על מנת לתמוך גם ביוניקוד. מדובר כאן על הפרמטר הראשון, הגודל שלו 128. פרמטר נוסף, מאחר ויש לי שתי סימני שאלה, הוא אותו פרמטר שמכיל לי את המספר הטבלאות שיש בתוך אותו דאטאבס. כפי שראינו בסרטון הקודם,

  10. 02:47

    הכנסנו את כמות הטבלאות לתוך משתנה בשם number. המשתנה הזה בשם number הוא כרגע input, כפרמטר input לתוך התהליך שלי הוא מסוג Integer.

  11. 03:02

    אנחנו יכולים להגדיר אותו כ-unsigned short, כ-unsigned int וגם כ-long על מנת להגדיר אותו כמספר שלם. מבחינת המיקום שלו הוא במקום השני ואם אנחנו מתחילים מאפס אז זה בעצם אחד והגודל כאן לא רלוונטי.

  12. 03:18

    אז יש לנו כאן שני פרמטרים, שם הדאטאבס והמספר. הם נכנסים בהתאמה לתוך השאילתא שמופיעה לנו כאן. שם הדאטאבייס ומספר השורות והם ייכנסו אחר כבוד לתוך הטבלה.

  13. 03:32

    עד כאן אין חידוש גדול. התהליך שלנו יודע לרוץ, לבצע חישוב ובהתאמה להכניס את השורות Insert into Database לתוך טבלת dbCount. הכל מצוין, אולם בהינתן שאנחנו לא רוצים להכניס את שמות כל הדאטאבייסים ומספר הטבלאות שלהם, אנחנו לא רוצים שיהיה קשר עם מעבר ישיר לתוך הקומפוננטה הזאת.

  14. 04:00

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

  15. 04:21

    להגדיר על הצלחה, על כישלון, או שהיא מסתיימת, שזה בין הצלחה ובין כישלון, Completion זה בכל שלב שהוא, בין אם זה יסתיים בהצלחה או בכישלון.

  16. 04:31

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

  17. 04:47

    איך נעשה זאת? ב-Evaluation Operator יש לנו אפשרות לבנות כאן Expression, לבנות ביטוי שהוא יהיה תנאי בוליאני שרק בהתקיים אותו תנאי אנחנו ממשיכים לצעד הבא.

  18. 05:02

    נבחר כאן שלוש נקודות וכל מה שאנחנו רוצים זה שהמספר עצמו number שלנו שמכיל את מספר השורות בוא נניח אנחנו לוקחים רק דאטאבייסים שיש בהם מעל עשר טבלאות בוא נניח מעל שמונה

לקורס המלא: קורס SSIS אונליין

ההרצאה הקודמת: לולאת Foreach ב-SSIS - חלק 3

ההרצאה הבאה: לולאת Foreach ב-SSIS - חלק 5

הרצאות קשורות מקורסים אחרים

  • לולאת foreach
  • פקודת Foreach
  • לולאת Do - While
  • סקריפט עם לולאת for

קורסים נוספים במסלול

  • קורס DBA אפליקטיבי - שפת SQL למתחילים
  • קורס NoSQL - MongoDB
  • קורס BI - ניתוח מסדי נתונים - Qlik Sense
  • קורס Power BI