PracticU

לולאת For ב-SSIS - חלק 2

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

לולאת For ב-SSIS - חלק 2
תרגיל נוסף עם For Loop Container ב-SSIS: חישוב סכום הספרות של מספר קבוע מראש, בלי להשתמש בפונקציה מוכנה. כך רואים לולאה שאין לה ערך התחלתי ואין בה קידום מונה, רק תנאי עצירה.
הפתרון
1. שני משתנים: number מסוג Int32 עם הערך 237, ו-sum digits שמתחיל ב-0. בסוף אמור להיות בו 12, כלומר 2 ועוד 3 ועוד 7.
2. תנאי הלולאה: בקונטיינר אין ערך התחלתי ואין קידום מונה. התנאי בלבד הוא ש-number גדול מאפס, וכך הלולאה נעצרת כשאין עוד ספרות. בביטוי כותבים @[User::number] ולא את השם בלבד.
3. הוצאת ספרת האחדות: Expression Task ראשון מוסיף ל-sum digits את number % 10, כלומר שארית החלוקה ב-10 שהיא הספרה הימנית.
4. קיצוץ המספר: Expression Task שני קובע number שווה ל-number לחלק ל-10. כיוון שהמשתנה שלם, נחתכת ספרת האחדות: 237 הופך ל-23, אחר כך 2 ואז 0. כל ביטוי כולל פעולה אחת בלבד, ולכן יש שני רכיבים.
5. בדיקה בהרצה: מוסיפים Breakpoint בתחילת כל איטרציה ו-Breakpoint נוסף אחרי הקונטיינר. לשם כך משתמשים ב-Execute SQL Task ריק על אירוע pre-execute. מריצים ב-Start Debugging ובחלון Watch עוקבים אחרי המשתנים: 0, 7, 10 ואז 12.
6. מספר גדול יותר: עם 1259 הסכום התקבל 17, דרך 9, 14 ו-16.
שימו לב
- Execute Container מריץ בלי דיבאגר ולכן לא עוצר ב-Breakpoint. צריך Start Debugging.
- המספר קבוע בקוד ולא מגיע כפרמטר מהמשתמש.
אחרי ההרצאה אפשר לבנות לולאה שמונעת על ידי תנאי בלבד ולבדוק אותה צעד אחר צעד.
השיעור הבא בקורס: לולאת Foreach על קבצים ב-SSIS

פרקי ההרצאה: לולאת For ב-SSIS - חלק 2

  1. 00:00

    תרגיל סכום הספרות של מספר

  2. 01:17

    הגדרת משתני Number ו-Sum Digits

  3. 02:09

    תנאי הלולאה וקידומת סולמית

  4. 03:04

    Expression Task לסיכום הספרות

  5. 03:46

    שימוש באופרטור מודולו

  6. 04:48

    חיתוך ספרת האחדות בחלוקה

  7. 05:28

    הוספת Expression נוסף

תמלול ההרצאה: לולאת For ב-SSIS - חלק 2

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

  1. 00:02

    בדוגמא הבאה נציג שוב שימוש בלופ קונטיינר, לא שונה מהשימוש הקודם שאותו ראינו, כיצד לחשב 2 חזקת 10. הפעם נראה תרגיל נוסף על מנת לקבל מיומנות גבוהה יותר בעבודה מול לופ קונטיינר. שוב פעם נשפוך כאן את הלופ קונטיינר לתוך השולחן עבודה, כאן בתוך ה-Control Flow.

  2. 00:21

    המטרה שלנו בתוכנית זה לקבל איזשהו מספר, לא כאינפוט מתוך המשתמש, לא נכניס אותו כתוך פרמטר, אלא נכניס אותו Hardcoded, אנחנו רוצים לקבל איזשהו מספר, נניח שהוא מספר תלת-ספרתי 237 ומה שאנחנו רוצים בעצם להחזיר זה את סכום הספרות שלו במקרה שלנו 7 ועוד 3 10 ועוד 2 12 אז אנחנו רוצים בעצם בסופו של דבר לקלוט איזשהו מספר אבל להחזיר את סכום הספרות שלו.

  3. 00:52

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

  4. 01:06

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

  5. 01:17

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

  6. 01:39

    לצורך הדוגמה כפלט ניתן לו את המספר 237 כפי שראינו. אנחנו רוצים לסכום את הספרות של 237 ולצורך כך יהיה לנו משתנה, סם דיג'יט סכום הספרות, הוא בהתחלה יהיה מאופס, בסוף התהליך אנחנו נרצה לראות שהוא שווה בעצם לסכום הספרות 2 ועוד 3 ועוד 7, דהיינו שווה ל-12.

  7. 02:04

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

  8. 02:27

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

  9. 02:35

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

  10. 02:55

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

  11. 03:12

    מה אנחנו נעשה בתוך הלולאה עצמה? שוב פעם, להשתמש באקספרשן, ניקח לנו את הביטוי expression task, ובתור ביטוי התחלתי מה שאנחנו נרצה לעשות, זה בעצם לסכום לתוך ה-sum digit, להכניס לתוך sum digit את מה שכבר היה בו מאיטרציה קודמת, אבל לסכם את הספרה הנוכחית שיש לנו.

  12. 03:39

    כדי למצוא את הספרה הנוכחית, אז אנחנו לוקחים את המספר ועושים לו מודולו. מה פירוש מודולו? אנחנו לוקחים את המספר, נחלק אותו ב-10, וכאשר לוקחים מספר ומחלקים אותו ב-10 אבל לוקחים רק את השארית, אז אנחנו בעצם לוקחים את הספרה הימנית ביותר.

  13. 03:59

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

  14. 04:20

    השארית של חלוקת 237 ב-10, התוצאה היא 23 ועוד 7 לחלק ל-10, כלומר השארית היא 7. ולכן במודולו 237 מודולו 10 אנחנו מקבלים כאן את המספר 7.

  15. 04:35

    זה המספר שאותו אנחנו רוצים לסכום. בהמשך נרצה לקחת את 237 ולקצץ ממנו את ה-7. את זה אנחנו נעשה על ידי זה שנחלק ב-10. מספר שלם שמחלקים אותו ב-10, אנחנו בעצם חותכים את הספרת האחדות כיוון שזה יוצא 23.7 ולוקחים רק את החלק השלם 23 ואנחנו מקבלים כאן את 23 בחלוקה ל-7.

  16. 05:05

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

  17. 05:18

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

  18. 05:36

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

  19. 05:53

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

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

ההרצאה הקודמת: לולאת For ב-SSIS - חלק 1

ההרצאה הבאה: לולאת Foreach על קבצים ב-SSIS

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

  • לולאת for
  • לולאת Do - While
  • סקריפט עם לולאת for
  • לולאת For בקורס JAVA

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

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