Pentaho Data Integration - איך לייבא מידע מ-Salesforce על סמך קובץ אקסל

ליאור נכתב על ידי ליאור לביא, עודכן בתאריך 24/11/2023

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

אלא שלעיתים, רשימת הערכים שלנו ארוכה מאורך מחרוזת החיפוש המותרת ב-Salesforce, והפתרון הזה הוא לא היעיל ביותר. דרך אחרת, יעילה ומהירה יותר, היא להשתמש בכלי חיצוני על מנת לדגום את קובץ ה-Excel שלנו ועל סמך המזהה הייחודי של הרשומות שניתן בו, לשלוף את הרשומות הנדרשות מ-Salesforce, בתוספת כל השדות הנוספים אותם אנחנו צריכים. בפוסט הזה נלמד איך לעשות זאת עם הכלי החינמי Pentaho Data Integration.

התקנת Pentaho Data Integration (PDI)

  1. להורדת Pentaho Data Integration לחץ כאן.
  2. לאחר שההורדה הסתיימה לחץ מקש ימני בעכבר על הקובץ ובחר באפשרות Extract All... Extract All...
  3. בחר נתיב לחילוץ הקובץ ולחץ על Extract. Select a Destination and Extract Files
  4. לאחר שחילוץ הקובץ יסתיים יפתח חלון עם התיקייה data-integration. פתח אותה. data-integration Folder

יצירת קובץ Excel עם רשימת מזהים ייחודיים

  1. פתח את Microsoft Excel.
  2. צור קובץ חדש ב-Excel עם העמודה Israeli ID.
  3. מלא את הערכים הבאים בשדה Israeli ID:
    1. 111222333
    2. 444555666
    3. 777888999
    Excel List
  4. שמור את הקובץ. בדוגמה שלנו קראנו לקובץ contacts.xlsx.

יצירת רשימת אנשי קשר לייבוא מ-Salesforce

  1. פתח את סביבת ה-Salesforce שלך.
  2. הוסף לאובייקט Contact שדה בשם Israeli ID מסוג Text באורך 9 תווים. השדה הזה משמש רק להדגמה.
  3. צור שלושה אנשי קשר, Contacts, והזן עבור כל אחד מהם את אחד משלושת מספרי תעודת הזהות שכתבת בקובץ ה-Excel בשדה Israeli ID, כתובת Email בשדה Email ומספר טלפון בשדה Phone. Contacts List

יצירת טרנספורמציה

עכשיו, כשיש לנו את קובץ ה-Excel שלנו, את הרשומות ב-Salesforce שנרצה לשלוף ואת PDI מותקנת, נוכל ליצור את התהליך לייבוא הנתונים עבור הרשומות.

  1. בתוך התיקייה data-integration שנוצרה עבורנו לאחר חילוץ קובץ ה-zip שהורדנו, אתר את קובץ Spoon.bat ופתח אותו. Spoon Batch Fileהמתן לקובץ שיפתח. PDI Splash Screen
  2. לחץ על New Transformation. New Transformation
  3. מסרגל הצד, תחת הלשונית Design, הרחב את התיקייה Input.Select Input
  4. תחת התיקייה Input לחץ לחיצה כפולה על האופציה Microsoft Excel Input כדי להוסיף אותה לטרנספורמציה שלנו. Select Microsoft Excel Input
  5. לחץ לחיצה כפולה על השלב Microsoft Excel input כדי לפתוח את חלון ההגדרות שלו, ואז לחץ על הכפתור Browse ובחר את קובץ ה-Excel שיצרנו קודם. שים לב שיכול להיות שתצטרך לשנות את סוג הקובץ בחלונית הבחירה כדי לראות אותו ברשימה. Select Input File - Step 1 Select Input File - Step 2
  6. אחרי שהגדרנו את הנתיב לקובץ ה-Excel ובחרנו בו, לחץ על הכפתור Add כדי להוסיף אותו לרשימת הקבצים. Select Input File - Step 3
  7. (אופציונאלי) אם קובץ ה-Excel שלך הוא עם סיומת .xlsx, תחת השדה Spread sheet type (engine) בחר באפשרות Excel 2007 XLSX (Apache POI). Select Input File - Step 4
  8. לחץ על הלשונית !Sheets, לחץ על הכפתור Get Sheetname(s)... והעבר את Sheet1 מהעמודה Available items ל-Your selection ולחץ OK. Get Sheet Name
  9. לחץ על הלשונית !Fields ועל הכפתור Get fields from header row...
  10. שנה את ה-Type של השדה Israeli ID מ-Number ל-String, את ה-Length ל-9 ובשדה Format הכנס 9 Hashtags. השינויים האלו יבטיחו שכשנריץ את את הטרנספורמציה, מספר ת"ז יחשב כטקסט ולא מספר. Get Fields
  11. (אופציונאלי) לחץ על הכפתור Preview rows כדי לראות את השורות מקובץ ה-Excel.
  12. לחץ OK לאישור.
  13. בסרגל הצד, תחת התיקייה Input ממנה בחרנו את Microsoft Excel input, מצא את Salesforce input וגרור אותו מסרגל הצד לתוך אזור העבודה שלנו כדי להוסיף אותו לטרנספורמציה שלנו. Get Salesforce Input
  14. לחץ לחיצה כפולה על השלב Salesforce input כדי לפתוח את חלונית ההגדרות שלו.
    1. תחת Salesforce Webservice URL השתמש בכתובת ברירת המחדל אם אתה מתחבר לסביבת ייצור, או שנה את המילה login ל-test אם אתה מתחבר ל-Sandbox או Scratch org.
    2. תחת Username הכנס את שם המשתמש אתו אתה מתכוון להתחבר לסביבה.
    3. תחת Password הכנס את הסיסמה של המשתמש אתו אתה מתכוון להתחבר לסביבה ואחריה את ה-Security Token שלו, אלא אם אתה מתחבר לסביבה מ-IP שהוגדר בסביבה תחת ה-Login IPs white list.
    4. (אופציונאלי) אם למשתמש אתו אתה רוצה להתחבר מ-PDI אין Security token, עקוב אחרי השלבים הכתובים בהמשך סעיף זה. אם יש לו כבר Security token, אם הוא כבר משמש לחיבור API ממקום אחר למשל, ברר עם מי שיצר את החיבור האחר ומשתמש בו מה ה-Token הנוכחי של המשתמש והשתמש בו, אחרת חיבורי ה-API האחרים יפסיקו לעבוד!

      כדי להפיק Security token חדש עבור המשתמש אתו אתה מתכוון להתחבר בצע את השלבים הבאים:
      1. התחבר לסביבת היעד שלך עם המשתמש אתו אתה רוצה להתחבר מ-PDI.
      2. לחץ על התמונה של המשתמש בצד ימין-עליון של המסך ובחר ב-Settings. User Settings
      3. מסרגל הצד בהגדרות המשתמש בחר ב-Reset My Security Token Reset Security Token
      4. בעמוד שנפתח לחץ על הכפתור Reset Security Token כדי לקבל את ה-Token לתיבת המייל של המשתמש. Reset Security Token Button
    5. לבדיקת החיבור, לחץ על הכפתור Test Connection. הודעה על הצלחת החיבור צריכה להופיע כמו בתמונה הבאה: Connect to Salesforce
    6. כעת נכתוב את השאילתה שתחזיר לנו את אנשי הקשר מ-Salesforce. במסך הגדרות החיבור ל-Salesforce, סמן את תיבת הסימון Specify query והזן לתוך השדה SOQL את השאילתה כפי שניתן לראות בתמונה הבאה: Query Contacts
    7. כעת נעבור ללשונית Fields, נלחץ על הכפתור Get fields ונשנה את הגדרות השדות שהוחזרו מ-Salesforce כך שיראו כמו בתמונה הבאה. PDI מנסה לפענח את סוג השדה והפורמט שלו באופן אוטומטי, אבל לפעמים הוא טועה, ולכן נתקן אותו. Get Fields for Contacts
    8. (אופציונאלי) לחץ על הכפתור Preview rows כדי לראות את הרשומות עם השדות ש-PDI מחזיר מ-Salesforce.
    9. לחץ OK.
    10. מעולה, עד עכשיו יצרנו שני שלבים, שכל אחד מהם מביא נתונים ממקור אחר. כעת מה שעלינו לעשות הוא להחזיר נתונים מהשלב Salesforce input על סמך המזהים הייחודיים מהשלב Microsoft Excel input. כדי לעשות את זה נתחיל בהוספת השלב Stream lookup לטרנספורמציה שלנו. בסרגל הצד Design, בשדה חיפוש, הקלד את המילה lookup.
    11. מהתוצאות המופיעות מהסעיף הקודם, גרור ושחרר את השלב Stream lookup לשטח העבודה שלנו. Add Stream Lookup
    12. לחץ על השלב Microsoft Excel input ולחץ על הסמל של Output connection כדי למתוח חץ חיבור בין השלב Microsoft Excel input והשלב Stream lookup. בצע את אותו הדבר כדי לחבר את Salesforce input ל-Stream lookup. Add Output Connector Two Output Connections
    13. כעת נגדיר את ה-Lookup עצמו. לחץ פעמיים על השלב Stream lookup כדי לפתוח את ההגדרות שלו.
      1. בשדה Lookup step בחר Salesforce input.
      2. תחת The key(s) to look up the value(s), תחת Field בחר בשדה Israeli ID מקובץ ה-Excel, ותחת השדה LookupField בחר ב-Israeli_ID__c. פה אנחנו בעצם אומרים ל-Lookup שעליו לקחת את הערך מהשדה Israeli ID ולחפש אתו בשדה Israeli_ID__c ברשומות המגיעות Salesforce input.
      3. תחת Specify the fields to retrieve בחר את השדות שתרצה שיוחזרו מ-Salesforce input, הסוג שלהם ושם שיבדיל ביניהם ובין השדות המגיעים מקובץ ה-Excel עם אותם השמות. לחץ OK לסיום.
      Lookup Settings
    14. כעת נלחץ על כפתור ה-Run ויפתח עבורנו חלון בשם Run options. נלחץ על הכפתור Run כדי להריץ את הטרנספורמציה שלנו. PDI תציג לנו הודעה עם בקשה לשמירת הטרנספורמציה לפני הרצה. לחץ על Yes ושמור את הקובץ. הטרנספורמציה שלנו תרוץ מיד אחרי שנשמור את הקובץ.Run Save and Run
    15. לאחר שהטרנספורמציה שלנו תסיים לרוץ נראה סימני V ירוקים (✅) ליד השלבים השונים. Green Marks
    16. אם תלחץ על השלב Microsoft Excel input ואז על הלשונית Preview data בתחתית המסך, תוכל לראות את הנתונים ש-PDI הביאה מהשלב הזה: Microsoft Excel Input Preview Data
    17. אם תלחץ על השלב Salesforce input ואז על הלשונית Preview data בתחתית המסך, תוכל לראות את הנתונים ש-PDI הביאה מ-Salesforce. בדוגמה שלנו היא הביאה רק שלוש רשומות Contact, אבל אם היו לנו יותר רשומות, היא הייתה מציגה גם אותן, בהתאם לשאילתה שהגדרנו. Salesforce Input Preview Data
    18. אם תלחץ על השלב Stream lookup ואז על הלשונית Preview data בתחתית המסך, תוכל לראות את השדה על סמכו בוצע ה-lookup, במקרה הזה Israeli ID, כפי שהגיע מקובץ ה-Excel שלנו, ואת הערכים שהוחזרו עבורו מה-Lookup תחת השדות Email from Salesforce ו-Phone from Salesforce. Stream Lookup Preview Data
    19. נפלא! אלה הנתונים שרצינו! כעת נייצא אותם לקובץ Excel חדש. מסרגל הצד, לחץ על האיקס לצד תיבת החיפוש כדי לבטל אותו, לחץ על התיקייה Output וגרור את השלב Microsoft Excel output לאזור העבודה שלנו. Add Microsoft Excel Output
    20. מתח Output Connector מהשלב Stream lookup לשלב Microsoft Excel output החדש שיצרת על ידי לחיצה על Stream lookup, לחיצה על הסמל Output connector ומתיחת החץ מ-Stream lookup ל-Microsoft Excel output כפי שעשינו כאן. Add Output Connector to Microsoft Excel Output
    21. לחץ פעמיים על השלב Microsoft Excel output כדי לפתוח את חלון ההגדרות שלו.
    22. לחץ על הכפתור Browse..., תן לקובץ שם ובחר איפה תרצה שישמר. Microsoft Excel Output Settings - Step 1
    23. לחץ על הלשונית Content ובשדה Encoding בחר UTF-8 כדי להבטיח שתוכן הקובץ ישמר בצורה תקינה גם כשהטקסט בו בעברית. Microsoft Excel Output Settings - Content Encoding
    24. לחץ על הלשונית Fields ולחץ על הכפתור Get Fields. לחץ OK לסיום. המסך שלך אמור להיראות כמו בתמונה הבאה: Microsoft Excel Output Settings - Fields
    25. שמור את הטרנספורמציה ולחץ על Run כדי להריץ אותה.
    26. פתח את התיקייה בה הגדרת שישמר קובץ ה-Excel מהשלב Microsoft Excel output ופתח את הקובץ שנוצר. הרחב את העמודות כדי לראות את כל התוכן בצורה ברורה, הוא אמור להיראות כמו בתמונה הבאה: Final Output
    27. זהו! קיבלנו את הנתונים שרצינו מ-Salesforce על סמך מספר תעודת הזהות של איש הקשר.

      כמה נקודות חשובות לסיום:
      1. הנתון על סמכו אנחנו שולפים את הנתונים מ-Salesforce צריך להיות מזהה ייחודי ב-Salesforce, אחרת ה-Lookup פשוט יחזיר את ערכי השדות עבור הרשומה הראשונה שהוא מוצא ב-Salesforce עם המזהה הזה. במקרה שלנו המזהה, מספר תעודת זהות, הוא ייחודי והדבר נאכף ברמת הגדרת השדה כ-Unique ב-Salesforce.
      2. ניתן לשנות את ההפניה מהשלב Microsoft Excel input כדי שתצביע על קובץ Excel אחר כדי להתבסס על נתונים אחרים, או פשוט לערוך את קובץ ה-Excel הנוכחי.
      3. אחת האופציות תחת השלב Microsoft Excel output היא להוסיף לשם הקובץ את התאריך והשעה בה הוא נוצר. זאת אופציה מאוד נוחה אם נרצה ליצור עותק נפרד עבור תוצאות הטרנספורמציה כל פעם שהיא רצה. Microsoft Excel Output Settings - Save Data and Time