
Unit Price עם מחיר כולל מע"מ.DT_UI4 חותך את מה שאחרי הנקודה העשרונית, ולכן בחרו DT_NUMERIC עם precision 18 ו-scale 2, כמו שמוגדר ב-SQL Server לעמודת money.DT_NUMERIC, precision 18, scale 2), כי הפלט של Derived Column נשאר מחרוזת.Unit Price מהעמודה החדשה של Data Conversion ולא מהמקורית. יש להיזהר מהעמודות ה-Unicode הדומות.My Products ולא על MyProductDemo. אחרי תיקון ה-TRUNCATE והרצת שני הרכיבים, המחיר של הצ'אי עלה מ-18 ל-21.06, שהוא 18 כפול 1.17.הטקסט המלא של הדקות הראשונות בהרצאה «טרנספורמציה של הנתונים - רכיב SSIS Drived Column» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
שלום. בשיעורנו היום אנחנו נעסוק בקומפוננט הנוספת שעוזרת לנו לבצע טרנספורמציה של הנתונים. ניכנס לתוך Product Data Flow של ה-Products ונראה בתוך תחת Common שיש לנו Data Conversion כפי שראינו ו-Derived Column, היכולת שלנו לקבל נתונים מתוך ה-Source ולפני שאנחנו מוציאים אותם
ל-Destination לבצע עליהם איזושהי מניפולציה. במניפולציה הזאת, כפי שראינו בדאטה קונברג'ן, שם אנחנו עושים המרה של הדאטה טייפ, כאן במניפולציה הזאת אנחנו יכולים לעשות שינוי של הדאטה בעצמו.
לא שינוי של הדאטה טייפ, לא שינוי מטא דאטה, אלא שינוי של הדאטה, איזושהי מניפולציה על הנתונים, אולי תוספת של עמודות, אולי חיסור של עמודות, אולי שינוי ערך של העמודות, לפני שאנחנו מייבאים אותם לתוך ה-Destination.
כיצד לעשות זאת? מיד בדוגמה הקרובה. נפתח את הקשר בין ה-flat file source לבין ה-data conversion ונזרוק לכאן את ה-derived column שנמצא ביניהם.
ה-source שלנו נשפך לתוך ה-derived column בפנים. קצת נרווח אותם, נזיז אותם טיפה הצידה וה-derived column שלנו נסדר אותו כאן.
ועכשיו אנחנו יודעים בתוך ה-derived column לבצע עליה מניפולציה. קליק אנחנו נכנסים בפנים וכעת כל עמודה שיש לי אותה בתוך הסורס אני יכול כרגע לבצע עליה מניפולציה של הנתונים.
למשל עבור יוניט פרייס אנחנו רוצים לבצע שינוי של המחיר על מנת שתופיע לי עמודה נוספת יוניט פרייס מחיר פלוס מע"מ.
מה ה-derived column שאנחנו רוצים אותו ואנחנו מציינים. העמודה שאותה אנחנו רוצים לבצע זו עמודת יוניט פרייס בואו ניתן לה שם. Unit with tax, אנחנו רוצים להוסיף לה את עלות המיסים.
אנחנו ב-Derived column, יש לנו שתי אפשרויות. או להוסיף עמודה חדשה, כפי שנותנת לי כאן by default Add a new column, או לחלופין לעשות Replace, להחליף עמודה קיימת.
כלומר, לשנות את הדאטה בתוך העמודה הנוכחית. אנחנו ניצור עמודה חדשה, ולכן נכתוב כאן Add a new column, ואת העמודה עצמה ניתן לה את הנוסחה שבה אנחנו רוצים לבצע את החישוב.
מהו החישוב? החישוב הוא לקחת את העמודת unit price ולהכפיל אותה ב-1.17. מאחר ואנחנו בעמודה שהיא לא מספר עשרוני, אלא שהיא עדיין מסוג טקסט, אז אנחנו לא יכולים להכפיל אותה ב-1.17 ולכן אנחנו צריכים לבצע עליה שינוי.
כלומר את אותם שינויים שראינו בתוך ה-data conversion, יש לנו אפשרות לבצע כאן כיצד, אני עומד על העמודה עצמם, אני פותח כאן את הסקשן של הטייפ קאסט, ההמרה של דאטה טייפ, ומאחר ואנחנו רוצים להמיר אותה בעצם למספר אינטג'ר או למספר עשרוני, אז אני יכול לבחור כאן dtui4 על מנת לתרגם אותה למספר אינטג'ר, ובכך לקצץ את כל מה שיש
מצד ימין של הספרה העשרונית. אם אנחנו רוצים לשמור על הספרה העשירונית כפי שבהחלט מתבקש, נמיר אותו לסוג של נומריק.
נזרוק את הנומריק כאן, dt-numeric, כשיש לנו כאן בעצם את החלוקה של הנתונים בעצמם. בואו נביא את הנומריק בעצמו, והנה כאן אנחנו צריכים לציין כמה אנחנו רוצים לעשות עבור העמודה של ה-unit price, כמה ספרות מצד ימין של הנקודה, החלוקה כמה אנחנו רוצים בפרסיז'ן וכמה
אנחנו רוצים בסקייל, נוכל לראות אם ניכנס בתוך ה-SQL Server. שוב פעם, בניתוח העמודה עצמה של ה-Unit Price, נוכל לראות כיצד מוגדר לנו כרגע שזה Money.
Money, ההגדרה שלו זה בעצם Numeric Float Number של 18, כאשר יש שתי ספרות מצד ימין של הנקודה העשרונית. אז נשנה זאת כאן ל-18, שהסקייל שלנו כאן הוא בעצם 2. את כל זה אנחנו מריצים על ה-unit price ואת כל המידע עצמו זה הקאסטינג שאנחנו עושים ל-unit price.
רק לאחר הקאסטינג אנחנו יכולים לבצע הכפלה של המידע הזה ב-1.17. פלט שאנחנו רוצים שהוא יצא זה לא פלט של סטרינג, אנחנו רוצים לשנות אותו ואת זה כבר אנחנו לא יכולים לעשות כאן, אלא את זה אנחנו נעשה בדאטה קונברז'ן.
נלחץ כאן על אוקיי, נמשוך את הנתונים מתוך ה-Derived column, ניכנס שוב פעם לתוך הדאטה קונברז'ן, נבחר את העמודה שזה החלטה יצרנו, שזה ה-Unit Price Derived column Unit Price with Task Derived column Unit Price.
מה אנחנו רוצים לעשות לה? אנחנו נשאיר אותה בעצם כ-Derived column