PracticU

המרה בין טיפוסי נתונים רכיב SSIS Data Conversion

בלי כתוביותעם כתוביות
PracticU › קורס SSIS › המרה בין טיפוסי נתונים רכיב SSIS Data Conversion
מילון מושגים:
SSIS - רכיב של SQL Server לבניית תהליכי ETL להעברה ולעיבוד של נתונים בין מקורות.
CSV - קובץ טקסט פשוט לאחסון נתונים טבלאיים, שבו הערכים בכל שורה מופרדים בפסיקים.
Visual Studio - סביבת פיתוח משולבת (IDE) של מיקרוסופט לכתיבה, ניפוי והרצה של קוד, בעיקר בשפות .NET.
עמודה - שדה בטבלת מסד נתונים שמחזיק ערך מסוג מסוים עבור כל שורה, למשל שם או תאריך.
SQL Server - מערכת ניהול מסדי נתונים יחסיים של מיקרוסופט, הנשלטת בשפת T-SQL.
ביט - יחידת המידע הקטנה ביותר במחשב, שערכה 0 או 1. שמונה ביטים מרכיבים בייט.
Unicode - תקן קידוד תווים אוניברסלי שמכסה את כתבי השפות בעולם, ומאפשר לייצג כמעט כל תו.
Integer - סוג נתונים למספר שלם, כלומר מספר ללא חלק עשרוני.

המרה בין טיפוסי נתונים רכיב SSIS Data Conversion
כשטוענים קובץ CSV לטבלה עם סוגי נתונים מוגדרים, SSIS לא תמיד ממיר לבד ויש שגיאות. רכיב Data Conversion ממיר את סוג הנתונים בדרך מהמקור ליעד.
למה צריך המרה
כש-Visual Studio יוצר טבלה אוטומטית מקובץ שטוח, הוא מניח שכל העמודות מחרוזות (varchar) בגודל 50. כשרוצים שליטה במבנה, יוצרים את הטבלה ב-SQL Server עם הסוגים המדויקים (מספרים, money, smallmoney, bit), וטעינה ישירה נכשלת. השגיאה לדוגמה היא cannot convert between Unicode and Non-Unicode ב-Quantity Per Unit.
השלבים העיקריים
1. יצירת הטבלה: מ-SQL Server מבקשים סקריפט Create Table מהטבלה הקיימת Products, מתקנים את השם ל-MyProducts ויוצרים אותה.
2. הוספת הרכיב: בין ה-Source ל-Destination מוסיפים Data Conversion ובדאבל קליק בוחרים עמודה לכל המרה.
3. מחרוזת: את Quantity Per Unit ממירים ל-Unicode string (DT_WSTR) בגודל 20, כי במקור האורך 50 ובטבלה 20. אותו עיקרון ל-Product Name, ל-Unicode באורך 40.
4. מספר: את Product ID ממירים ל-integer בשם alias חדש כמו ProductKey. מוצגים four-byte signed integer, ו-DT של שני בתים (smallint) ושל בית אחד (tinyint).
5. Mapping מחדש: ב-Destination ממפים את העמודות החדשות שנוצרו ב-Data Conversion ולא את המקוריות.
6. בדיקת המקור: ב-Show Advanced Editor של ה-Flat File, בלשונית Input and Output Properties, רואים את אורך העמודות והסוג שלהן.
7. עמודת identity: שגיאה על הכנסה לעמודה מסוג Read Only נפתרת בלי identity. עושים DROP TABLE IF EXISTS (זמין מ-2016) ויוצרים מחדש.
8. הרצה ובדיקה: Execute Task, ואז SELECT בטבלה מראה את כל הנתונים אחרי ההמרה.
שימו לב
אפשר גם להמיר code page. בדוגמה ה-code page של ה-Flat File הוא 1255 והתאים למסד הנתונים, ואם לא היה מתאים הייתה נדרשת המרה דרך Data Conversion.
אחרי ההרצאה אפשר להוסיף Data Conversion לתהליך ולמפות את העמודות המומרות אל טבלת היעד.
השיעור הבא בקורס: סוגי טרנספורמציה של הנתונים ב-SSIS

פרקי ההרצאה: המרה בין טיפוסי נתונים רכיב SSIS Data Conversion

  1. 00:00

    רכיב Data Conversion ב-Toolbox

  2. 00:40

    טבלה אוטומטית עם שדות Varchar

  3. 01:19

    יצירת טבלה עם Data Types מדויקים

  4. 02:58

    חיבור הטבלה החדשה ליעד

  5. 03:31

    שגיאת המרה בין Unicode ל-Non-Unicode

  6. 04:05

    הוספת Data Conversion בין מקור ליעד

  7. 04:39

    המרת עמודה ל-Unicode String

  8. 06:07

    בדיקת עמודות בעייתיות ב-Advanced Editor

תמלול ההרצאה: המרה בין טיפוסי נתונים רכיב SSIS Data Conversion

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

  1. 00:02

    שלום לכולם, בשיעורנו היום אנחנו נלמד קומפוננטה שנקראת Data Conversion. אני נכנס בתוך Data Flow Task, ובתוך ה-Data Flow Task, תחת SQL Toolbox יש לנו Data Conversion.

  2. 00:16

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

  3. 00:34

    בדוגמה שלפנינו תארנו נתונים מתוך קובץ CSV, קובץ flat-file, אל תוך טבלה. אולם כשיצאנו את הנתונים לתוך טבלת SQL, יצרנו את הטבלה.

  4. 00:45

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

  5. 01:04

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

  6. 01:21

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

  7. 01:42

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

  8. 02:03

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

  9. 02:23

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

  10. 02:38

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

  11. 03:06

    נחזור לתוך הוויז'ואל סטודיו, בתוך ה-Destination של ה-SQL Server נבחר את הטבלה שזה אחת היצרנו, My Product Demo. אם ננסה להגיד לו אוקיי, ונריץ את התהליך עצמו, בואו רק נעשה מיפוי של כל השדות, לא הרבה שדות הוא מצליח לגלות ולזהות אותם, כמו Supplier ID, Category Name ו-Product ID שהוא שולף אותם

  12. 03:30

    כאן. נריץ את התהליך עצמו, גם כאן אנחנו כבר יכולים לקבל כאן חיווי לשגיאה שיכולה להיות.

  13. 03:39

    הנה, כבר אנחנו מקבלים הודעת שגיאה שה-Quantity Per Units, שגיאה שקופצת לנו כאן, cannot convert between Unicode and Non-Unicode.

  14. 03:49

    בואו נריץ בכל זאת את התהליך עצמו. שעה שאנחנו מריצים אותו אנחנו מקבלים רצף של עמודות שהתהליך SSIS לא הצליח לבצע לו המרה. הראשונה ביניהן Quantity Per Units, זוהי המרה, כפי שראינו בבולט שקפץ לנו בטולטיפ, שמתבצעת המרה בין Unicode ובין Non-Unicode.

  15. 04:10

    כיצד אנחנו מבצעים זאת? הנה בדיוק בדוגמה הבאה. לפני הכניסה לנתונים בין ה-Source ל-Destination, נכניס רכיב נוסף שנקרא Data Conversion.

  16. 04:22

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

  17. 04:32

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

  18. 04:51

    Quantity Per Units אנחנו יכולים לראות בתוך ה-SQL, הוא מתורגם לתוך שדה מסוג nVarcar. ולכן, כשאנחנו מביאים אותו, אנחנו מביאים אותו כ-car, ואם אנחנו רוצים לעשות לו המרה, זו הדרך לעשות זאת.

  19. 05:07

    שימו לב לנתונים שנמצאים כאן: העמודה Quantity Per Units תהיה מתורגמת, אני יכול להשאיר אותה לעמודה Quantity Per Units שהיא תהיה מסוג Unicode, שהשם שלה יהיה בעצם Unicode, כאן זה האליאס של השם וכאן זה הדאטה טייפ.

  20. 05:26

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

  21. 05:38

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

  22. 05:57

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

  23. 06:12

    נסמן לו אוקיי. עדיין הוא קופץ ונותן לנו הודעת שגיאה על עמודות אחרות שיכולות להיות בעייתיות. מה עמודות שיכולות להיות בעייתיות?

  24. 06:21

    כאן אנחנו מזהים שמתבצע איזשהו טרנקיישן. בתוך ה-flat file, כשאנחנו שולפים את הנתונים עצמם, אם אני רוצה לראות באיזה פורמט הם מגיעים, אני יכול ללחוץ כאן right click, show advanced editor.

  25. 06:34

    תחת הקבצים עצמם אני יכול לראות מהו ה-input וה-output, מהו ה-flat file, ה-source של כל המידע שאותו אנחנו מקבלים.

  26. 06:43

    כשאנחנו מקבלים אותם כאן, אנחנו מקבלים את ה-quantity per units,

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

ההרצאה הקודמת: קישור בין רכיבים בתוך Toolbox SSIS

ההרצאה הבאה: סוגי טרנספורמציה של הנתונים ב-SSIS

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

  • המרה בין סוגי משתנים - Type Conversion
  • Conversion Functions
  • שפת JavaScript - טיפוסי נתונים - Types
  • רכיב ה-TreeView

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

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