תצוגת RESERVATIONS (הזמנות)
בתצוגה 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, כל שאילתה שמשתמשת בהזמנה הזו יכולה להשתמש ביחידות קיבולת (Slots) פנויות לא פעילות מהתחייבויות אחרות לשימוש. |
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 |
ARRAY<STRING> |
קבוצת ההזמנות שאליה ההזמנה מקושרת.
לדוגמה, אם ההזמנה מקושרת לקבוצה my-group, השדה reservation_group_path מכיל רשימה כמו: [my-group]. |
max_slots |
INTEGER |
המספר המקסימלי של יחידות קיבולת (Slots) שהמקום השמור הזה יכול להשתמש בהן, כולל יחידות קיבולת בסיסיות (slot_capacity), יחידות קיבולת בלי פעילות (אם ignore_idle_slots הוא FALSE) ויחידות קיבולת של התאמה אוטומטית לעומס. המשתמשים מציינים את השדה הזה כדי להשתמש בתכונה לחיזוי הזמנות. |
scaling_mode |
STRING |
מצב ההרחבה של ההזמנה, שקובע איך ההזמנה מתרחבת מבסיס ל-max_slots. המשתמשים מציינים את השדה הזה כדי להשתמש בתכונה לחיזוי הזמנות. |
כדי לשמור על יציבות, מומלץ לציין במפורש את העמודות בשאילתות של סכימת המידע, במקום להשתמש בתו כללי (SELECT *). ציון מפורש של העמודות מונע את השבירה של השאילתות אם הסכימה הבסיסית משתנה.
היקף ותחביר
שאילתות שמופעלות על התצוגה הזו חייבות לכלול מסנן אזור. בטבלה הבאה מוסבר היקף האזור בתצוגה הזו:
| שם התצוגה | היקף המשאבים | היקף האזור |
|---|---|---|
[PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.RESERVATIONS[_BY_PROJECT] |
ברמת הפרויקט | REGION |
-
אופציונלי:
PROJECT_ID: מזהה הפרויקט ב- Cloud de Confiance . אם לא מציינים פרויקט, המערכת משתמשת בפרויקט שמוגדר כברירת מחדל. -
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 כדי לשייך את נתוני חלקי הזמן של המשרה לפרטי ההזמנה.