התצוגה 'הזמנות'
בתצוגה INFORMATION_SCHEMA.RESERVATIONS מוצגת רשימה כמעט בזמן אמת של כל ההזמנות הנוכחיות בפרויקט הניהול. כל שורה מייצגת הזמנה אחת נוכחית. הזמנה פעילה היא הזמנה שלא נמחקה. מידע נוסף על הזמנות זמין במאמר מבוא להזמנות.
ההרשאה הנדרשת
כדי לשלוח שאילתה לתצוגה INFORMATION_SCHEMA.RESERVATIONS, צריך הרשאה לניהול זהויות והרשאות גישה (IAM) bigquery.reservations.list בפרויקט.
כל אחד מהתפקידים הבאים שמוגדרים מראש ב-IAM כולל את ההרשאה הנדרשת:
- אדמין של משאבי BigQuery (
roles/bigquery.resourceAdmin) - עורך משאבי BigQuery (
roles/bigquery.resourceEditor) - BigQuery Resource Viewer (צפייה במשאבי BigQuery) (
roles/bigquery.resourceViewer) - משתמש BigQuery (
roles/bigquery.user) - אדמין של BigQuery (
roles/bigquery.admin)
במאמר תפקידים והרשאות של IAM ב-BigQuery יש מידע נוסף על הרשאות ב-BigQuery.
סכימה
לתצוגה INFORMATION_SCHEMA.RESERVATIONS יש את הסכימה הבאה:
| שם העמודה | סוג נתונים | ערך |
|---|---|---|
ddl |
STRING |
הצהרת ה-DDL ששימשה ליצירת ההזמנה הזו. |
project_id |
STRING |
המזהה של פרויקט הניהול. |
project_number |
INTEGER |
מספר פרויקט הניהול. |
reservation_name |
STRING |
השם של ההזמנה שסופק על ידי המשתמש. |
ignore_idle_slots |
BOOL |
אם הערך הוא false, כל שאילתה שמשתמשת בהזמנה הזו יכולה להשתמש במשבצות פנויות לא פעילות שלא נעשה בהן שימוש מתוך התחייבויות אחרות לקיבולת. |
slot_capacity |
INTEGER |
הערך הבסיסי של ההזמנה. |
target_job_concurrency |
INTEGER |
מספר היעד של השאילתות שאפשר להריץ בו-זמנית, שמוגבל על ידי המשאבים הזמינים. אם הערך הוא אפס, הוא מחושב באופן אוטומטי על סמך המשאבים הזמינים. |
autoscale |
STRUCT |
מידע על הקיבולת של ההזמנה שניתנת לשינוי אוטומטי. השדות כוללים את הפרטים הבאים:
|
edition |
STRING |
המהדורה שמשויכת להזמנה הזו. מידע נוסף על מהדורות זמין במאמר מבוא למהדורות של BigQuery. |
primary_location |
STRING |
המיקום הנוכחי של הרפליקה הראשית של ההזמנה. השדה הזה מוגדר רק להזמנות שנעשות באמצעות התכונה לניהול תוכנית התאוששות מאסון (DR). |
secondary_location |
STRING |
המיקום הנוכחי של הרפליקה המשנית של ההזמנה. השדה הזה מוגדר רק להזמנות שנעשות באמצעות התכונה לניהול תוכנית התאוששות מאסון (DR). |
original_primary_location |
STRING |
המיקום שבו נוצרה ההזמנה במקור. |
labels |
RECORD |
מערך של תוויות שמשויכות להזמנה. |
reservation_group_path |
STRING |
מבנה הקבוצה ההיררכי שאליו משויכת ההזמנה.
לדוגמה, אם מבנה הקבוצה כולל קבוצת הורה וקבוצת צאצא, השדה reservation_group_path מכיל רשימה כמו: [parent group, child group]. השדה הזה נמצא בגרסת טרום-השקה. |
max_slots |
INTEGER |
המספר המקסימלי של משבצות שההזמנה הזו יכולה להשתמש בהן, כולל משבצות בסיסיות (slot_capacity), משבצות בלי פעילות (אם ignore_idle_slots הוא FALSE) ומשבצות של התאמה אוטומטית לעומס. המשתמשים מציינים את השדה הזה כדי להשתמש בתכונה לחיזוי הזמנות. |
scaling_mode |
STRING |
מצב ההרחבה של ההזמנה, שקובע איך ההזמנה מתרחבת מבסיס ל-max_slots. המשתמשים מציינים את השדה הזה כדי להשתמש בתכונה לחיזוי הזמנות. |
כדי לשמור על יציבות, מומלץ לציין במפורש את העמודות בשאילתות של סכימת המידע, במקום להשתמש בתו כל כללי (SELECT *). ציון מפורש של העמודות מונע את השבירה של השאילתות אם הסכימה הבסיסית משתנה.
היקף ותחביר
שאילתות שמופעלות על התצוגה הזו חייבות לכלול מגדיר אזור. בטבלה הבאה מוסבר היקף האזור בתצוגה הזו:
| שם התצוגה | היקף המשאבים | היקף האזור |
|---|---|---|
[PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.RESERVATIONS[_BY_PROJECT] |
ברמת הפרויקט | REGION |
-
אופציונלי:
PROJECT_ID: מזהה הפרויקט ב- Google Cloud . אם לא מציינים פרויקט, המערכת משתמשת בפרויקט שמוגדר כברירת מחדל. -
REGION: כל שם של אזור במערך נתונים. לדוגמה,`region-us`.
הצטרפות בין תצוגות ההזמנות לתצוגות המשרות
תצוגות המשרות כוללות את העמודה reservation_id. אם העבודה שלכם הופעלה בפרויקט שהוקצתה לו הזמנה, reservation_id יופיע בפורמט הבא:
reservation-admin-project:reservation-location.reservation-name.
כדי להצטרף בין תצוגות ההזמנות ותצוגות העבודות, אפשר להצטרף בין עמודת תצוגות העבודות reservation_id לבין עמודות תצוגות ההזמנות project_id ו-reservation_name. בדוגמה הבאה מוצג שימוש בסעיף JOIN בין ההזמנה לתצוגות של העבודה.
דוגמה
בדוגמה הבאה מוצגים נתוני השימוש במשבצות, קיבולת המשבצות וההקצאה של הזמנה לפרויקט עם הקצאת הזמנה, בשעה האחרונה. השימוש ביחידת קיבולת (Slot) מוצג ביחידות של אלפיות שנייה של יחידת קיבולת לשנייה.
WITH job_data AS ( SELECT job.period_start, job.reservation_id, job.period_slot_ms, job.job_id, job.job_type FROM `my-project.region-us`.INFORMATION_SCHEMA.JOBS_TIMELINE AS job WHERE job.period_start > TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 HOUR)) SELECT reservation.reservation_name AS reservation_name, job.period_start, reservation.slot_capacity, job.period_slot_ms, job.job_id, job.job_type FROM job_data AS job INNER JOIN `reservation-admin-project.region-us`.INFORMATION_SCHEMA.RESERVATIONS AS reservation ON (job.reservation_id = CONCAT(reservation.project_id, ":", "US", ".", reservation.reservation_name));
הפלט אמור להיראות כך:
+------------------+---------------------+---------------+----------------+------------------+----------+
| reservation_name | period_start | slot_capacity | period_slot_ms | job_id | job_type |
+------------------+---------------------+---------------+----------------+------------------+----------+
| my_reservation | 2021-04-30 17:30:54 | 100 | 11131 | bquxjob_66707... | QUERY |
| my_reservation | 2021-04-30 17:30:55 | 100 | 49978 | bquxjob_66707... | QUERY |
| my_reservation | 2021-04-30 17:30:56 | 100 | 9038 | bquxjob_66707... | QUERY |
| my_reservation | 2021-04-30 17:30:57 | 100 | 17237 | bquxjob_66707... | QUERY |
השאילתה הזו משתמשת בתצוגה RESERVATIONS כדי לקבל מידע על הזמנות. אם היו שינויים בהזמנות בשעה האחרונה, יכול להיות שהנתונים בעמודה reservation_slot_capacity לא יהיו מדויקים.
השאילתה מצטרפת ל-RESERVATIONS עם JOBS_TIMELINE כדי לשייך את נתוני חלקי הזמן של המשימה לפרטי ההזמנה.