הפלאגין SAP table batch source (פלאגין SAP Table) מאפשר לקרוא נתונים מטבלאות או מתצוגות רגילות ומותאמות אישית של SAP. הוא מאפשר הטמעה של נתונים בכמות גדולה מיישומי SAP ב-BigQuery, או בכל מערכת יעד נתמכת אחרת, באמצעות Cloud Data Fusion. התוסף כולל את התכונות העיקריות הבאות:
- משתמש ב-SAP ECC, SAP S4/HANA או SAP BW כמערכת מקור
- לא משתמש ב-SAP CDC (סימון נתונים שהשתנו) כדי לעקוב אחרי נתונים חדשים ונתוני דלתא במקורות הנתונים ולחלץ אותם
- שימוש במצב חילוץ של קבוצות
- תמיכה בטבלאות SAP ובתצוגות ABAP CDS כמקורות נתונים
- גישה לנתוני SAP דרך שכבת האפליקציה
אפשר לקרוא נתונים מתוך:
- טבלאות שקופות
- טבלאות מקובצות לאשכולות
- שולחנות פול
- תצוגות ABAP CDS
- אובייקטים של SAP BW ADSO
גרסאות תוכנה נתמכות
| תוכנה | גרסאות |
|---|---|
| SAP S4/HANA | SAP S4/HANA 1909 ואילך |
| SAP ECC | SAP ERP6 NW 7.31 SP16 ואילך |
| SAP JCo | SAP JCo גרסה 3.0.20 ואילך |
| Cloud Data Fusion | 6.3 ואילך |
מידע נוסף על SAP ב- Google Cloudזמין בסקירה הכללית על SAP ב- Google Cloud.
לפני שמתחילים
מגדירים את המערכות והשירותים הבאים שמשמשים את הפלאגין SAP Table:
- הגדרת מערכת SAP ERP
התהליך הזה כולל את השלבים הבאים:
- מתקינים את קובצי ההעברה של SAP.
- מגדירים את ההרשאות והתפקידים הנדרשים ב-SAP.
- מגדירים את SAP Java Connector.
פריסת הפלאגין ב-Cloud Data Fusion.
- חשוב: צריך לבחור גרסת פלאגין שתואמת לגרסת Cloud Data Fusion.
- אם משדרגים את הגרסה של מופע או פלאגין של Cloud Data Fusion, צריך להעריך את ההשפעה של השינויים על היקף הפונקציונליות והביצועים של צינור הנתונים.
הגדרת קישוריות RFC בין Cloud Data Fusion ל-SAP.
- מוודאים שהתקשורת מופעלת בין מכונת Cloud Data Fusion לבין שרת SAP.
- למכונות פרטיות, צריך להגדיר קישור בין רשתות שכנות (peering) של רשת VPC.
- מערכת SAP ומופע Cloud Data Fusion צריכים להיות באותו פרויקט.
הגדרת הפלאגין
- עוברים לממשק האינטרנט של Cloud Data Fusion ולוחצים על Studio.
- מוודאים שהאפשרות Data Pipeline - Batch (צינור נתונים – אצווה) נבחרה (ולא Realtime (זמן אמת)).
- בתפריט מקור, לוחצים על טבלת SAP. צומת SAP Table מופיע בצינור.
- כדי להגדיר את המקור, עוברים לצומת SAP Table ולוחצים על Properties.
מזינים את המאפיינים הבאים. רשימה מלאה זמינה במאמר בנושא מאפיינים.
- מזינים תווית לצומת של טבלת SAP – לדוגמה,
SAP tables. מזינים את פרטי החיבור. אתם יכולים להגדיר חיבור חדש וחד-פעמי או חיבור קיים שאפשר להשתמש בו שוב.
חיבור חדש
כדי להוסיף חיבור חד-פעמי ל-SAP, פועלים לפי השלבים הבאים:
- משאירים את ההגדרה שימוש בחיבור מושבתת.
בקטע Connection (חיבור), מזינים את הפרטים הבאים מחשבון SAP בשדות האלה:
- בשדה שם הפניה, מזינים שם לחיבור שמזהה את המקור הזה לצורך מעקב אחר מקורות נתונים.
- בשדה SAP client (לקוח SAP), מזינים את שם הלקוח של מופע או סביבה ספציפיים ב-SAP. אדמין SAP יכול לספק את שם הלקוח.
- בשדה SAP language (שפת SAP), מזינים את שפת הכניסה ל-SAP. ברירת המחדל היא EN (אנגלית).
בוחרים באחד מסוגי החיבור הבאים.
- ישיר (דרך שרת האפליקציות של SAP). אם בוחרים בסוג ברירת המחדל הזה, מזינים מידע בשדות הבאים: SAP application server host, SAP system number ו-SAP router.
- מאוזן עומסים (דרך שרת ההודעות של SAP). אם בוחרים בסוג הזה, צריך להזין מידע בשדות הבאים: SAP Message Server host, SAP Message Server service or port number, SAP System ID (SID) ו-SAP logon group name.
בשדה SAP table/view name, מזינים את השם של הטבלה או התצוגה ממערכת SAP.
מזינים את פרטי הכניסה ל-SAP: מבקשים מאדמין SAP את שם המשתמש לכניסה ל-SAP ואת הסיסמה.
בשדה JCo Library Cloud Storage path (נתיב ספריית JCo ב-Cloud Storage), מזינים את הנתיב של SAP Java Connector (SAP JCo) ב-Cloud Storage שמכיל את קובצי ספריית SAP JCo שהעליתם.
כדי ליצור סכימה על סמך המטא-נתונים מ-SAP שממפה את סוגי הנתונים של SAP לסוגי הנתונים התואמים של Cloud Data Fusion, לוחצים על Get schema (קבלת סכימה). מידע נוסף זמין במאמר בנושא מיפוי סוגי נתונים.
אופציונלי: כדי לבצע אופטימיזציה של עומס ההטמעה מ-SAP, מזינים מידע בשדות הבאים:
באמצעות אפשרויות הסינון אפשר לחלץ רשומות על סמך תנאי בחירה, כמו עמודות עם קבוצה מוגדרת של ערכים. מגדירים את התנאים בתחביר OpenSQL בסעיף
WHERE. לדוגמה, השאילתה הזו מחזירה את כל השורות מהטבלהRosterשבהן הערך בעמודהSchoolIDהואSchoolID > 52:SELECT * FROM Roster WHERE SchoolID > 52;מידע נוסף זמין במאמר בנושא מסננים נתמכים.
בשדה Number of rows to fetch (מספר השורות לאחזור), אפשר להגביל את הנתונים שחולצו על ידי הזנת מספר שורות חיובי ושלם.
בשדה Number of splits (מספר הפיצולים), אפשר ליצור מחיצות כדי לחלץ רשומות נתונים במקביל, וכך לשפר את הביצועים. מספר הפיצולים יכול להשפיע על תהליכי העבודה של SAP, ולכן צריך לבחור אותו בקפידה.
בשדה גודל החבילה, מציינים את מספר הרשומות לחילוץ בקריאה יחידה לרשת SAP. גודל החבילה משפיע על הביצועים ועל המשאבים הזמינים, ולכן צריך לבחור אותו בקפידה.
חיבור לשימוש חוזר
כדי לעשות שימוש חוזר בחיבור קיים, פועלים לפי השלבים הבאים:
- מפעילים את האפשרות שימוש בחיבור.
- לוחצים על Browse connections (עיון בחיבורים).
לוחצים על שם החיבור.
אם לא קיים חיבור, כדי ליצור חיבור שאפשר להשתמש בו שוב, פועלים לפי השלבים הבאים:
- לוחצים על הוספת חיבור > SapTable.
- בדף Create a SapTable connection (יצירת חיבור ל-SapTable) שנפתח, מזינים שם ותיאור לחיבור.
- בשדה SAP client (לקוח SAP), מזינים את שם הלקוח של מופע או סביבה ספציפיים ב-SAP. אדמין SAP יכול לספק את שם הלקוח.
- בשדה SAP language (שפת SAP), מזינים את שפת הכניסה ל-SAP. ברירת המחדל היא EN (אנגלית).
בוחרים באחד מסוגי החיבור הבאים.
האפשרות המומלצת.- ישיר (דרך שרת האפליקציות של SAP). אם בוחרים בסוג ברירת המחדל הזה, מזינים מידע בשדות הבאים: SAP application server host, SAP system number ו-SAP router.
- מאוזן עומסים (דרך שרת ההודעות של SAP). אם בוחרים בסוג הזה, צריך להזין מידע בשדות הבאים: SAP Message Server host, SAP Message Server service or port number, SAP System ID (SID) ו-SAP logon group name.
מזינים את פרטי הכניסה ל-SAP: מבקשים מאדמין SAP את הערכים של שם המשתמש לכניסה ל-SAP ושל הסיסמה.
בשדה JCo Library Cloud Storage path (נתיב ספריית JCo ב-Cloud Storage), מזינים את הנתיב של SAP Java Connector (SAP JCo) ב-Cloud Storage שמכיל את קובצי ספריית SAP JCo שהעליתם.
אופציונלי: בשדה Additional SAP connection properties (מאפייני חיבור נוספים של SAP), מזינים צמדים של מפתח/ערך שצריכים לבטל את ברירות המחדל של SAP JCo.
לוחצים על יצירה.
- מזינים תווית לצומת של טבלת SAP – לדוגמה,
מאפיינים
| מאפיין (property) | יכולות מאקרו | מאפיין חובה | תיאור |
|---|---|---|---|
| תווית | לא | כן | השם של הצומת בצינור הנתונים. |
| שימוש בחיבור | לא | לא | שימוש בחיבור שאפשר לעשות בו שימוש חוזר. אם נעשה שימוש בחיבור, לא צריך לספק את פרטי הכניסה. מידע נוסף זמין במאמר בנושא ניהול קישורים. |
| שם הפניה | לא | כן | אם האפשרות Use connection (שימוש בחיבור) לא מופעלת, השדה הזה מופיע. השם של החיבור שבו רוצים להשתמש לצורך מעקב אחר מקורות נתונים. |
| שם | לא | כן | אם האפשרות Use connection (שימוש בחיבור) מופעלת, השדה הזה מופיע. השם של החיבור שאפשר להשתמש בו שוב. |
| SAP client | כן | כן | המופע או הסביבה במערכת SAP. |
| צילום תמונה | כן | כן | הפעלת צילומי מצב של נתונים ב-SAP. מתי כדאי להפעיל את קובצי ה-snapshot:
מתי כדאי להשבית את התמונות: כשמריצים כמה חילוצי נתונים בו-זמנית בכמויות גדולות. תמונות המצב משתמשות בטבלאות מאגר ב-SAP, מה שעלול להוביל לבעיות ב-SAP. out of memory אבל אחרי שחילוץ הנתונים מסתיים, הטבלה הזמנית מתרוקנת. |
| שפה של SAP | כן | כן | השפה שבה מוצגים ומעובדים ממשק המשתמש והנתונים של SAP. |
| סוג החיבור | לא | כן | סוג החיבור ל-SAP: Direct או Load balanced. |
| מארח שרת האפליקציות של SAP | כן | לא | רק עבור סוג החיבור Direct, שם המארח הזה הוא משרת האפליקציות של SAP, שמשמש כשכבת ביניים בין לקוחות SAP (כמו ממשק האינטרנט של SAP, דפדפני אינטרנט או אפליקציות לנייד) לבין מסד הנתונים הבסיסי. |
| מספר מערכת SAP | כן | לא | רק עבור סוג החיבור Direct, המספר הזה הוא המזהה הייחודי שמוקצה לכל מערכת SAP. לדוגמה,
00. |
| נתב SAP | כן | לא | רק עבור סוג החיבור Direct, זהו מחרוזת הנתב של שרת ה-proxy, שמספק ערוץ מאובטח לתקשורת בין מערכות SAP לבין לקוחות או שותפים חיצוניים. |
| מארח של שרת הודעות SAP | כן | לא | רק עבור סוג החיבור Load balanced, זהו שם המארח, שמקל על איזון העומסים בין כמה שרתים של אפליקציות ב-SAP. |
| מספר היציאה או השירות של שרת ההודעות של SAP | כן | לא | רק עבור סוג החיבור Load balanced, זוהי יציאת הרשת שבה שרת ההודעות של SAP מאזין לחיבורים נכנסים מלקוחות SAP ומשרתי אפליקציות בתוך SAP. |
| מזהה מערכת SAP (SID) | כן | לא | רק לסוג החיבור Load balanced, המזהה הזה מוקצה לכל מערכת SAP. |
| שם קבוצת הכניסה של SAP | כן | לא | השם של הקיבוץ הלוגי או ההגדרה של כמה שרתים של אפליקציות SAP. ערך ברירת המחדל הוא PUBLIC. |
| שם הטבלה או התצוגה ב-SAP | כן | כן | שם תקין של טבלה או תצוגה, שלא תלוי באותיות רישיות, שאפשר לחלץ ממנה את כל העמודות. |
| שם המשתמש בכניסה ל-SAP | כן | כן | שם המשתמש ב-SAP מומלץ: אם שם המשתמש משתנה מעת לעת, כדאי להשתמש במאקרו. |
| סיסמה לכניסה ל-SAP | כן | כן | סיסמה ל-SAP. מומלץ: להשתמש בפקודות מאקרו מאובטחות. |
| מזהה הפרויקט ב-GCP | כן | כן | מזהה הפרויקט (Google Cloud ). |
| נתיב GCS של ספריית SAP JCo | כן | כן | הנתיב ל-Cloud Storage שאליו העליתם את קובצי הספרייה של SAP JCo. |
| קבלת סכימה | לא רלוונטי | לא רלוונטי | התוסף יוצר סכימה על סמך המטא-נתונים מ-SAP, שממפה את סוגי הנתונים של SAP לסוגי הנתונים התואמים של Cloud Data Fusion. מיפוי סוגי נתונים |
| מאפיינים נוספים של חיבור SAP | כן | לא | מגדירים מאפייני SAP JCo נוספים כדי לשנות את ברירות המחדל של SAP JCo.
לדוגמה, הגדרה של jco.destination.pool_capacity = 10
מבטלת את קיבולת ברירת המחדל של מאגר החיבורים. |
| מסננים | כן | לא | תנאים שמוגדרים בתחביר של Open SQL ומסננים באמצעות פסקה של SQL
WHERE. חילוץ רשומות על סמך תנאים, כמו
רשומות בעמודות עם קבוצה מוגדרת של ערכים או טווח ערכים.
מידע נוסף זמין במאמר בנושא מסננים נתמכים. |
| מספר השורות לאחזור | כן | לא | מגביל את מספר הרשומות שחולצו.
|
| מספר הפיצולים ליצירה | כן | לא | יוצרת מחיצות כדי לחלץ רשומות במקביל. מנוע זמן הריצה יוצר את מספר המחיצות שצוין (ואת החיבורים ל-SAP) במהלך חילוץ הרשומות. חשוב להפעיל שיקול דעת כשמגדילים את הערך הזה, כי הוא מגדיל את מספר החיבורים בו-זמנית ל-SAP. מומלץ: לתכנן חיבורי SAP לכל צינור עיבוד נתונים, ולתכנן את המספר הכולל של צינורות עיבוד נתונים שפועלים בו-זמנית. אם הערך הוא 0 או אם לא מציינים ערך, Cloud Data Fusion בוחר ערך מתאים על סמך מספר המבצעים הזמינים, הרשומות לחילוץ וגודל החבילה. |
| גודל החבילה | כן | לא | מספר הרשומות לחילוץ בקריאה אחת לרשת SAP. זהו מספר הרשומות ש-SAP מאחסנת בזיכרון במהלך כל קריאה לחילוץ נתונים מהרשת. חשוב לנקוט משנה זהירות כשמגדירים את המאפיין הזה. צינורות נתונים מרובים שמחלצים נתונים יכולים להגדיל את השימוש בזיכרון, ולגרום לכשלים בגלל שגיאות Out of memory.
|
מסננים נתמכים
התנאים הבאים של המסננים נתמכים.
מסנן שמכיל אופרטור השוואה
אפשר להשתמש באופרטורים להשוואה כדי לבצע סינון מורכב יותר שמבוסס על השוואות בין ערכים.
תחביר
SELECT * FROM table_name WHERE column_name > value; \ SELECT * FROM table_name WHERE column_name BETWEEN value1 AND value2;
דוגמה
AUDAT GT '20230914'
מסנן שמכיל אופרטור LIKE
משתמשים באופרטורים LIKE להתאמת תבניות. כדי להתאים לכל תו, משתמשים בסמל % כתו כללי.
תחביר
SELECT * FROM table_name WHERE column_name LIKE 'pattern%';
דוגמה
ERNAM LIKE 'KIRAN%'
מסנן שמכיל אופרטור IN
משתמשים באופרטורים IN כדי לציין רשימת ערכים להתאמה.
תחביר
SELECT * FROM table_name WHERE column_name \ IN ('value1', 'value2', 'value3');
דוגמה
ERNAM IN ( 'LEE' , 'KIRAN' )
מסנן שמכיל אופרטור לוגי
משתמשים באופרטורים לוגיים כדי לציין רשימה של ערכים להתאמה.
תחביר
SELECT * FROM table_name WHERE condition1 AND condition2; \ SELECT * FROM table_name WHERE condition1 OR condition2; \ SELECT * FROM table_name WHERE NOT condition;
דוגמאות
( AUDAT EQ '20220615' ) AND ( ERNAM LIKE 'LEE%' )( AUDAT EQ '20220615' ) OR ( AUDAT EQ '20220617' )
מסנן שמכיל טווח תאריכים
אפשר להשתמש בטווח תאריכים כדי לאחזר שורות שבהן עמודה של תאריך ושעה נמצאת בטווח תאריכים ספציפי.
תחביר
SELECT * FROM table_name \ WHERE datetime_column >= 'start_date' AND datetime_column <= 'end_date';
דוגמה
AUDAT GE '20230910' AND AUDAT LE '20230914'
מסנן שמכיל השוואה בין תאריכים
אפשר להשתמש בהשוואות תאריכים כדי לאחזר שורות שבהן נעשה שימוש בנתוני תאריך ושעה.
תחביר
SELECT * FROM table_name WHERE datetime_column > 'target_date';
דוגמה
AUDAT GE '20230910' AND AUDAT LE '20230914'
מסנן שמשלב תאריך ושעה
אם עמודת התאריך והשעה כוללת גם תאריך וגם שעה, אפשר לסנן בהתאם.
תחביר
SELECT * FROM table_name \ WHERE datetime_column >= 'target_datetime' \ AND datetime_column <= 'target_datetime';
דוגמה
TIMESTAMP GE '20210602144800' AND TIMESTAMP LE '20210624080836'
(הפורמט של חותמת הזמן : YYYYMMDDHHMMSS)
סינון שמשלב כמה תנאים באמצעות אופרטורים לוגיים
אפשר לאחזר שורות שעומדות בכמה תנאים באמצעות אופרטורים לוגיים, כמו AND ו-OR.
תחביר
SELECT * FROM table_name \ WHERE (column1 = 'value1' AND column2 > value2) \ OR (column3 = 'value3' AND column4 < value4);
דוגמה
( ERNAM EQ 'LEE' AND AUDAT GT '20220722' ) \ OR ( BSTNK EQ 'PO54321065' AND BSTDK LT '20220714' )
סינון שמשלב תנאים מקוננים
אפשר לשלב תנאים באופן היררכי כדי ליצור מסננים מורכבים.
תחביר
SELECT * FROM table_name \ WHERE (column1 = 'value1' OR (column2 = 'value2' AND column3 > value3)) \ AND column4 = 'value4';
דוגמה
( ERDAT EQ '20220722' OR ( ERNAM EQ 'LEE' AND VDATU GT '20210623' ) ) \ AND FMBDAT EQ '20220722'
מסנן שמשתמש בשאילתות משנה
אפשר להשתמש בשאילתות משנה כדי לסנן לפי התוצאות של שאילתה אחרת.
תחביר
SELECT * FROM table_name \ WHERE column1 IN (SELECT related_column FROM other_table WHERE condition);
דוגמה
VBELN IN ( SELECT VBELN FROM VBAK WHERE ERNAM = 'LEE' )
סינון לפי שילוב של תנאי תאריך ותנאי ערך
אפשר לשלב בין תנאים שמבוססים על תאריכים לבין תנאים שמבוססים על ערכים במסנן מורכב.
תחביר
SELECT * FROM table_name \ WHERE (column1 = 'value1' OR column2 = 'value2') \ AND datetime_column > 'target_datetime';
דוגמה
( ERDAT EQ '20220722' OR ERNAM EQ 'LEE' ) AND VDATU GT '20210623'
מסנן שמכיל עיצוב תאריכים
ב-SAP, שדות התאריך והשעה תמיד נשמרים בלי - או
: ברמת מסד הנתונים.
תחביר
SELECT * FROM table_name \ WHERE datetime_column >= 'YYYY-MM-DD HH:MM:SS' \ AND datetime_column <= 'YYYY-M
לא אפשרי: מסנן שמכיל פונקציות ואופרטורים להשוואה
ב-SAP, אין תמיכה בפונקציות ב-WHERE clause של ה-QUERY.
לא אפשרי: מסנן שמכיל מרווחים
ב-SAP, הפונקציה NOW() לא נתמכת.
תחביר
SELECT * FROM table_name \ WHERE datetime_column >= NOW() - INTERVAL X DAY;
לא אפשרי: סינון של רכיב התאריך
ב-SAP, אין תמיכה בסינון לפי היסט.
דוגמה
WHERE YEAR+0(4) = 2023
מיפוי של סוגי נתונים
בטבלה הבאה מפורטים סוגי הנתונים של SAP עם הסוגים התואמים של Cloud Data Fusion.
| סוג הנתונים ב-SAP | סוג ABAP | תיאור של SAP | סוג הנתונים ב-Cloud Data Fusion |
|---|---|---|---|
INT1 (מספרי) |
b | מספר שלם של בייט אחד | int |
INT2 (מספרי) |
s | מספר שלם באורך 2 בייטים | int |
INT4 (מספרי) |
i | מספר שלם בן 4 בייטים | int |
INT8 (מספרי) |
8 | מספר שלם בגודל 8 בייט | ארוך |
DEC (מספרי) |
p | מספר ארוז בפורמט BCD (DEC) | עשרוני |
DF16_DEC, DF16_RAW (מספרי) |
a | נקודה צפה עשרונית 8 בייט IEEE 754r | double |
DF34_DEC, DF34_RAW (מספרי) |
e | נקודה צפה עשרונית 16 בייט IEEE 754r | double |
FLTP (מספרי) |
f | מספר בשיטת נקודה צפה בינארית | double |
CHAR, LCHR (תו) |
c | מחרוזת תווים | מחרוזת |
SSTRING, GEOM_EWKB (תו) |
מחרוזת | מחרוזת תווים | מחרוזת |
STRING (תו) |
מחרוזת | מחרוזת תווים CLOB | בייטים |
NUMC, ACCP (תו) |
n | טקסט מספרי | מחרוזת |
RAW, LRAW (בייט) |
x | נתונים בינאריים | בייטים |
RAWSTRING (בייט) |
xstring | BLOB של מחרוזת בייטים | בייטים |
DATS (Date/Time) |
d | תאריך | תאריך |
TIMS (Date/Time) |
t | שעה | פעם |
TIMS (Date/Time) |
utcl | (Utclong), חותמת זמן | חותמת זמן |
תרחישים לדוגמה
יש תמיכה בשני הקשרים לחילוץ:
- טבלאות ותצוגות של מסד נתונים של SAP
- SAP ABAP CDS
בכל אחד מההקשרים, התוסף SAP Table תומך בטבלאות ובתצוגות מסד נתונים רגילות ומותאמות אישית.
מגבלות
יש כמה מגבלות לתוסף SAP Table:
- היא לא תומכת בצירוף טבלאות.
- היא לא תומכת בתצוגות CDS עם פרמטרים.
- הוא לא תומך בשדות ללא מפתח.
- אם התכונה 'תמונות מצב' מופעלת, שימוש בגודל חבילה שגדול מ-30,000 עלול לגרום לכשלים בצינור. גודל החבילה הזה יכול להשתנות בהתאם למספר העמודות בטבלת SAP. אפשר לחשב את הגודל האופטימלי של חבילה לטבלה באמצעות הנוסחה הבאה: גודל השורה (במספר התווים) כפול 5.
- ב-Connection Manager אפשר לעיין בשמות של עד 1,000 טבלאות SAP.
- כשמתרחשת שגיאה בצינור, כמו שגיאה ב-sink, התוסף SAP Table
מנסה לנקות את כל התהליכים הפעילים בצד SAP שקשורים לחילוץ, על ידי קריאה ל-RFM המותאם אישית שמיועד לניקוי:
/GOOG/RFC_READ_TABLE_CLEANUP.