מה זה SOQL?
SOQL (ראשי תיבות של Salesforce Object Query Language) היא שפת שאילתות ייחודית שפותחה על ידי Salesforce
כדי לאפשר למפתחים, אדמינים ואנליסטים לשלוף מידע מתוך בסיס הנתונים של Salesforce.
בדומה ל־SQL המוכר, גם SOQL מאפשרת לבצע חיפושים מורכבים, אבל היא מותאמת לאובייקטים ולמערכת הנתונים
האובייקטית של Salesforce.
במקום טבלאות ושדות, SOQL מתייחסת ל־אובייקטים ושדות מותאמים אישית.
כך למשל, במקום לפנות ל־Customer בטבלה, מבצעים שאילתה על אובייקט כמו Account או Contact.
למה SOQL משמשת?
השימושים המרכזיים של SOQL כוללים:
שליפת מידע עסקי – למשל איתור כל הלקוחות עם עסקאות פתוחות בשווי מעל 100,000$.
אוטומציה וטריגרים – קוד Apex ב־Salesforce יכול להריץ SOQL כדי לאסוף נתונים בזמן אמת.
דוחות מותאמים אישית – כאשר כלי הדיווח המובנים לא מספיקים, מפתחים משתמשים ב־SOQL כדי להרכיב שאילתות מורכבות.
אינטגרציה עם מערכות חיצוניות – APIs של Salesforce מאפשרים להוציא נתונים ב־SOQL לשירותים חיצוניים לצורך BI,
ניתוח נתונים, או אינטגרציה עם ERP.
פיתוח ב־SOQL
פיתוח ב־SOQL מתבצע בעיקר בתוך Apex, כלי הפיתוח של Salesforce, אך גם דרך כלי אינטגרציה
(כמו Workbench או Data Loader).
דוגמאות בסיסיות:
שאילתה פשוטה על חשבונות
SELECT Id, Name, Industry FROM Account WHERE Industry = ‘Technology’
שאילתה עם חיבור בין אובייקטים
SELECT Name, Account.Name, Account.Industry FROM Contact WHERE Account.Industry = ‘Finance’
שאילתה עם מיון והגבלת תוצאות
SELECT Name, Amount FROM Opportunity ORDER BY Amount DESC LIMIT 10
מגבלות מרכזיות בפיתוח SOQL:
לא ניתן להשתמש ב־JOIN כמו ב־SQL רגיל. במקום זאת משתמשים ב־relationship queries.
אין תמיכה בפעולות כתיבה (INSERT/UPDATE) דרך SOQL – הוא מיועד לקריאה בלבד.
יש מגבלות של ביצועים (Governor Limits) ב־Salesforce – למשל מספר מקסימלי של רשומות שניתן לשלוף בשאילתה אחת.
שאלות ותשובות בנושא SOQL
מה ההבדל בין SOQL ל־SQL רגיל?
SQL עובדת מול בסיסי נתונים יחסיים, בעוד SOQL פועלת על אובייקטים היררכיים.
במקום JOIN מורכבים, משתמשים ב־relationship queries.
בנוסף, SOQL לא תומכת בפעולות כתיבה.
איך מתמודדים עם Governor Limits?
המפתח צריך לייעל את השאילתות, להשתמש ב־WHERE, LIMIT, ובחיפושים סלקטיביים כדי למנוע שליפת יתר.
לעיתים יש צורך בחלוקת השאילתות למקטעים (batching).
איך מבצעים Subquery ב־SOQL?
SOQL תומכת ב־subqueries בתוך קשרי Parent-Child. למשל:
SELECT Name, (SELECT LastName FROM Contacts) FROM Account
האם אפשר לבצע Aggregations ב־SOQL?
כן, SOQL תומכת בפונקציות כמו COUNT(), SUM(), MAX(), MIN(), אך בשונה מ־SQL רגיל, השימוש מוגבל וצריך
להיות בקונטקסט מסוים (GROUP BY).
איך אפשר לבצע חיפושים טקסטואליים מורכבים?
SOQL תומכת בחיפושים טקסטואליים, אך לחיפושים חופשיים משתמשים ב־SOSL (Salesforce Object Search Language),
שהיא שפה ייחודית לחיפוש טקסט מלא.
מה ההבדל בין SOQL ל־SOSL?
SOQL מחזירה נתונים מטבלה אחת או קשרים ישירים, בעוד SOSL מאפשרת חיפוש רחב בכמה אובייקטים במקביל
לפי מחרוזת טקסטואלית.
איך ניתן לבצע שאילתות על אובייקטים מותאמים אישית (Custom Objects)?
ניגשים אליהם בשם המערכת (API Name) שמסתיים ב־__c. לדוגמה:
SELECT Name, Custom_Field__c FROM MyCustomObject__c
האם אפשר להריץ SOQL מחוץ ל־Salesforce?
כן. באמצעות REST API או SOAP API של Salesforce ניתן להריץ שאילתות מרחוק ולקבל את התוצאות ב־JSON או XML.
איך מבטיחים ביצועים טובים בשאילתות מורכבות?
יש להשתמש באינדקסים (שדות מפתח, lookup fields), להימנע מ־SELECT *, ולהגביל רשומות עם תנאים מדויקים.
מה הקשר בין SOQL ל־Apex?
Apex משתמש ב־SOQL כדי להביא נתונים ולבצע לוגיקה על בסיסם. כמעט כל פיתוח אפליקטיבי ב־Salesforce שמשתמש בנתונים
כולל שילוב של Apex + SOQL.

