תרגום שאילתות באמצעות המתרגם האינטראקטיבי של SQL

במאמר הזה מוסבר איך לתרגם שאילתה מניב SQL אחר לשאילתת GoogleSQL באמצעות המתרגם האינטראקטיבי של SQL ב-BigQuery. הכלי האינטראקטיבי לתרגום SQL יכול לעזור לכם לחסוך זמן ומאמץ כשאתם מעבירים עומסי עבודה ל-BigQuery. המסמך הזה מיועד למשתמשים שמכירים את מסוףGoogle Cloud או את Google Cloud CLI.

אתם יכולים להשתמש בתכונה "כללי תרגום" כדי להתאים אישית את האופן שבו המתרגם האינטראקטיבי של SQL מתרגם את ה-SQL.

כאן מפורטים הניבים של SQL שנתמכים בכלי הזה לתרגום SQL.

כאן מפורטת רשימת המיקומים שבהם אפשר לעבד נתונים.

לפני שמתחילים

לפני ששולחים משימת תרגום, צריך לבצע את השלבים הבאים.

הפעלת תרגומי SQL

מפעילים את ה-API הנדרש ומקבלים את ההרשאות שדרושות כדי להשתמש במתרגם SQL של BigQuery. מידע נוסף זמין במאמר הפעלת תרגומי SQL.

ההרשאות הנדרשות

כדי לקבל את ההרשאות שדרושות ליצירת משימות תרגום באמצעות המתרגם האינטראקטיבי, ה-Translation API או המתרגם של SQL באצווה, בקשו מהאדמין להקצות לכם את תפקידי ה-IAM הבאים במשאב parent:

  • צפייה במשימות ההעברה ומעקב אחריהן: צפייה ב-MigrationWorkflow ‏ (roles/bigquerymigration.viewer)
  • שליחת משימות העברה: עורך MigrationWorkflow (roles/bigquerymigration.editor)
  • גישה לקטגוריות של Cloud Storage לקלט ולקבצים: אדמין של אובייקטים ב-Storage‏ (roles/storage.objectAdmin) – בקטגוריית המקור והיעד של Cloud Storage.

להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.

התפקידים המוגדרים מראש האלו מכילים את ההרשאות שנדרשות כדי ליצור משימות תרגום באמצעות המתרגם האינטראקטיבי, ה-API לתרגום או המתרגם של SQL באצווה. כדי לראות בדיוק אילו הרשאות נדרשות, אפשר להרחיב את הקטע ההרשאות הנדרשות:

ההרשאות הנדרשות

כדי ליצור משימות תרגום באמצעות המתרגם האינטראקטיבי, ה-Translation 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) שמשכפלות את ההתנהגות של הפונקציות האלה בניב המקור שלא נתמך.

הפונקציות האלה מוגדרות בדרך כלל בקבוצת הנתונים הציבורית bqutil, וכך אפשר להפנות אליהן בהתחלה שאילתות מתורגמות בפורמט bqutil.<dataset>.<function>(). לדוגמה, bqutil.fn.cw_count().

שיקולים חשובים לגבי סביבות ייצור:

אמנם bqutil מציע גישה נוחה לפונקציות העזר האלה של UDF לצורך תרגום ובדיקה ראשוניים, אבל לא מומלץ להסתמך ישירות על bqutil לעומסי עבודה בסביבת הייצור מכמה סיבות:

  1. ניהול גרסאות: הפרויקט bqutil מארח את הגרסה העדכנית של הפונקציות האלה, ולכן ההגדרות שלהן יכולות להשתנות עם הזמן. הסתמכות ישירה על bqutil עלולה להוביל להתנהגות בלתי צפויה או לשינויים שעלולים לגרום לכשל בשאילתות בסביבת הייצור, אם הלוגיקה של פונקציית ה-UDF תתעדכן.
  2. בידוד של יחסי תלות: פריסת פונקציות UDF בפרויקט שלכם מבודדת את סביבת הייצור משינויים חיצוניים.
  3. התאמה אישית: יכול להיות שתצטרכו לשנות או לבצע אופטימיזציה של הפונקציות האלה כדי להתאים אותן ללוגיקה העסקית או לדרישות הביצועים הספציפיות שלכם. אפשר לעשות את זה רק אם הם נמצאים בפרויקט שלכם.
  4. אבטחה ופיקוח: יכול להיות שמדיניות האבטחה של הארגון שלכם מגבילה את הגישה הישירה למערכי נתונים ציבוריים כמו bqutil לצורך עיבוד נתוני ייצור. העתקת פונקציות UDF לסביבה המבוקרת שלכם תואמת למדיניות כזו.

פריסת פונקציות עזר בהתאמה אישית בפרויקט:

כדי להשתמש בפונקציות האלה בסביבת ייצור בצורה אמינה ויציבה, צריך לפרוס את פונקציות ה-UDF האלה בפרויקט ובמערך הנתונים שלכם. כך יש לכם שליטה מלאה על הגרסה, ההתאמה האישית והגישה. הוראות מפורטות לפריסת הפונקציות האלה מופיעות במדריך לפריסת פונקציות בהגדרת המשתמש ב-GitHub. במדריך הזה מפורטים הסקריפטים והשלבים הנדרשים להעתקת הפונקציות המוגדרות על ידי המשתמש לסביבה שלכם.

מיקומים

הכלי האינטראקטיבי לתרגום SQL זמין רק במיקומי עיבוד נבחרים. מידע נוסף זמין במאמר מיקומים.

הגדרות תרגום מבוססות-Gemini זמינות רק במיקומי עיבוד ספציפיים. מידע נוסף זמין במאמר מיקומי נקודות הקצה של המודלים של Google.

תרגום שאילתה ל-GoogleSQL

אפשר לתרגם שאילתה באמצעות מסוף Google Cloud או Google Cloud CLI.

המסוף

כדי לתרגם שאילתה ל-GoogleSQL:

  1. נכנסים לדף BigQuery במסוף Google Cloud .

    כניסה ל-BigQuery

  2. בחלונית העריכה, לוחצים על כלים > הגדרות תרגום.

  3. בקטע Source dialect, בוחרים את ניב ה-SQL שרוצים לתרגם.

  4. זה שינוי אופציונלי. בקטע Processing location, בוחרים את המיקום שבו רוצים להריץ את משימת התרגום. לדוגמה, אם אתם נמצאים באירופה ואתם לא רוצים שהנתונים שלכם יועברו מחוץ לאזור, בחרו באזור eu.

  5. לוחצים על Save.

  6. בחלונית Editor, לוחצים על Tools > Enable SQL translation.

    החלונית עריכה מתפצלת לשתי חלוניות.

  7. בחלונית הימנית, מזינים את השאילתה שרוצים לתרגם.

  8. לוחצים על תרגום.

    ‫BigQuery מתרגם את השאילתה ל-GoogleSQL ומציג אותה בחלונית השמאלית. לדוגמה, בצילום המסך הבא מוצג קוד Teradata SQL מתורגם:

    הצגת שאילתת Teradata SQL שתורגמה ל-GoogleSQL

  9. אופציונלי: כדי להריץ את שאילתת GoogleSQL המתורגמת, לוחצים על Run.

  10. אופציונלי: כדי לחזור לעורך ה-SQL, לוחצים על More > Disable SQL translation.

    החלונית עריכה חוזרת להיות חלונית אחת.

gcloud

כדי לתרגם שאילתה מ-Google Cloud CLI, משתמשים בפקודה gcloud alpha bq translation translate:

gcloud alpha bq translation translate \
  --source-dialect=SOURCE_DIALECT \
  --target-dialect=TARGET_DIALECT \
  --location=LOCATION \
  --input-file=INPUT_FILE

מחליפים את מה שכתוב בשדות הבאים:

  • ‫SOURCE_DIALECT: ניב ה-SQL שרוצים לתרגם, למשל teradata. במאמר ניבי SQL נתמכים תוכלו למצוא את הערכים הנתמכים.
  • ‫TARGET_DIALECT: הניב שאליו מתרגמים את השאילתה. לדוגמה, bigquery.
  • ‫LOCATION: המיקום שבו רוצים להריץ את משימת התרגום. לדוגמה, אם אתם נמצאים באירופה ואתם לא רוצים שהנתונים שלכם יחצו גבולות של מיקום, ציינו את האזור eu.
  • ‫INPUT_FILE: הקובץ המקומי שמכיל את השאילתה שרוצים לתרגם.

הפקודה מדפיסה את השאילתה המתורגמת ל-CLI של gcloud. כדי לכתוב את השאילתה המתורגמת לקובץ, מוסיפים את הדגל --output-file.

כדי לתרגם שאילתה בלי ליצור קובץ, מעבירים אותה דרך קלט סטנדרטי (stdin) ומשמיטים את הדגל --input-file:

echo 'SELECT 1;' | gcloud alpha bq translation translate \
  --source-dialect=teradata \
  --target-dialect=bigquery \
  --location=us

כדי להחיל את ההתאמות האישיות שבדרך כלל מגדירים בהגדרות התרגום, משתמשים בדגלים הבאים:

  • ‫--translation-config-files: רשימה מופרדת בפסיקים של קובצי YAML של הגדרות. שמות הקבצים צריכים להסתיים ב-.config.yaml.
  • ‫--metadata-gcs-uri: ה-URI של Cloud Storage של קובץ ZIP של מטא-נתונים.
  • ‫--explanation-output-file: קובץ מקומי שמקבל הסבר על התרגום שנוצר על ידי Gemini.

שימוש ב-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, מריצים תרגום אינטראקטיבי ולוחצים על ASSIST > Customize this translation.

התאמה אישית של פלט התרגום

כשהתפריט התאמה אישית מופיע, ממשיכים לשלבים הבאים.

  1. כדי ליצור כלל תרגום, אפשר להשתמש באחת מההנחיות הבאות או בשתיהן:

    • בהנחיה Find and replace a pattern, בשדה Replace מציינים את תבנית ה-SQL שרוצים להחליף, ובשדה With מציינים את תבנית ה-SQL שתחליף אותה.

      תבנית 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.

  2. לוחצים על תצוגה מקדימה.

  3. בתיבת הדו-שיח Suggestions generated by Gemini, בודקים את השינויים שבוצעו בשאילתת ה-SQL על סמך הכלל שלכם, באמצעות תרגום ה-SQL המשופר של Gemini.

    החלת השינויים מקובץ YAML של הגדרות שמבוססות על Gemini

  4. אופציונלי: כדי להוסיף את הכלל הזה לשימוש בתרגומים עתידיים, מסמנים את התיבה שמירת ההנחיה הזו….

    הכללים נשמרים בקובץ YAML של הגדרות ברירת המחדל, או ב-__default.ai_config.yaml. קובץ ה-YAML של ההגדרות נשמר בתיקייה של Cloud Storage, כמו שצוין בשדה Translation Configuration Source Location בהגדרות התרגום. אם לא הוגדר עדיין מיקום המקור של הגדרות התרגום, יופיע דפדפן תיקיות שבו תוכלו לבחור מיקום. קובץ תצורה מסוג YAML כפוף למגבלות הגודל של קובצי תצורה.

  5. כדי להחיל את השינויים המוצעים על שאילתת ה-SQL, לוחצים על Apply.

YAML

כדי ליצור כלל תרגום SQL משופר באמצעות Gemini, אתם יכולים ליצור קובץ YAML של הגדרות מבוססות-Gemini ולהעלות אותו ל-Cloud Storage. מידע נוסף זמין במאמר יצירת קובץ YAML של הגדרות שמבוסס על Gemini.

אחרי שמעלים ל-Cloud Storage כלל תרגום SQL ששופר באמצעות Gemini, אפשר להחיל את הכלל באופן הבא:

  1. נכנסים לדף BigQuery במסוף Google Cloud .

    כניסה ל-BigQuery

  2. בעורך השאילתות, לוחצים על Tools > Translation settings.

  3. בשדה Translation Configuration Source Location, מציינים את הנתיב לקובץ ה-YAML שמבוסס על Gemini ומאוחסן בתיקייה ב-Cloud Storage.

  4. לוחצים על Save.

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

אם יש הצעה של Gemini לקלט על סמך הכלל, תיפתח תיבת הדו-שיח Preview suggested changes עם השינויים האפשריים בקלט התרגום. (תצוגה מקדימה)

אם יש ל-Gemini הצעה לפלט על סמך הכלל, יופיע באנר של התראה בעורך הקוד. כדי לבדוק את ההצעות האלה וליישם אותן:

  1. לוחצים על Assist > View suggestions בכל אחד מהצדדים של עורך הקוד כדי לחזור לשינויים שהוצעו לשאילתה המתאימה.

    החלת השינויים מקובץ YAML של הגדרות שמבוססות על Gemini

  2. ‫בתיבת הדו-שיח Suggestions generated by Gemini, בודקים את השינויים ש-Gemini ביצע בשאילתת ה-SQL על סמך כלל התרגום.

  3. כדי להחיל את השינויים המוצעים על פלט התרגום, לוחצים על אישור.

עדכון קובץ YAML של הגדרות שמבוססות על Gemini

כדי לעדכן קובץ YAML קיים של הגדרות:

  1. בתיבת הדו-שיח הצעות שנוצרו ב-Gemini, לוחצים על הצגת קובץ התצורה של הכלל ב-Gemini.

  2. כשמופיע עורך ההגדרות, בוחרים את קובץ ה-YAML של ההגדרות שרוצים לערוך.

  3. מבצעים את השינוי ולוחצים על שמירה.

  4. לוחצים על Done כדי לסגור את עורך ה-YAML.

  5. מפעילים תרגום אינטראקטיבי כדי להחיל את הכלל המעודכן.

הסבר על התרגום

אחרי שמריצים תרגום אינטראקטיבי, אפשר לבקש הסבר טקסטואלי שנוצר על ידי Gemini. הטקסט שנוצר כולל סיכום של שאילתת ה-SQL המתורגמת. ‫Gemini גם מזהה הבדלים וחוסר עקביות בתרגום בין שאילתת ה-SQL המקורית לבין שאילתת GoogleSQL המתורגמת.

כדי לקבל הסבר על תרגום SQL שנוצר על ידי Gemini:

  1. כדי ליצור הסבר לתרגום SQL שנוצר על ידי Gemini, לוחצים על Assist ואז על Explain this translation.

    כפתור להסבר על התרגום.

תרגום באמצעות מזהה הגדרה של תרגום באצווה

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

  1. בעורך השאילתות, לוחצים על Tools > Translation settings.
  2. בשדה Translation Configuration ID, מזינים מזהה של הגדרת תרגום כדי להחיל את אותה הגדרת תרגום ממשימת העברה של BigQuery שהושלמה.

    כדי למצוא את מזהה הגדרת התרגום של משימה באצווה, בוחרים משימת תרגום באצווה בדף SQL translation ולוחצים על הכרטיסייה Translation Configuration. מזהה ההגדרה של תרגום באצווה מופיע בתור Resource name.

  3. לוחצים על Save.

תרגום עם הגדרות נוספות

אתם יכולים להריץ שאילתה אינטראקטיבית עם הגדרות תרגום נוספות, על ידי ציון קובצי YAML של הגדרות שמאוחסנים בתיקייה ב-Cloud Storage. הגדרות התרגום יכולות לכלול מטא-נתונים של אובייקטים ב-SQL או מידע על מיפוי אובייקטים ממסד הנתונים של המקור, שיכולים לשפר את איכות התרגום. לדוגמה, כדי לשפר את איכות התרגום האינטראקטיבי של SQL, כדאי לכלול מידע על DDL או סכימות ממסד הנתונים של המקור.

כדי לציין הגדרות תרגום באמצעות מיקום של קובצי המקור של הגדרות התרגום:

  1. בעורך השאילתות, לוחצים על Tools > Translation settings.
  2. בשדה Translation Configuration Source Location, מציינים את הנתיב לקובצי התצורה של התרגום שמאוחסנים בתיקייה ב-Cloud Storage.

    המתרגם האינטראקטיבי של SQL ב-BigQuery תומך בקובצי ZIP של מטא-נתונים שמכילים מטא-נתונים של תרגום ומיפוי שמות של אובייקטים. במאמר העלאת אובייקטים ממערכת קבצים מוסבר איך להעלות קבצים ל-Cloud Storage.

  3. לוחצים על 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.

כדי למצוא תרגומים שנכשלו, נכנסים לדף Translation details ב-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:

  1. ב-BigQuery במסוף Google Cloud , נכנסים לדף Translation details ופותחים את הכרטיסייה הודעות ביומן.
  2. לוחצים על השאילתה שמופיעה בה ההודעה RelationNotFound או AttributeNotFound בעמודה קטגוריה.
  3. לוחצים על הצעה לתיקון.
  4. לוחצים על אישור.
  5. כדי לתרגם מחדש את השאילתה, לוחצים על תרגום.

תמחור

השימוש במתרגם האינטראקטיבי של SQL הוא בחינם. עם זאת, האחסון של קובצי הקלט והפלט כרוך בעמלות הרגילות. למידע נוסף, ראו תמחור של Storage.

המאמרים הבאים

מידע נוסף על השלבים הבאים בהעברת מחסן נתונים: