הפניה למשתני מערכת

‫BigQuery תומך במשתני המערכת הבאים עבור שאילתות עם כמה הצהרות או בתוך סשנים. אפשר להשתמש במשתני מערכת כדי להגדיר או לאחזר מידע במהלך ביצוע שאילתה, בדומה למשתנים של שפה פרוצדורלית שהוגדרו על ידי המשתמש.

שם סוג קריאה וכתיבה או קריאה בלבד תיאור
@@current_job_id STRING קריאה-בלבד מזהה המשימה שמופעלת כרגע. בהקשר של שאילתה מרובת-הצהרות, הפונקציה הזו מחזירה את העבודה שאחראית להצהרה הנוכחית, ולא לשאילתה המלאה מרובת-ההצהרות.
@@dataset_id STRING קריאה וכתיבה המזהה של מערך הנתונים שמוגדר כברירת מחדל בפרויקט הנוכחי. המזהה הזה משמש כשהשאילתה לא מציינת מערך נתונים לפרויקט. אפשר להשתמש בהצהרה SET כדי להקצות את @@dataset_id למזהה אחר של מערך נתונים בפרויקט הנוכחי. אפשר להגדיר את משתני המערכת @@dataset_project_id ו-@@dataset_id ולהשתמש בהם ביחד.
@@dataset_project_id STRING קריאה וכתיבה מזהה פרויקט ברירת המחדל שמשמש כשהפרויקט לא מצוין במערך נתונים שמשמש בשאילתה. אם לא מגדירים את @@dataset_project_id או אם מגדירים אותו לערך NULL, נעשה שימוש בפרויקט שבו מופעלת השאילתה (@@project_id). אפשר להשתמש בהצהרה SET כדי להקצות @@dataset_project_id למזהה פרויקט אחר. אפשר להגדיר את משתני המערכת @@dataset_project_id ו-@@dataset_id ולהשתמש בהם ביחד.
@@last_job_id STRING קריאה-בלבד מזהה המשימה של המשימה האחרונה שבוצעה בשאילתה הנוכחית עם כמה הצהרות, לא כולל המשימה הנוכחית. אם השאילתה עם כמה הצהרות מכילה הצהרות CALL, יכול להיות שהעבודה הזו נוצרה בהליך אחר.
@@location STRING קריאה וכתיבה המיקום שבו רוצים להריץ את השאילתה. @@location אפשר להגדיר רק מחרוזת מילולית עם מיקום תקין. משפט SET @@location חייב להיות המשפט הראשון בשאילתה. שגיאה מתרחשת אם יש חוסר התאמה בין @@location לבין הגדרת מיקום אחרת בשאילתה. כדי לשפר את זמן האחזור של שאילתות שמוגדרות עם @@location, אפשר להשתמש במצב יצירה אופציונלית של משימות. אפשר להשתמש במשתנה המערכת @@location בתוך פונקציות UDF של SQL ופונקציות טבלה.
@@max_staleness_override INTERVAL קריאה וכתיבה הפקודה מחליפה את מרווח הזמן המקסימלי של נתונים לא עדכניים לכל הישויות הרלוונטיות שנכללות בשאילתה הנוכחית עם כמה הצהרות או בסשן הנוכחי. הישויות הרלוונטיות כוללות טבלאות בסטרימינג, טבלאות של לכידת נתונים משתנים (CDC) ותצוגות חומריות שנכללות בשאילתה הנוכחית עם כמה הצהרות או בסשן הנוכחי.

כברירת מחדל, בכל פעם שמריצים שאילתה, BigQuery מחזיר את התוצאות העדכניות ביותר או מתייחס לאפשרות max_staleness שהוגדרה לישות. אפשר להשתמש ב-@@max_staleness_override כדי להתאים אישית באופן דינמי את התנהגות הנתונים המיושנים בלי לשנות את ההגדרות של הטבלה או התצוגה:

  • הפחתת זמן האחזור והעלויות של השאילתות: כדי לאפשר שימוש בנתונים לא עדכניים, צריך להגדיר את @@max_staleness_override כערך לא שלילי. לדוגמה, INTERVAL 10 MINUTE.
  • כדי לוודא שהתוצאות עדכניות לחלוטין: כדי לאלץ את השינויים או הרענונים שממתינים להחלה להתבצע בזמן ההרצה של השאילתה, צריך להגדיר את @@max_staleness_override ל-INTERVAL 0 SECOND.
  • מחיקת ההגדרה שחורגת מהכלל: כדי לחזור להגדרות ברמת הישותmax_staleness, מגדירים את @@max_staleness_override ל-NULL.
@@project_id STRING קריאה-בלבד מזהה הפרויקט ששימש להפעלת השאילתה הנוכחית. במסגרת הליך, @@project_id מתייחס לפרויקט שמריץ את השאילתה עם כמה הצהרות, ולא לפרויקט שבבעלותו ההליך.
@@query_label STRING קריאה וכתיבה תווית שאילתה לשיוך למשימות של שאילתות בשאילתה או בסשן הנוכחיים עם כמה הצהרות. אם מגדירים את התווית בשאילתה, כל עבודות השאילתה הבאות בסקריפט או בסשן יכללו את התווית הזו. אם המשתנה לא מוגדר בשאילתה, הערך שלו הוא NULL. דוגמה להגדרת משתנה המערכת הזה מופיעה במאמר שיוך משימות בסשן לתווית.
@@reservation STRING קריאה וכתיבה מאפשרת לציין או לשנות את ההזמנה שתשמש להרצת ההצהרות הבאות. הפורמט הנדרש הוא: projects/project_id/locations/location/reservations/reservation_id.

אם הערך הוא 'none', השאילתה מחויבת לפי תמחור לפי דרישה. כדי לעשות את זה, צריך להגדיר את reservation_override_mode בפרויקט או בארגון לערך ALLOW_ANY_OVERRIDE.

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

@@row_count INT64 קריאה-בלבד אם משתמשים בה בשאילתה עם כמה הצהרות וההצהרה הקודמת היא DML, הפונקציה מציינת את מספר השורות שנוספו, שונו או נמחקו כתוצאה מפקודת ה-DML הזו. אם ההצהרה הקודמת היא הצהרת `MERGE`,‏ @@row_count מייצג את המספר הכולל המשולב של השורות שנוספו, שונו ונמחקו. הערך הזה הוא NULL אם הוא לא נמצא בשאילתה עם כמה הצהרות.
@@script.bytes_billed INT64 קריאה-בלבד המספר הכולל של הבייטים שחויבו עד עכשיו בעבודת השאילתה הנוכחית עם כמה הצהרות. הערך הזה הוא NULL אם לא מוגדרת משרה.
@@script.bytes_processed INT64 קריאה-בלבד המספר הכולל של הבייטים שעברו עיבוד עד עכשיו בעבודת השאילתה הנוכחית עם כמה הצהרות. הערך הזה הוא NULL אם לא מוגדרת משרה.
@@script.creation_time TIMESTAMP קריאה-בלבד זמן היצירה של משימת השאילתה עם כמה הצהרות שמופעלת כרגע. הערך הוא NULL אם לא מצוין במשימה.
@@script.job_id STRING קריאה-בלבד מזהה המשימה של שאילתת ריבוי המשפטים שמופעלת כרגע. הערך הזה הוא NULL אם הוא לא מופיע במשימה.
@@script.num_child_jobs INT64 קריאה-בלבד מספר המשימות המשניות שהושלמו כרגע. הערך הזה הוא NULL אם הוא לא מופיע במשימה.
@@script.slot_ms INT64 קריאה-בלבד מספר אלפיות השנייה של משבצות שבהן נעשה שימוש עד עכשיו על ידי הסקריפט. הערך הוא NULL אם לא מצוין במשימה.
@@session_id STRING קריאה-בלבד מזהה הסשן שאליו משויכת השאילתה הנוכחית. אפשר להשתמש במשתנה המערכת @@session_id בתוך פונקציות בהגדרת משתמש של SQL, פונקציות של טבלאות ותצוגות לוגיות. אין תמיכה בשימוש במשתנה המערכת הזה בתצוגות חומריות.
@@time_zone STRING קריאה וכתיבה אזור הזמן שמוגדר כברירת מחדל לשימוש בפונקציות SQL שתלויות באזור זמן, אם לא מציינים אזור זמן כארגומנט. אפשר לשנות את @@time_zone באמצעות הצהרת SET לכל שם חוקי של אזור זמן. בתחילת כל סקריפט, @@time_zone מתחיל כ-“UTC”.

לצורך תאימות לאחור, ביטויים שמשמשים בסעיף OPTIONS או FOR SYSTEM TIME AS OF מוגדרים כברירת מחדל לאזור הזמן America/Los_Angeles, ואילו כל שאר הביטויים של תאריך ושעה מוגדרים כברירת מחדל לאזור הזמן UTC. אם הערך של @@time_zone הוגדר קודם בשאילתה מרובת ההצהרות, אזור הזמן שנבחר יחול על כל הביטויים של תאריך ושעה, כולל פסקי OPTIONS ו-FOR SYSTEM TIME AS OF.

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

דוגמאות

אתם לא יוצרים משתני מערכת, אבל אתם יכולים לשנות את ערך ברירת המחדל של חלק מהם:

SET @@dataset_project_id = 'MyProject';

בדוגמה הבאה, מרווח הזמן המקסימלי של נתונים לא עדכניים לשאילתות הבאות בסשן מוגדר ל-10 דקות:

SET @@max_staleness_override = INTERVAL 10 MINUTE;

כדי לאלץ את השאילתות להחזיר את התוצאות העדכניות ביותר ולהחיל שינויים בהמתנה בזמן ההרצה של השאילתה:

SET @@max_staleness_override = INTERVAL 0 SECOND;

כדי לאפס את ביטול ההגדרה של נתונים ישנים ולחזור להגדרות ברמת הטבלה, מגדירים את @@max_staleness_override לערך NULL:

SET @@max_staleness_override = NULL;

השאילתה הבאה מחזירה את אזור הזמן שמוגדר כברירת מחדל:

SELECT @@time_zone AS default_time_zone;
+-------------------+
| default_time_zone |
+-------------------+
| UTC               |
+-------------------+

אפשר להשתמש במשתני מערכת עם שאילתות DDL ו-DML. לדוגמה, הנה כמה דרכים להשתמש במשתנה המערכת @@time_zone כשיוצרים ומעדכנים טבלה:

BEGIN
  CREATE TEMP TABLE MyTempTable
  AS SELECT @@time_zone AS default_time_zone;
END;
CREATE OR REPLACE TABLE MyDataset.MyTable(default_time_zone STRING)
  OPTIONS (description = @@time_zone);
UPDATE MyDataset.MyTable
SET default_time_zone = @@time_zone
WHERE TRUE;

יש מקומות שבהם אי אפשר להשתמש במשתני מערכת בשאילתות DDL ו-DML. לדוגמה, אי אפשר להשתמש במשתנה מערכת כשם פרויקט, כשם של מערך נתונים או כשם של טבלה. השאילתה הבאה יוצרת שגיאה כשכוללים את משתנה המערכת @@dataset_id בנתיב של טבלה:

BEGIN
  CREATE TEMP TABLE @@dataset_id.MyTempTable (id STRING);
END;

דוגמאות נוספות לשימוש במשתני מערכת בשאילתות מרובות הצהרות מופיעות במאמר הגדרת משתנה.

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