התצוגה ASSIGNMENT_CHANGES

בתצוגה INFORMATION_SCHEMA.ASSIGNMENT_CHANGES מוצגת רשימה כמעט בזמן אמת של כל השינויים בהקצאות בפרויקט הניהול. כל שורה מייצגת שינוי יחיד בהקצאה יחידה. מידע נוסף על הזמנות זמין במאמר מבוא להזמנות.

ההרשאה הנדרשת

כדי לשלוח שאילתה לתצוגה INFORMATION_SCHEMA.ASSIGNMENT_CHANGES, צריך את ההרשאה bigquery.reservationAssignments.list לניהול זהויות והרשאות גישה (IAM) בפרויקט. כל אחד מהתפקידים הבאים שמוגדרים מראש ב-IAM כולל את ההרשאה הנדרשת:

  • roles/bigquery.resourceAdmin
  • roles/bigquery.resourceEditor
  • roles/bigquery.resourceViewer
  • roles/bigquery.user
  • roles/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: מזהה העבודה שעבורה נבדק סטטוס ההקצאה