הפניה למשתני מערכת
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 ופונקציות טבלה.
|
@@project_id |
STRING |
קריאה-בלבד |
מזהה הפרויקט ששימש להפעלת השאילתה הנוכחית. במסגרת של פרוצדורה, @@project_id מתייחס לפרויקט שמריץ את השאילתה עם כמה הצהרות, ולא לפרויקט שבבעלותו הפרוצדורה.
|
@@query_label |
STRING |
קריאה וכתיבה |
תווית שאילתה לשיוך למשימות של שאילתות בשאילתה או בסשן הנוכחיים עם כמה הצהרות. אם מגדירים את התווית בשאילתה, כל עבודות השאילתה הבאות בסקריפט או בסשן יכללו את התווית הזו.
אם המשתנה הזה לא מוגדר בשאילתה, הערך שלו הוא NULL. דוגמה להגדרת משתנה המערכת הזה מופיעה במאמר
שיוך משימות בסשן לתווית.
|
@@reservation |
STRING |
קריאה וכתיבה |
[Preview] (תצוגה מקדימה). מציין את ההזמנה שבה המשימה מופעלת. הפורמט הנדרש הוא:
projects/project_id/locations/location/reservations/reservation_id.
המיקום של ההזמנה חייב להיות זהה למיקום שבו השאילתה פועלת.
|
@@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 |
קריאה-בלבד | מזהה הסשן שאליו משויכת השאילתה הנוכחית. |
@@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';
השאילתה הבאה מחזירה את אזור הזמן שמוגדר כברירת מחדל:
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;
דוגמאות נוספות לשימוש במשתני מערכת בשאילתות עם כמה הצהרות מופיעות במאמר הגדרת משתנה.
דוגמאות לשימוש במשתני מערכת בסשנים מופיעות במאמר בנושא דוגמה לסשן.