תרגום שאילתות באמצעות כלי התרגום האינטראקטיבי של SQL
במאמר הזה מוסבר איך לתרגם שאילתה מניבוב שונה של SQL לשאילתת GoogleSQL באמצעות כלי התרגום האינטראקטיבי של SQL ב-BigQuery. כלי התרגום האינטראקטיבי של SQL יכול לעזור לכם לקצר את הזמן והמאמץ שנדרשים להעברת עומסי עבודה ל-BigQuery. המסמך הזה מיועד למשתמשים שמכירים את מסוף Google Cloud .
אתם יכולים להשתמש בתכונת כללי התרגום כדי להתאים אישית את האופן שבו כלי ה-SQL האינטראקטיבי מתרגם SQL.
רשימת הדיאלקטים של SQL שנתמכים בכלי הזה לתרגום SQL מופיעה כאן.
רשימת המיקומים הנתמכים לעיבוד מופיעה במאמר מיקומים.
לפני שמתחילים
לפני ששולחים עבודת תרגום, צריך לבצע את השלבים הבאים.
הפעלת תרגום של SQL
מפעילים את ה-API הנדרש ומקבלים את ההרשאות שדרושות לשימוש בכלי לתרגום SQL ב-BigQuery. מידע נוסף זמין במאמר בנושא הפעלת תרגומים של SQL.
ההרשאות הנדרשות
כדי לקבל את ההרשאות שדרושות ליצירת משימות תרגום באמצעות כלי התרגום האינטראקטיבי, Translation API או כלי התרגום של SQL באצווה, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים במשאב parent:
-
צפייה במשימות העברה ומעקב אחריהן:
צפייה ב-MigrationWorkflow (
roles/bigquerymigration.viewer) -
שליחת משימות העברה:
MigrationWorkflow Editor (
roles/bigquerymigration.editor) -
גישה לקטגוריות של Cloud Storage עבור קלט וקבצים:
Storage Object Admin (
roles/storage.objectAdmin) – בקטגוריית המקור ובקטגוריית היעד של Cloud Storage.
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
התפקידים המוגדרים מראש האלה מכילים את ההרשאות שנדרשות ליצירת משימות תרגום באמצעות כלי התרגום האינטראקטיבי, Translator API או כלי התרגום של SQL באצווה. כדי לראות בדיוק אילו הרשאות נדרשות, אפשר להרחיב את הקטע ההרשאות הנדרשות:
ההרשאות הנדרשות
כדי ליצור משימות תרגום באמצעות כלי התרגום האינטראקטיבי, Translator API או כלי התרגום של SQL באצווה, נדרשות ההרשאות הבאות:
-
bigquerymigration.workflows.create -
bigquerymigration.workflows.get -
bigquerymigration.workflows.list -
bigquerymigration.workflows.delete -
bigquerymigration.subtasks.get -
bigquerymigration.subtasks.list -
storage.objects.get -
storage.objects.list -
storage.objects.create
יכול להיות שתקבלו את ההרשאות האלה באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש אחרים.
טיפול בפונקציות SQL שלא נתמכות באמצעות פונקציות UDF מסייעות
כשמתרגמים SQL מדיאלקט מקור ל-BigQuery, יכול להיות שלחלק מהפונקציות אין מקבילה ישירה. כדי לפתור את הבעיה הזו, שירות ההעברה ל-BigQuery (וגם קהילת BigQuery הרחבה) מספק פונקציות עזר מוגדרות על ידי המשתמש (UDF) שמשכפלות את ההתנהגות של הפונקציות האלה בניב המקור שלא נתמך.
פונקציות UDF כאלה נמצאות בדרך כלל במערך הנתונים הציבורי bqutil, כך ששאילתות מתורגמות יכולות להפנות אליהן בהתחלה באמצעות הפורמט bqutil.<dataset>.<function>(). לדוגמה, bqutil.fn.cw_count().
שיקולים חשובים לגבי סביבות ייצור:
bqutil אמנם מספק גישה נוחה לפונקציות העזר האלה שמוגדרות על ידי המשתמש לצורך תרגום ובדיקה ראשוניים, אבל לא מומלץ להסתמך ישירות על bqutil לעומסי עבודה של ייצור מכמה סיבות:
- ניהול גרסאות: פרויקט
bqutilמארח את הגרסה העדכנית של הפונקציות האלה, מה שאומר שההגדרות שלהן יכולות להשתנות לאורך זמן. הסתמכות ישירה עלbqutilעלולה להוביל להתנהגות בלתי צפויה או לשינויים שוברים בשאילתות הייצור אם הלוגיקה של UDF מתעדכנת. - בידוד תלות: פריסת פונקציות UDF בפרויקט שלכם מבודדת את סביבת הייצור משינויים חיצוניים.
- התאמה אישית: יכול להיות שתצטרכו לשנות את הפונקציות המוגדרות על ידי המשתמש או לבצע בהן אופטימיזציה כדי שיתאימו יותר ללוגיקה העסקית הספציפית או לדרישות הביצועים שלכם. אפשר לעשות את זה רק אם הם נמצאים בפרויקט שלכם.
- אבטחה וניהול: יכול להיות שמדיניות האבטחה של הארגון שלכם מגבילה גישה ישירה למערכי נתונים ציבוריים כמו
bqutilלעיבוד נתוני ייצור. העתקת פונקציות UDF לסביבה המבוקרת שלכם תואמת למדיניות כזו.
פריסת פונקציות UDF מסייעות בפרויקט:
כדי להשתמש בפונקציות העזר האלה בייצור בצורה מהימנה ויציבה, צריך לפרוס אותן בפרויקט ובמערך הנתונים שלכם. כך יש לכם שליטה מלאה בגרסה, בהתאמה האישית ובגישה שלהם. הוראות מפורטות להטמעה של פונקציות UDF זמינות במדריך להטמעה של פונקציות UDF ב-GitHub. במדריך הזה מפורטים הסקריפטים והשלבים שצריך לבצע כדי להעתיק את הפונקציות המוגדרות על ידי המשתמש לסביבה שלכם.
מיקומים
מתרגם ה-SQL האינטראקטיבי זמין רק במיקומי עיבוד נבחרים. מידע נוסף זמין במאמר מיקומים.
הגדרות תרגום מבוססות Gemini זמינות רק במיקומי עיבוד ספציפיים. מידע נוסף זמין במאמר בנושא מיקומים של נקודות קצה של מודלים של Google
תרגום שאילתה ל-GoogleSQL
כדי לתרגם שאילתה ל-GoogleSQL:
במסוף Google Cloud , עוברים לדף BigQuery.
בחלונית עורך, לוחצים על כלים > הגדרות תרגום.
ב-Source dialect, בוחרים את ניב ה-SQL שרוצים לתרגם.
זה שינוי אופציונלי. בקטע Processing location (מיקום העיבוד), בוחרים את המיקום שבו רוצים להריץ את משימת התרגום. לדוגמה, אם אתם נמצאים באירופה ולא רוצים שהנתונים שלכם יעברו את הגבולות של מיקום כלשהו, אתם יכולים לבחור באזור
eu.לוחצים על Save.
בחלונית עורך, לוחצים על כלים > הפעלת תרגום SQL.
החלונית עורך מתפצלת לשתי חלוניות.
בחלונית הימנית, מזינים את השאילתה שרוצים לתרגם.
לוחצים על תרגום.
מערכת BigQuery מתרגמת את השאילתה ל-GoogleSQL ומציגה אותה בחלונית שמופיעה מצד ימין. לדוגמה, בצילום המסך הבא מוצג תרגום של Teradata SQL:

אופציונלי: כדי להריץ את השאילתה המתורגמת ב-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, על סמך הכלל שהגדרתם.
אופציונלי: כדי להוסיף את הכלל הזה לשימוש בתרגומים עתידיים, מסמנים את התיבה שמירת הפרומפט הזה....
הכללים נשמרים בקובץ ה-YAML של הגדרות ברירת המחדל, או בקובץ
__default.ai_config.yaml. קובץ ה-YAML של ההגדרה נשמר בתיקייה ב-Cloud Storage כמו שצוין בשדה מיקום מקור הגדרת התרגום בהגדרות התרגום. אם מיקום המקור של הגדרות התרגום עדיין לא מוגדר, מופיע דפדפן תיקיות שמאפשר לכם לבחור תיקייה. קובץ 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.
כדי לציין הגדרות תרגום באמצעות ציון מיקום לקובצי המקור של הגדרות התרגום:
- בכלי לעריכת שאילתות, לוחצים על כלים > הגדרות תרגום.
בשדה Translation Configuration Source Location (מיקום מקור הגדרות התרגום), מציינים את הנתיב לקובצי הגדרות התרגום שמאוחסנים בתיקייה ב-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.
כדי לראות את התרגומים שנכשלו, עוברים לדף פרטי התרגום ב-BigQuery במסוף Google Cloud ופותחים את הכרטיסייה הודעות יומן.
כדי להבטיח שהתרגום יהיה מדויק ככל האפשר, אפשר להזין את הצהרות שפת הגדרת הנתונים (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 כדי לפתור את הבעיות האלה:
- ב-BigQuery במסוף Google Cloud , עוברים לדף Translation details (פרטי התרגום) ופותחים את הכרטיסייה Log Messages (הודעות יומן).
- לוחצים על השאילתה שמופיעה בה ההודעה
RelationNotFoundאוAttributeNotFoundבעמודה קטגוריה. - לוחצים על הצעה לתיקון.
- לוחצים על אישור.
- כדי לתרגם מחדש את השאילתה, לוחצים על תרגום.
תמחור
השימוש בכלי האינטראקטיבי לתרגום SQL לא כרוך בתשלום. עם זאת, נפח האחסון שמשמש לאחסון קובצי קלט ופלט כרוך בעמלות הרגילות. מידע נוסף מופיע במאמר בנושא תמחור אחסון.
המאמרים הבאים
מידע נוסף על השלבים הבאים בהעברת מחסן נתונים:
- סקירה כללית על מיגרציה
- הערכת תהליך ההעברה
- סקירה כללית של סכימה והעברת נתונים
- תרגום SQL באצווה
- צינורות להעברת נתונים
- אבטחה ומשילות מידע
- הכלי לאימות נתונים