התצוגה ASSIGNMENT_CHANGES
בתצוגה INFORMATION_SCHEMA.ASSIGNMENT_CHANGES מוצגת רשימה כמעט בזמן אמת של כל השינויים בהקצאות בפרויקט הניהול. כל שורה
מייצגת שינוי יחיד בהקצאה יחידה. מידע נוסף על הזמנות זמין במאמר מבוא להזמנות.
ההרשאה הנדרשת
כדי לשלוח שאילתה לתצוגה INFORMATION_SCHEMA.ASSIGNMENT_CHANGES, צריך את ההרשאה bigquery.reservationAssignments.list לניהול זהויות והרשאות גישה (IAM) בפרויקט.
כל אחד מהתפקידים הבאים שמוגדרים מראש ב-IAM כולל את ההרשאה הנדרשת:
roles/bigquery.resourceAdminroles/bigquery.resourceEditorroles/bigquery.resourceViewerroles/bigquery.userroles/bigquery.admin
מידע נוסף על הרשאות ב-BigQuery זמין במאמר בקרת גישה באמצעות IAM.
סכימה
לתצוגה INFORMATION_SCHEMA.ASSIGNMENT_CHANGES יש את הסכימה הבאה:
| שם העמודה | סוג נתונים | ערך |
|---|---|---|
change_timestamp |
TIMESTAMP |
השעה שבה התרחש השינוי. |
project_id |
STRING |
המזהה של פרויקט הניהול. |
project_number |
INTEGER |
מספר פרויקט הניהול. |
assignment_id |
STRING |
מזהה שמזהה באופן ייחודי את ההקצאה. |
reservation_name |
STRING |
שם ההזמנה שמשמשת להקצאה. |
job_type |
STRING |
סוג העבודה שיכולה להשתמש בהזמנה. הערך יכול להיות PIPELINE או QUERY. |
assignee_id |
STRING |
מזהה שמזהה באופן ייחודי את משאב הנמען. |
assignee_number |
INTEGER |
מספר שמזהה באופן ייחודי את משאב הנמען. |
assignee_type |
STRING |
סוג המשאב של מקבל ההקצאה. יכול להיות organization, folder או project. |
action |
STRING |
סוג האירוע שהתרחש עם ההקצאה. יכול להיות CREATE, UPDATE או DELETE. |
user_email |
STRING |
כתובת האימייל של המשתמש או הנושא של שירותי אימות הזהות של כוח העבודה שביצע את השינוי. google לשינויים שבוצעו על ידי Google. NULL אם כתובת האימייל לא ידועה.
|
state |
STRING |
המצב של ההקצאה. הערך יכול להיות PENDING או ACTIVE. |
כדי לשמור על יציבות, מומלץ לציין במפורש את העמודות בשאילתות של סכימת המידע, במקום להשתמש בתו כל כללי (SELECT *). ציון מפורש של העמודות מונע את השבירה של השאילתות אם הסכימה הבסיסית משתנה.
שמירת נתונים
בתצוגה הזו מופיעים מטלות נוכחיות ומטלות שנמחקו, שנשמרות למשך 41 ימים לכל היותר ואז מוסרות מהתצוגה.
היקף ותחביר
שאילתות שמופעלות על התצוגה הזו חייבות לכלול מסנן אזור. אם לא מציינים מסנן אזורי, המטא-נתונים מאוחזרים מכל האזורים. בטבלה הבאה מוסבר היקף האזור בתצוגה הזו:
| שם התצוגה | היקף המשאבים | היקף האזור |
|---|---|---|
[PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.ASSIGNMENT_CHANGES[_BY_PROJECT] |
ברמת הפרויקט | REGION |
-
אופציונלי:
PROJECT_ID: מזהה הפרויקט ב- Google Cloud . אם לא מציינים פרויקט, המערכת משתמשת בפרויקט שמוגדר כברירת מחדל. -
REGION: כל שם של אזור במערך נתונים. לדוגמה,`region-us`.
דוגמאות
איך מאתרים את השינויים האחרונים במטלה
בדוגמה הבאה מוצג המשתמש שביצע את העדכון האחרון של הקצאת הרשאות למשימה מסוימת בטווח תאריכים שצוין.
SELECT user_email, change_timestamp, reservation_name, assignment_id FROM `region-us`.INFORMATION_SCHEMA.ASSIGNMENT_CHANGES WHERE change_timestamp BETWEEN '2021-09-30' AND '2021-10-01' AND assignment_id = 'assignment_01' ORDER BY change_timestamp DESC LIMIT 1;
התוצאה אמורה להיראות כך:
+--------------------------------+-----------------------+--------------------+-----------------+ | user_email | change_timestamp | reservation_name | assignment_id | +--------------------------------+-----------------------+--------------------+-----------------+ | cloudysanfrancisco@gmail.com |2021-09-30 09:30:00 UTC| my_reservation | assignment_01 | +--------------------------------+-----------------------+--------------------+-----------------+
איך בודקים את סטטוס ההקצאה של הזמנה בנקודת זמן מסוימת
בדוגמה הבאה מוצגות כל ההקצאות הפעילות של הזמנה בנקודת זמן מסוימת.
SELECT reservation_name, assignee_id, assignee_type, job_type FROM `region-REGION`.INFORMATION_SCHEMA.ASSIGNMENT_CHANGES WHERE reservation_name = RESERVATION_NAME AND change_timestamp < TIMESTAMP QUALIFY ROW_NUMBER() OVER(PARTITION BY assignee_id, job_type ORDER BY change_timestamp DESC) = 1 AND action != 'DELETE';
מחליפים את מה שכתוב בשדות הבאים:
-
REGION: האזור שבו נמצאת ההזמנה -
RESERVATION_NAME: השם של ההזמנה שמשמשת להקצאה -
TIMESTAMP: חותמת הזמן שמייצגת את הנקודה הספציפית בזמן שבה נבדקת רשימת ההקצאות
התוצאה אמורה להיראות כך:
+-------------------------+---------------------------+---------------+----------+ | reservation_name | assignee_id | assignee_type | job_type | +-------------------------+---------------------------+---------------+----------+ | test-reservation | project_1 | PROJECT | QUERY | | test-reservation | project_2 | PROJECT | QUERY | +-------------------------+---------------------------+---------------+----------+
זיהוי סטטוס ההקצאה של הזמנה כשמשימה מסוימת בוצעה
כדי להציג את ההקצאות שהיו פעילות כשעבודה מסוימת בוצעה, אפשר להשתמש בדוגמה הבאה.
SELECT reservation_name, assignee_id, assignee_type, job_type FROM `region-REGION`.INFORMATION_SCHEMA.ASSIGNMENT_CHANGES WHERE reservation_name = RESERVATION_NAME AND change_timestamp < (SELECT creation_time FROM PROJECT_ID.`region-REGION`.INFORMATION_SCHEMA.JOBS WHERE job_id = JOB_ID) QUALIFY ROW_NUMBER() OVER(PARTITION BY assignee_id, job_type ORDER BY change_timestamp DESC) = 1 AND action != 'DELETE';
מחליפים את מה שכתוב בשדות הבאים:
-
REGION: האזור שבו נמצאת ההזמנה -
RESERVATION_NAME: השם של ההזמנה שמשמשת להקצאה -
PROJECT_ID: מזהה הפרויקט שבו בוצעה העבודה Google Cloud -
JOB_ID: מזהה העבודה שעבורה נבדק סטטוס ההקצאה