תרגום שאילתות באמצעות כלי התרגום האינטראקטיבי של SQL
במאמר הזה מוסבר איך לתרגם שאילתה מדיאלקט SQL אחר לשאילתת GoogleSQL באמצעות כלי התרגום האינטראקטיבי של SQL ב-BigQuery. כלי התרגום האינטראקטיבי של SQL יכול לעזור לכם לקצר את הזמן ולהפחית את המאמץ כשאתם מעבירים עומסי עבודה ל-BigQuery. המסמך הזה מיועד למשתמשים שמכירים את מסוףGoogle Cloud .
אתם יכולים להשתמש בתכונת כללי התרגום כדי להתאים אישית את האופן שבו כלי ה-SQL האינטראקטיבי מתרגם SQL.
לפני שמתחילים
אם הפרויקט שלכם ב-Google Cloud CLI נוצר לפני 15 בפברואר 2022, צריך להפעיל את BigQuery Migration API באופן הבא:
במסוף Google Cloud , עוברים לדף BigQuery Migration API.
לוחצים על Enable.
הרשאות ותפקידים
בקטע הזה מפורטות ההרשאות ב-IAM (הכלי לניהול זהויות והרשאות גישה) שנדרשות לשימוש בכלי האינטראקטיבי לתרגום SQL, כולל תפקידי IAM מוגדרים מראש שמעניקים את ההרשאות האלה. בקטע הזה מוסבר גם על ההרשאות שדרושות כדי להגדיר הגדרות תרגום נוספות.
הרשאות לשימוש בכלי האינטראקטיבי לתרגום SQL
כדי לקבל את ההרשאות שנדרשות לשימוש בכלי התרגום האינטראקטיבי, צריך לבקש מהאדמין להקצות לכם ב-IAM את התפקיד עורך של כלי העברת נתונים (roles/bigquerymigration.editor) במשאב parent.
להסבר על מתן תפקידים, קראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
זהו תפקיד שמוגדר מראש וכולל את ההרשאות שנדרשות לשימוש בכלי התרגום האינטראקטיבי. כדי לראות בדיוק אילו הרשאות נדרשות, אפשר להרחיב את הקטע ההרשאות הנדרשות:
ההרשאות הנדרשות
כדי להשתמש בכלי התרגום האינטראקטיבי, נדרשות ההרשאות הבאות:
-
bigquerymigration.workflows.create -
bigquerymigration.workflows.get
יכול להיות שתקבלו את ההרשאות האלה באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש אחרים.
הרשאות להגדרת תצורות תרגום נוספות
אפשר להגדיר הגדרות תרגום נוספות באמצעות השדות מזהה הגדרת התרגום ומיקום המקור של הגדרת התרגום בהגדרות התרגום. כדי להגדיר את הגדרות התרגום האלה, צריך את ההרשאות הבאות:
bigquerymigration.workflows.getbigquerymigration.workflows.list
תפקיד ה-IAM המוגדר מראש הבא מספק את ההרשאות שנדרשות להגדרת תצורות תרגום נוספות:
roles/bigquerymigration.viewer
מידע נוסף על BigQuery IAM זמין במאמר בקרת גישה באמצעות IAM.
דיאלקטים נתמכים של SQL
כלי התרגום האינטראקטיבי של SQL ב-BigQuery יכול לתרגם את הדיאלקטים הבאים של SQL ל-GoogleSQL:
- Amazon Redshift SQL
- Apache HiveQL ו-Beeline CLI
- IBM Netezza SQL ו-NZPLSQL
- Teradata ו-Teradata Vantage:
- SQL
- שאילתת Teradata בסיסית (BTEQ)
- Teradata Parallel Transport (TPT)
בנוסף, יש תמיכה בתרגום של הדיאלקטים הבאים של SQL בגרסת טרום-השקה:
- Apache Impala SQL
- Apache Spark SQL
- Azure Synapse T-SQL
- GoogleSQL (BigQuery)
- Greenplum SQL
- IBM DB2 SQL
- MySQL SQL
- Oracle SQL, PL/SQL, Exadata
- PostgreSQL SQL
- Trino או PrestoSQL
- Snowflake SQL
- SQL Server T-SQL
- SQLite
- Vertica SQL
טיפול בפונקציות SQL שלא נתמכות באמצעות פונקציות UDF מסייעות
כשמתרגמים SQL מדיאלקט מקור ל-BigQuery, יכול להיות שלחלק מהפונקציות אין מקבילה ישירה. כדי לפתור את הבעיה הזו, שירות ההעברה ל-BigQuery (וגם קהילת BigQuery הרחבה) מספק פונקציות עזר מוגדרות על ידי המשתמש (UDF) שמשכפלות את ההתנהגות של הפונקציות האלה של דיאלקט המקור שלא נתמכות.
פונקציות UDF כאלה נמצאות לרוב במערך הנתונים הציבורי bqutil, כך ששאילתות מתורגמות יכולות להפנות אליהן בהתחלה באמצעות הפורמט bqutil.<dataset>.<function>(). לדוגמה, bqutil.fn.cw_count().
שיקולים חשובים לגבי סביבות ייצור:
למרות ש-bqutil מספק גישה נוחה לפונקציות העזר האלה של UDF לצורך תרגום ובדיקה ראשוניים, לא מומלץ להסתמך ישירות על bqutil לעומסי עבודה של ייצור מכמה סיבות:
- ניהול גרסאות: פרויקט
bqutilמארח את הגרסה העדכנית של הפונקציות האלה, כלומר ההגדרות שלהן יכולות להשתנות לאורך זמן. הסתמכות ישירה עלbqutilעלולה להוביל להתנהגות בלתי צפויה או לשינויים שוברים בשאילתות הייצור שלכם אם הלוגיקה של UDF מתעדכנת. - בידוד תלות: פריסת פונקציות UDF בפרויקט שלכם מבודדת את סביבת הייצור משינויים חיצוניים.
- התאמה אישית: יכול להיות שתצטרכו לשנות או לבצע אופטימיזציה של הפונקציות המוגדרות על ידי המשתמש כדי שיתאימו יותר ללוגיקה העסקית הספציפית או לדרישות הביצועים שלכם. הפעולה הזו אפשרית רק אם הם נמצאים בפרויקט שלכם.
- אבטחה וניהול: יכול להיות שמדיניות האבטחה של הארגון שלכם מגבילה גישה ישירה למערכי נתונים ציבוריים כמו
bqutilלעיבוד נתוני ייצור. העתקת פונקציות UDF לסביבה המבוקרת שלכם תואמת למדיניות כזו.
פריסת פונקציות UDF מסוג helper בפרויקט:
כדי להשתמש בפונקציות העזר האלה בייצור בצורה מהימנה ויציבה, צריך לפרוס אותן בפרויקט ובמערך הנתונים שלכם. כך יש לכם שליטה מלאה בגרסה, בהתאמה האישית ובגישה שלהם. הוראות מפורטות להטמעה של פונקציות UDF זמינות במדריך להטמעה של פונקציות UDF ב-GitHub. במדריך הזה מפורטים הסקריפטים והשלבים שנדרשים כדי להעתיק את הפונקציות המוגדרות על ידי המשתמש לסביבה שלכם.
מיקומים
כלי התרגום האינטראקטיבי של SQL זמין במיקומי העיבוד הבאים:
| תיאור האזור | שם האזור | פרטים | |
|---|---|---|---|
| אסיה והאוקיינוס השקט | |||
| דלהי | asia-south2 |
||
| הונג קונג | asia-east2 |
||
| ג'קארטה | asia-southeast2 |
||
| מלבורן | australia-southeast2 |
||
| מומבאי | asia-south1 |
||
| אוסקה | asia-northeast2 |
||
| סיאול | asia-northeast3 |
||
| סינגפור | asia-southeast1 |
||
| סידני | australia-southeast1 |
||
| טייוואן | asia-east1 |
||
| טוקיו | asia-northeast1 |
||
| אירופה | |||
| בלגיה | europe-west1 |
|
|
| ברלין | europe-west10 |
||
| מספר אזורים באיחוד האירופי | eu |
||
| פינלנד | europe-north1 |
|
|
| פרנקפורט | europe-west3 |
||
| לונדון | europe-west2 |
|
|
| מדריד | europe-southwest1 |
|
|
| מילאנו | europe-west8 |
||
| הולנד | europe-west4 |
|
|
| פריז | europe-west9 |
|
|
| שטוקהולם | europe-north2 |
|
|
| טורינו | europe-west12 |
||
| ורשה | europe-central2 |
||
| ציריך | europe-west6 |
|
|
| אמריקה | |||
| קולומבוס, אוהיו | us-east5 |
||
| דאלאס | us-south1 |
|
|
| אייווה | us-central1 |
|
|
| לאס וגאס | us-west4 |
||
| לוס אנג'לס | us-west2 |
||
| מקסיקו | northamerica-south1 |
||
| צפון וירג'יניה | us-east4 |
||
| אורגון | us-west1 |
|
|
| קוויבק | northamerica-northeast1 |
|
|
| סאו פאולו | southamerica-east1 |
|
|
| סולט לייק סיטי | us-west3 |
||
| סנטיאגו | southamerica-west1 |
|
|
| דרום קרוליינה | us-east1 |
||
| טורונטו | northamerica-northeast2 |
|
|
| ארה"ב במספר אזורים | us |
||
| אפריקה | |||
| יוהנסבורג | africa-south1 |
||
| MiddleEast | |||
| דמאם | me-central2 |
||
| דוחה | me-central1 |
||
| ישראל | me-west1 |
||
הגדרות תרגום מבוססות Gemini זמינות רק במיקומי עיבוד ספציפיים. מידע נוסף זמין במאמר מיקומים של נקודות קצה של מודלים של Google
תרגום שאילתה ל-GoogleSQL
כדי לתרגם שאילתה ל-GoogleSQL:
במסוף Google Cloud , עוברים לדף BigQuery.
בחלונית עורך, לוחצים על עוד ואז בוחרים באפשרות הגדרות תרגום.
ב-Source dialect, בוחרים את ניב ה-SQL שרוצים לתרגם.
זה שינוי אופציונלי. בקטע מיקום העיבוד, בוחרים את המיקום שבו רוצים שהעבודה של התרגום תתבצע. לדוגמה, אם אתם נמצאים באירופה ולא רוצים שהנתונים שלכם יעברו את הגבולות של מיקום כלשהו, אתם יכולים לבחור באזור
eu.לוחצים על Save.
בחלונית Editor (עורך), לוחצים על More (עוד) ואז על Enable SQL translation (הפעלת תרגום SQL).
החלונית עורך מתפצלת לשתי חלוניות.
בחלונית הימנית, מזינים את השאילתה שרוצים לתרגם.
לוחצים על תרגום.
מערכת BigQuery מתרגמת את השאילתה ל-GoogleSQL ומציגה אותה בחלונית שמופיעה בצד שמאל. לדוגמה, בצילום המסך הבא מוצג SQL מתורגם של Teradata:

אופציונלי: כדי להריץ את שאילתת GoogleSQL המתורגמת, לוחצים על הפעלה.
אופציונלי: כדי לחזור לכלי לעריכת SQL, לוחצים על סמל האפשרויות הנוספות ואז על השבתת התרגום של SQL.
החלונית עורך חוזרת להיות חלונית אחת.
שימוש ב-Gemini עם כלי התרגום האינטראקטיבי של SQL
אתם יכולים להגדיר את מתרגם ה-SQL האינטראקטיבי כדי לשנות את האופן שבו הוא מתרגם את ה-SQL של המקור. כדי לעשות זאת, אתם יכולים לספק כללים משלכם לשימוש ב-Gemini בקובץ הגדרות YAML, או לספק קובץ הגדרות YAML שמכיל מטא-נתונים של אובייקט SQL או מידע על מיפוי אובייקטים.
יצירה והחלה של כללי תרגום משופרים ב-Gemini
אתם יכולים ליצור כללי תרגום כדי להתאים אישית את האופן שבו מתורגמת שאילתת SQL על ידי הכלי האינטראקטיבי לתרגום SQL. מתרגם ה-SQL האינטראקטיבי מתאים את התרגומים שלו על סמך כללי תרגום של SQL שמשופר על ידי Gemini שאתם מקצים לו, וכך מאפשר לכם להתאים אישית את תוצאות התרגום בהתאם לצרכים שלכם בתהליך ההעברה.
כדי ליצור כלל תרגום ל-SQL עם Gemini, אפשר ליצור אותו במסוף או ליצור קובץ תצורה מסוג YAML ולהעלות אותו ל-Cloud Storage.
המסוף
כדי ליצור כלל תרגום SQL משופר על ידי Gemini עבור קלט SQL, כותבים שאילתת SQL לקלט בעורך השאילתות ואז לוחצים על ASSIST > Customize. (תצוגה מקדימה)
באופן דומה, כדי ליצור כלל תרגום SQL משופר על ידי Gemini עבור פלט ה-SQL, מריצים תרגום אינטראקטיבי ואז לוחצים על עזרה > התאמה אישית של התרגום.
כשמופיע התפריט התאמה אישית, ממשיכים לשלבים הבאים.
כדי ליצור כלל תרגום, משתמשים באחת מההנחיות הבאות או בשתיהן:
בהנחיה Find and replace a pattern (חיפוש והחלפה של תבנית), מציינים תבנית SQL שרוצים להחליף בשדה Replace (החלפה), ותבנית SQL להחלפה בשדה With (ב).
תבנית SQL יכולה להכיל כל מספר של הצהרות, סעיפים או פונקציות בסקריפט SQL. כשיוצרים כלל באמצעות ההנחיה הזו, תרגום ה-SQL המשופר של Gemini מזהה מקרים של תבנית ה-SQL הזו בשאילתת ה-SQL ומחליף אותה באופן דינמי בתבנית SQL אחרת. לדוגמה, אתם יכולים להשתמש בהנחיה הזו כדי ליצור כלל שמחליף את כל המופעים של
months_between (X,Y)ב-date_diff(X,Y,MONTH).בשדה Describe a change to the output (תיאור שינוי בפלט), מקלידים שינוי בפלט של תרגום ה-SQL בשפה טבעית.
כשיוצרים כלל באמצעות ההנחיה הזו, תרגום ה-SQL המשופר על ידי Gemini מזהה את הבקשה ומבצע את השינוי שצוין בשאילתת ה-SQL.
לוחצים על תצוגה מקדימה.
בתיבת הדו-שיח הצעות שנוצרו על ידי Gemini, בודקים את השינויים שבוצעו בשאילתת ה-SQL על ידי תרגום ה-SQL המשופר של Gemini על סמך הכלל.
אופציונלי: כדי להוסיף את הכלל הזה לשימוש בתרגומים עתידיים, מסמנים את התיבה Save this prompt... (שמירת ההנחיה הזו...).
הכללים נשמרים בקובץ ברירת המחדל של הגדרות ה-YAML, או
__default.ai_config.yaml. קובץ ה-YAML של ההגדרה נשמר בתיקייה ב-Cloud Storage כמו שצוין בשדה מיקום מקור הגדרות התרגום בהגדרות התרגום. אם האפשרות Translation Configuration Source Location לא מוגדרת, יופיע דפדפן תיקיות שדרכו תוכלו לבחור תיקייה. קובץ YAML של תצורה כפוף למגבלות גודל קובץ התצורה.כדי להחיל את השינויים המוצעים על שאילתת ה-SQL, לוחצים על החלה.
YAML
כדי ליצור כלל תרגום ל-SQL שמשופר על ידי Gemini, אפשר ליצור קובץ YAML של הגדרה מבוססת-Gemini ולהעלות אותו ל-Cloud Storage. מידע נוסף זמין במאמר בנושא יצירת קובץ YAML של הגדרות שמבוסס על Gemini.
אחרי שמעלים כלל תרגום ל-SQL שמשופר על ידי Gemini ל-Cloud Storage, אפשר להחיל את הכלל באופן הבא:
במסוף Google Cloud , עוברים לדף BigQuery.
בעורך השאילתות, לוחצים על סמל האפשרויות הנוספות > הגדרות תרגום.
בשדה מיקום המקור של הגדרות התרגום, מציינים את הנתיב לקובץ ה-YAML שמבוסס על Gemini ומאוחסן בתיקייה ב-Cloud Storage.
לוחצים על Save.
אחרי השמירה, מריצים תרגום אינטראקטיבי. הכלי לתרגום אינטראקטיבי מציע שינויים בתרגומים על סמך הכללים בקובץ ה-YAML של ההגדרות, אם יש כזה.
אם יש ל-Gemini הצעה לקלט על סמך הכלל, מוצג הדו-שיח תצוגה מקדימה של השינויים המוצעים עם שינויים אפשריים בקלט התרגום. (תצוגה מקדימה)
אם יש ל-Gemini הצעה לגבי הפלט על סמך הכלל שהגדרתם, יופיע באנר התראה בכלי לעריכת קוד. כדי לבדוק את ההצעות האלה וליישם אותן:
לוחצים על עזרה > הצגת ההצעות באחד הצדדים של עורך הקוד כדי לחזור לשינויים המוצעים בשאילתה המתאימה.
בתיבת הדו-שיח הצעות שנוצרו על ידי Gemini, בודקים את השינויים שבוצעו על ידי Gemini בשאילתת ה-SQL על סמך כלל התרגום.
כדי להחיל את השינויים המוצעים על פלט התרגום, לוחצים על החלה.
עדכון קובץ YAML של הגדרות שמבוסס על Gemini
כדי לעדכן קובץ YAML קיים של הגדרות:
בתיבת הדו-שיח הצעות שנוצרו ב-Gemini, לוחצים על צפייה בקובץ התצורה של כלל Gemini.
כשמופיע עורך ההגדרות, בוחרים את קובץ ה-YAML של ההגדרה שרוצים לערוך.
מבצעים את השינוי ולוחצים על שמירה.
כדי לסגור את עורך ה-YAML, לוחצים על סיום.
מריצים תרגום אינטראקטיבי כדי להחיל את הכלל המעודכן.
הסבר על תרגום
אחרי שמריצים תרגום אינטראקטיבי, אפשר לבקש הסבר טקסטואלי שנוצר על ידי Gemini. הטקסט שנוצר כולל סיכום של שאילתת ה-SQL המתורגמת. בנוסף, Gemini מזהה הבדלים בתרגום וחוסר עקביות בין שאילתת ה-SQL המקורית לבין שאילתת GoogleSQL המתורגמת.
כדי לקבל הסבר על תרגום SQL שנוצר על ידי Gemini:
כדי ליצור הסבר על תרגום SQL שנוצר על ידי Gemini, לוחצים על עזרה ואז על הסבר על התרגום הזה.
תרגום באמצעות מזהה של הגדרות אישיות לתרגום קבוצתי
אפשר להריץ שאילתה אינטראקטיבית עם אותן הגדרות תרגום כמו במשימת תרגום באצווה, על ידי ציון מזהה של הגדרות תרגום באצווה.
- בעורך השאילתות, לוחצים על סמל האפשרויות הנוספות > הגדרות תרגום.
בשדה מזהה הגדרת התרגום, מציינים מזהה של הגדרת תרגום באצווה כדי להחיל את אותה הגדרת תרגום ממשימת העברה באצווה שהושלמה ב-BigQuery.
כדי למצוא את מזהה ההגדרה של תרגום באצווה של משימה, בוחרים משימת תרגום באצווה בדף SQL translation (תרגום SQL) ולוחצים על הכרטיסייה Translation Configuration (הגדרת תרגום). מזהה ההגדרה של התרגום באצווה מופיע כשם משאב.
לוחצים על Save.
תרגום עם הגדרות נוספות
אפשר להריץ שאילתה אינטראקטיבית עם הגדרות תרגום נוספות על ידי ציון קובצי YAML של הגדרות שמאוחסנים בתיקייה ב-Cloud Storage. הגדרות התרגום עשויות לכלול מטא-נתונים של אובייקט SQL או מידע על מיפוי אובייקטים ממסד הנתונים של המקור, שיכולים לשפר את איכות התרגום. לדוגמה, אפשר לכלול מידע על DDL או סכימות ממסד הנתונים של המקור כדי לשפר את איכות התרגום האינטראקטיבי של SQL.
כדי לציין הגדרות תרגום באמצעות מיקום של קובצי המקור של הגדרות התרגום:
- בעורך השאילתות, לוחצים על סמל האפשרויות הנוספות > הגדרות תרגום.
בשדה מיקום המקור של הגדרות התרגום, מציינים את הנתיב לקובצי הגדרות התרגום שמאוחסנים בתיקייה ב-Cloud Storage.
כלי התרגום האינטראקטיבי של SQL ב-BigQuery תומך בקובצי ZIP של מטא-נתונים שמכילים מטא-נתונים של תרגום ומיפוי של שמות אובייקטים. מידע על העלאת קבצים ל-Cloud Storage זמין במאמר העלאת אובייקטים ממערכת קבצים.
לוחצים על Save.
מגבלות על גודל קובץ התצורה
כשמשתמשים בקובץ תצורה של תרגום עם הכלי האינטראקטיבי לתרגום SQL ב-BigQuery, קובץ המטא-נתונים הדחוס או קובץ התצורה בפורמט YAML צריכים להיות קטנים מ-50MB. אם גודל הקובץ גדול מ-50MB, הכלי האינטראקטיבי לתרגום ידלג על קובץ התצורה הזה במהלך התרגום ויציג הודעת שגיאה דומה לזו:
CONFIG ERROR: Skip reading file "gs://metadata-file.zip". File size (150,000,000 bytes)
exceeds limit (50 MB).
שיטה אחת להקטנת הגודל של קובץ המטא-נתונים היא שימוש בדגלים --database או --schema כדי לחלץ רק מטא-נתונים של מסדי נתונים או סכימות שרלוונטיים לשאילתות הקלט של התרגום. מידע נוסף על השימוש בדגלים האלה כשיוצרים קובצי מטא-נתונים זמין במאמר דגלים גלובליים.
פתרון בעיות בתרגום
בטבלה הבאה ריכזנו כמה מהשגיאות הנפוצות ביותר שמתרחשות במהלך השימוש בכלי האינטראקטיבי לתרגום SQL.
RelationNotFound או בעיות בתרגוםAttributeNotFound
אחרי שתתרגמו שאילתה באמצעות כלי SQL אינטראקקטיבי לתרגום, יכול להיות שתיתקלו בשגיאה RelationNotFound או AttributeNotFound.
כדי למצוא תרגומים שנכשלו, עוברים לדף פרטי התרגום ופותחים את הכרטיסייה הודעות יומן.
כדי להבטיח את הדיוק הרב ביותר בתרגום, אפשר להזין את הצהרות שפת הגדרת הנתונים (DDL) לכל הטבלאות שמשמשות בשאילתה לפני השאילתה עצמה. לדוגמה, אם רוצים לתרגם את שאילתת Amazon Redshift select table1.field1, table2.field1
from table1, table2 where table1.id = table2.id;, מזינים את הצהרות ה-SQL הבאות לכלי האינטראקטיבי לתרגום SQL:
create table schema1.table1 (id int, field1 int, field2 varchar(16));
create table schema1.table2 (id int, field1 varchar(30), field2 date);
select table1.field1, table2.field1
from table1, table2
where table1.id = table2.id;
תיקון בעיות בתרגום באמצעות Gemini
כדי לתקן עבודות תרגום שנכשלו עם השגיאות RelationNotFound או AttributeNotFound, אפשר גם להשתמש ב-Gemini כדי לנסות לפתור את הבעיות האלה באמצעות השלבים הבאים.
עוברים לדף פרטי התרגום ופותחים את הכרטיסייה הודעות ביומן.
לוחצים על השאילתה שבעמודה קטגוריה מופיעה לידה ההודעה
RelationNotFoundאוAttributeNotFound.לוחצים על הצעה לתיקון.
לוחצים על אישור.
לוחצים על Translate כדי לתרגם מחדש את השאילתה.
תמחור
השימוש בכלי האינטראקטיבי לתרגום SQL לא כרוך בתשלום. עם זאת, האחסון שמשמש לאחסון קבצי קלט ופלט כרוך בעמלות הרגילות. מידע נוסף מופיע במאמר בנושא תמחור אחסון.
המאמרים הבאים
מידע נוסף על השלבים הבאים בהעברה של מחסן נתונים:
- סקירה כללית על מיגרציה
- הערכת תהליך ההעברה
- סקירה כללית של סכימה והעברת נתונים
- תרגום SQL באצווה
- Data pipelines
- אבטחת מידע ומשילות מידע
- הכלי לאימות נתונים