התצוגה JOBS_TIMELINE_BY_ORGANIZATION
התצוגה INFORMATION_SCHEMA.JOBS_TIMELINE_BY_ORGANIZATION מכילה מטא-נתונים של BigQuery כמעט בזמן אמת לפי חלוקה לשניות, לכל העבודות שנשלחו בארגון שמשויך לפרויקט הנוכחי.
בתצוגה הזו מופיעות משימות שפועלות כרגע ומשימות שהושלמו.
ההרשאות הנדרשות
כדי לשלוח שאילתה לתצוגה INFORMATION_SCHEMA.JOBS_TIMELINE_BY_ORGANIZATION, צריך הרשאה לניהול זהויות והרשאות גישה (IAM) bigquery.jobs.listAll בארגון.
כל אחד מהתפקידים הבאים שמוגדרים מראש ב-IAM כולל את ההרשאה הנדרשת:
- BigQuery Resource Admin ברמת הארגון
- בעלי הארגון
- אדמין ארגוני
טבלת הסכימה JOBS_BY_ORGANIZATION זמינה רק למשתמשים בארגוניםGoogle Cloud מוגדרים.
מידע נוסף על הרשאות ב-BigQuery זמין במאמר בקרת גישה באמצעות IAM.
סכימה
כשמריצים שאילתה על תצוגות INFORMATION_SCHEMA.JOBS_TIMELINE_BY_*, תוצאות השאילתה מכילות שורה אחת לכל שנייה של ביצוע של כל משימת BigQuery. כל תקופה מתחילה במרווח של שנייה שלמה ונמשכת בדיוק שנייה אחת.
לתצוגה INFORMATION_SCHEMA.JOBS_TIMELINE_BY_* יש את הסכימה הבאה:
| שם העמודה | סוג נתונים | ערך |
|---|---|---|
period_start |
TIMESTAMP |
שעת ההתחלה של התקופה הזו. |
period_slot_ms |
INTEGER |
מספר אלפיות השנייה של משבצות הזמן שנצרכו בתקופה הזו. |
project_id |
STRING |
(Clustering column) מזהה הפרויקט. |
project_number |
INTEGER |
מספר הפרויקט. |
folder_numbers |
REPEATED INTEGER |
מזהי המספרים של התיקיות שמכילות את הפרויקט, החל מהתיקייה שמכילה ישירות את הפרויקט, ואחריה התיקייה שמכילה את תיקיית הבן וכן הלאה. לדוגמה, אם הערך של `folder_numbers` הוא `[1, 2, 3]`, התיקייה `1` מכילה מיד את הפרויקט, התיקייה `2` מכילה את התיקייה `1`, והתיקייה `3` מכילה את התיקייה `2`. |
user_email |
STRING |
(Clustering column) כתובת האימייל או חשבון השירות של המשתמש שהפעיל את העבודה. |
principal_subject |
STRING |
ייצוג מחרוזת של הזהות של הגורם הראשי שהפעיל את המשימה. |
job_id |
STRING |
מזהה המשרה. לדוגמה, bquxjob_1234. |
job_type |
STRING |
סוג המשרה. יכול להיות QUERY, LOAD, EXTRACT, COPY או null. סוג המשימה null מציין משימה פנימית, כמו הערכת הצהרת משימת סקריפט או רענון של תצוגה חומרית. |
statement_type |
STRING |
סוג הצהרת השאילתה, אם היא תקפה. לדוגמה, SELECT, INSERT, UPDATE או DELETE. |
priority |
STRING |
העדיפות של העבודה הזו. הערכים התקפים כוללים INTERACTIVE ו-BATCH. |
parent_job_id |
STRING |
המזהה של עבודת ההורה, אם יש כזו. |
job_creation_time |
TIMESTAMP |
(עמודת חלוקה למחיצות) מועד היצירה של העבודה הזו. החלוקה למחיצות מבוססת על זמן UTC של חותמת הזמן הזו. |
job_start_time |
TIMESTAMP |
שעת ההתחלה של העבודה הזו. |
job_end_time |
TIMESTAMP |
שעת הסיום של העבודה. |
state |
STRING |
מצב ההפעלה של העבודה בסוף התקופה הזו. מצבים תקינים כוללים PENDING, RUNNING ו-DONE. |
reservation_id |
STRING |
שם ההזמנה הראשית שהוקצתה לעבודה הזו בסוף התקופה הזו, אם רלוונטי. |
edition |
STRING |
המהדורה שמשויכת להזמנה שהוקצתה למשרה הזו. מידע נוסף על מהדורות זמין במאמר מבוא למהדורות של BigQuery. |
total_bytes_billed |
INTEGER |
אם הפרויקט מוגדר לשימוש בתמחור על פי דרישה, השדה הזה מכיל את סך הבייטים שחויבו על העבודה. אם הפרויקט מוגדר לשימוש בתמחור לפי תעריף קבוע, לא יחויבו בכם בגין בייטים. אי אפשר להגדיר את השדה הזה. |
total_bytes_processed |
INTEGER |
המספר הכולל של בייטים שעובדו על ידי העבודה. |
error_result |
RECORD |
פרטי השגיאה (אם יש) בתור
ErrorProto.
|
cache_hit |
BOOLEAN |
האם תוצאות השאילתה של העבודה הזו הגיעו ממטמון. |
period_shuffle_ram_usage_ratio |
FLOAT |
יחס השימוש בהפעלה אקראית בפרק הזמן שנבחר. הערך הוא 0.0 אם העבודה בוצעה עם הזמנה שמשתמשת בהתאמה אוטומטית לעומס ויש לה אפס משבצות בסיסיות. |
period_estimated_runnable_units |
INTEGER |
יחידות עבודה שאפשר לתזמן באופן מיידי בתקופה הזו. יחידות קיבולת נוספות ליחידות העבודה האלה יאיצו את השאילתה, בתנאי שאף שאילתה אחרת בהזמנה לא זקוקה ליחידות קיבולת נוספות. |
כדי לשמור על יציבות, מומלץ לציין במפורש את העמודות בשאילתות של סכימת המידע, במקום להשתמש בתו כל כללי (SELECT *). ציון מפורש של העמודות מונע את השבירה של השאילתות אם הסכימה הבסיסית משתנה.
שמירת נתונים
בתצוגה הזו מוצגות משימות שפועלות, יחד עם היסטוריית המשימות מ-180 הימים האחרונים.
אם פרויקט מועבר לארגון (ממצב שבו הוא לא היה שייך לארגון או מארגון אחר), לא ניתן לגשת למידע על משרות שנוצר לפני תאריך ההעברה דרך התצוגה INFORMATION_SCHEMA.JOBS_TIMELINE_BY_ORGANIZATION, כי התצוגה שומרת רק נתונים שנוצרו החל מתאריך ההעברה.
היקף ותחביר
שאילתות שמופעלות על התצוגה הזו חייבות לכלול מסנן אזור. אם לא מציינים מסנן אזורי, המטא-נתונים מאוחזרים מכל האזורים. בטבלה הבאה מוסבר היקף האזור בתצוגה הזו:
| שם התצוגה | היקף המשאבים | היקף האזור |
|---|---|---|
[PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.JOBS_TIMELINE_BY_ORGANIZATION |
הארגון שמכיל את הפרויקט שצוין | REGION |
-
אופציונלי:
PROJECT_ID: מזהה הפרויקט ב- Google Cloud . אם לא מציינים פרויקט, המערכת משתמשת בפרויקט שמוגדר כברירת מחדל. -
REGION: כל שם של אזור במערך נתונים. לדוגמה,`region-us`.
דוגמאות
דוגמה: הצגת נתוני השימוש הכוללים במשבצות לשנייה
כדי להריץ את השאילתה בפרויקט שאינו פרויקט ברירת המחדל, מוסיפים את מזהה הפרויקט בפורמט הבא:
`PROJECT_ID`.`region-REGION_NAME`.INFORMATION_SCHEMA.JOBS_TIMELINE_BY_ORGANIZATION
`myproject`.`region-us`.INFORMATION_SCHEMA.JOBS_TIMELINE_BY_ORGANIZATION.
בדוגמה הבאה מוצג שימוש במשבצות לשנייה מפרויקטים שהוקצו ל-YOUR_RESERVATION_ID בכל המשימות:
SELECT jobs.period_start, SUM(jobs.period_slot_ms) / 1000 AS period_slot_seconds, ANY_VALUE(COALESCE(s.slots_assigned, res.slots_assigned)) AS estimated_slots_assigned, ANY_VALUE(COALESCE(s.slots_max_assigned, res.slots_max_assigned)) AS estimated_slots_max_assigned FROM `region-us`.INFORMATION_SCHEMA.JOBS_TIMELINE_BY_ORGANIZATION jobs JOIN `region-us`.INFORMATION_SCHEMA.RESERVATIONS_TIMELINE res ON jobs.reservation_id = res.reservation_id AND TIMESTAMP_TRUNC(jobs.period_start, MINUTE) = res.period_start LEFT JOIN UNNEST(res.per_second_details) s ON jobs.period_start = s.start_time WHERE jobs.job_creation_time BETWEEN TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 DAY) AND CURRENT_TIMESTAMP() AND res.period_start BETWEEN TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 DAY) AND CURRENT_TIMESTAMP() AND res.reservation_id = 'YOUR_RESERVATION_ID' AND (jobs.statement_type != "SCRIPT" OR jobs.statement_type IS NULL) -- Avoid duplicate byte counting in parent and children jobs. GROUP BY period_start ORDER BY period_start DESC;
התוצאה אמורה להיראות כך:
+-----------------------+---------------------+--------------------------+------------------------------+ | period_start | period_slot_seconds | estimated_slots_assigned | estimated_slots_max_assigned | +-----------------------+---------------------+--------------------------+------------------------------+ |2021-06-08 21:33:59 UTC| 100.000 | 100 | 100 | |2021-06-08 21:33:58 UTC| 96.753 | 100 | 100 | |2021-06-08 21:33:57 UTC| 41.668 | 100 | 100 | +-----------------------+---------------------+--------------------------+------------------------------+
דוגמה: שימוש ביחידות קיבולת לפי הזמנה
בדוגמה הבאה מוצג שימוש במשבצות לשנייה עבור כל הזמנה ביום האחרון:
SELECT jobs.period_start, res.reservation_id, SUM(jobs.period_slot_ms) / 1000 AS period_slot_seconds, ANY_VALUE(COALESCE(s.slots_assigned, res.slots_assigned)) AS estimated_slots_assigned, ANY_VALUE(COALESCE(s.slots_max_assigned, res.slots_max_assigned)) AS estimated_slots_max_assigned FROM `region-us`.INFORMATION_SCHEMA.JOBS_TIMELINE_BY_ORGANIZATION jobs JOIN `region-us`.INFORMATION_SCHEMA.RESERVATIONS_TIMELINE res ON jobs.reservation_id = res.reservation_id AND TIMESTAMP_TRUNC(jobs.period_start, MINUTE) = res.period_start LEFT JOIN UNNEST(res.per_second_details) s ON jobs.period_start = s.start_time WHERE jobs.job_creation_time BETWEEN TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 DAY) AND CURRENT_TIMESTAMP() AND res.period_start BETWEEN TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 DAY) AND CURRENT_TIMESTAMP() AND (jobs.statement_type != "SCRIPT" OR jobs.statement_type IS NULL) -- Avoid duplicate byte counting in parent and children jobs. GROUP BY period_start, reservation_id ORDER BY period_start DESC, reservation_id;
התוצאה אמורה להיראות כך:
+-----------------------+----------------+---------------------+--------------------------+------------------------------+ | period_start | reservation_id | period_slot_seconds | estimated_slots_assigned | estimated_slots_max_assigned | +-----------------------+----------------+---------------------+--------------------------+------------------------------+ |2021-06-08 21:33:59 UTC| prod01 | 100.000 | 100 | 100 | |2021-06-08 21:33:58 UTC| prod02 | 177.201 | 200 | 500 | |2021-06-08 21:32:57 UTC| prod01 | 96.753 | 100 | 100 | |2021-06-08 21:32:56 UTC| prod02 | 182.329 | 200 | 500 | +-----------------------+----------------+---------------------+--------------------------+------------------------------+