
הטקסט המלא של הדקות הראשונות בהרצאה «לולאת For ב-SSIS - חלק 1» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
בדוגמה הבאה אנחנו נכיר קונטיינר נוסף for Loop Container. למען האמת, מתוך משפחה של שלושת הקונטיינרים שנמצאים כאן לפנינו, זהו הקונטיינר הכי פחות פופולרי, הכי פחות שימושי בתהליכי ETL, בתהליכי בנייה של Data Warehouse כפי שנראה בהמשך.
בעוד שה-Sequence Container כפי שראינו נותן לי אפשרות לקחת אוסף של קומפוננטות נפרדות ולהפוך אותם ליחידה אטומית אחת, ארווח כאן קצת את המקום, ביחידה אטומית אחת שבלתי ניתן להפריד אותה, ולהתייחס לכל הקומפוננטות בפנים כרכיב אחד.
for each Loop עובר על סדרה של אובייקטים, בין אם זה טבלאות, בין אם זה קבצים, ובין אם זה כל דבר אחר. for Loop Container, שבו אנחנו נעסוק כרגע, בעצם נותן לי את האפשרות לתכנת לולאה ולבצע בתוכה אוסף של מניפולציות כנדרש.
בדוגמה שלנו, על מנת לסבר את האוזן, להבין את הרעיון הזה של ה-Four Loop Container, אתם תראו כיצד אנחנו בעצם מגדירים לולאה כפי שעושים בכל עולם התכנון.
מגדירים את הלולאה על ידי תנאי בוליאני שבהיעדרו הלולאה מסתיימת, ויוצרים איזשהו משתנה עם מישהי על value שבאסיימנט אנחנו מקדמים אותו.
בואו נבין זאת. אני רוצה בדוגמה שלפנינו לחשב את הערך של 2 בחזקת 10. אני יודע שאני יכול לקרוא לה פונקציית power ולשלוח לה כבייס את 2, לשלוח לה את 10 והיא תחזיר לי את התוצאה 1024.
אולם אני לא רוצה להשתמש בפונקציית power, אני רוצה להשתמש בלופ על מנת לבצע זאת. כיצד נעשה זאת? אני מבין ש-2 בחזקת 10 זה בעצם 2 כפול 2 כפול 2 וכל זה הולך וממשיך לנו בעצם 10 פעמים.
אם נסתכל כמה פעמים אנחנו מכפילים את כל ה-2, זה בעצם 10 פעמים וזה נותן לנו את הפתרון הסופי של 2 בחזקת 10, 1024. כיצד נממש זאת בלולאה?
אנחנו ניצור לולאה שהערך ההתחלתי שלה היא initial values, הוא בעצם 2, ואנחנו נייצר את הלולאה שהערך שלה יהיה בעצם 1, ואנחנו נרוץ עד 10. כלומר, ניצור לולאה שרצה 10 פעמים.
מה היא עושה 10 פעמים? לוקחת את המספר 2 בהתחלה ומכפילה אותו בעצמו שוב ושוב כל פעם מחדש עד שנקבל את התוצאה. בואו נראה כיצד הדברים הללו קורים. כדי לבצע זאת קודם כל בואו נקנפג את ה-for-loop-container.
ה-for-loop-container אומר לי כמה פעמים אתה רוצה לבצע את הלולאה, מהו התנאי הבוליאני שבאמצעותו אתה רוצה לבצע את הלולאה. כדי שיהיה לי נוח אנחנו נייצר לנו שני משתנים שונים.
המשתנה הראשון שלנו נוסיף כאן add variables ואנחנו נקרא לו כאן הבייס והבייס שלנו שאיתו אנחנו מתחילים זה בעצם שתיים והוא אכן אינטג'ר אנחנו רוצים להגדיר אותו כמשתנה בייס וההגדרה שלו תהיה בעצם שתיים הערך ההתחלתי שלו אנחנו נתחיל בערך שתיים אותו אנחנו רוצים להכפיל שוב ושוב ושם תהיה לנו בעצם תוצאה.
אנחנו נצטרך איזשהו מונה לקדם ללולאה, בעצם סוג של קאונטר. הקאונטר שלנו, הערך שלו בהתחלה יהיה 1 והוא יגדל עד שהוא יגיע ל-10. הוא בעצם יספור לנו, הקאונטר, כמה פעמים אנחנו מבצעים את הלולאה.
סגרתי כאן, נכנס כאן לתוך הלופ קונטיינר וכל מה שאנחנו צריכים כאן לעשות זה ה-initial values, זאת אומרת לקחת את המשתנה שלנו, את הקאונטר, ולהשוות אותו ל-1.
בהתחלה אנחנו רוצים שהוא יהיה שווה לאחד, מאחר ומותר במשתנה נקדם אותו ברוחית. אנחנו נרוץ על המשתנה שלנו, על אותו קאונטר, כל עוד מתקיים התנאי שהוא שהקאונטר שלנו קטן מ-10.
קטן או שווה ל-10, גם את 10 נרוץ. בכל פעם, בכל איטרציה, אנחנו נקדם את הקאונטר שלנו להיות שווה בעצם לקאונטר ועוד אחד. כל פעם אנחנו מקדמים אותו שוב ושוב.
הובטח לנו כרגע שהלולאה שלנו, שניתן לה כאן שם, אנחנו רוצים למצוא power of 2, למצוא את ה-2 בחזקת 10, אם אנחנו רוצים למצוא את הפתרון הזה.
אז אנחנו צריכים לרוץ 10 פעמים ולהכפיל שוב פעם את 2, את התוצאה שמתקבלת לנו מהמכפלה בכל איתרציה, שוב פעם ב-2.