
replace.Product temp), מבצעים את ההחלפה בטבלה הסופית ומוחקים את הזמנית עם drop table.הטקסט המלא של הדקות הראשונות בהרצאה «שרשור טבלאות - Qlik concatenate» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
בשיעור הקודם למדנו שימוש בפונקציית קונקטינייט שמשרשרת טבלה אחת לשנייה, זאת אומרת שמה טבלה מתחת לטבלה, כמו שאנחנו רואים פה, שרשרנו בעצם לטבלת אורדרס נתונים מ-inline של ההחזרות כדי להפוך אותם לטבלה אחת.
חשוב לדעת שקליק סנס בעצם משרשר טבלאות גם בלי פונקציית קונקטינייט, במקרים שהשדות זהים לחלוטין בין הטבלה הראשונה לבין הטבלה השנייה.
אם הייתי פה לא הייתי משתמש בקונקטינייט זה לא היה קורה. למה? מכיוון שאין זהות מוחלטת בין השדות שאני מוסיף פה לבין השדות של טבלת אורדרס המקורית. למה? יש שדות שפשוט חסרים. פה יש לך שתיים, שלוש, ארבע, חמישה שדות, וטבלת אורדרס המקורית, לאחר שחיברנו ביניהם, יש הרבה יותר שדות.
ולכן חיוני היה להשתמש בפונקציית קונקטנטינית בכל מקרה, כי הוא לא היה מבצע את זה אוטומטית. הרבה פעמים אנחנו צריכים לשים לב שאנחנו בעצם לא רוצים לשרשר ובכל זאת קליקסנס ישרשר כי השדות זהים ולכן עם זה צריכים להתמודד עם פונקציה הפוכה שנקראת no-concatenate.
בשביל להדגים את זה בואו נניח נעלה רגע לטבלה למעלה אם נסתכל על טבלת פרודקטס אתם רואים שבחלק מהמקומות בעצם הוא טען סימנים מיוחדים כסימן שאלה אוקיי פה במקום רוזל כנראה או ריזל זה נכנס סימן שאלה וגם פה וכולי. עכשיו נניח שאנחנו רוצים להחליף את כל הסימני שלה בסימן i, לא יודע אם זה המקרה,
הוא באמת כל, הוא בסימן e. אני לא יודע אם זו באמת התוצאה שאנחנו צריכים לבצע כרגע, אבל נניח שזה מה שאנחנו רוצים לעשות.
אז בעצם אנחנו נשתמש בפונקציית replace. אז בעצם, אם אני רוצה לאתר את טבלת product, היא נמצאת פה, אוקיי? ופה בעצם יש לנו את ה-pure charge הזה, שמביא את הפרודקט ניים קלין, למעשה ביצענו את זה כבר קודם, אבל שימו לב ששמנו את זה בשדה אחר.
בוא נגיד שבסיטואציה רגילה אנחנו לא צריכים את שני השדות, אנחנו פשוט רוצים להחליף את הפרודקט ניים, את הפרודקט ניים כמו שהוא במקום המקורי, ואנחנו יכולים לעשות את זה פה במקום השדה החדש.
עכשיו נניח שאנחנו לא רוצים לבצע את זה בטעינה הראשונה, בגלל כל מיני סיבות לא ניכנס אליהן כרגע, רוצים בעצם להחליף את השדה Product Name לא ב-load הראשוני אלא ב-load הבא במחוזת שהיא נקייה שהיא בעצם, כמו שאמרתי, נחליף לה את הסימני שלה בסימן E. קודם כל נבטל את זה, לא צריכים את זה כבר.
זאת אומרת, אני בעצם רוצה לבצע קריאה נוספת של טבלת Product שבה ה-Product Name הוא נקי. עכשיו, בעצם יכולתי לעשות Left Joint כמו שלמדנו, Left Joint של פרודקטס לעצמו, עם השדה המזעה של פרודקט איי-די ונעשה את הריפלייס של פרודקט ניים, אמרנו שיחליף את כל הסימני שאלה בתו אי.
עכשיו, השאלה אם זאת האופציה הנכונה לעשות את זה, בואו רק נגמור את המשפט. ואם אני רוצה לתת שם לשדה הזה, ובעצם אני קורא לו פרודקט ניים, שימו לב שזה לא הדבר הנכון לעשות.
מה בעצם מתבצע פה? כמו שלמדנו כשאנחנו מבצעים ג'וייל על פי יותר משדה אחד, הוא בעצם מחבר לפי כל השדות. זאת אומרת, מכיוון שכבר פה יש לי פרודקט ניים, פה אני עושה join עם פרודקט ID ופרודקט ניים, הוא לא יחליף את השדה פרודקט ניים הזה השגוי לפרודקט ניים חדש,
הוא פשוט יעשה join בין שתי הטבלאות על בסיס שני המופעים, וזה לא מה שאנחנו רוצים. לכן מה שאפשר לעשות במקרה זה בעצם להשתמש בטבלה זמנית, את פרודקט אני אקרא לו product temp, זה משהו שאתם תראו שמאוד שימושי לעשות, להשתמש בטבלאות זמניות, ואז במקום ל-left join, אני בעצם עושה פרודקט,
ומה שאני אעשה, אני אעתיק את כל השדה, פרודקט ID יש לי, פרודקט name יש לי, נעתיק את כל שאר השדות, פה אני לא צריך לעשות את זה שוב, כבר יש לי את השדה מוכן, ואז resident product temp, זאת אומרת, אם אני מסביר מה שעשיתי, בעצם הפכתי את פרודקט המקורי לטבלה זמנית, שבו עדיין לא טיפלתי בפרודקט name, לא רציתי,
ואז טבלת פרודקט האמיתית קוראת מטבלת פרודקט