איך עובדים עם היסטוריית השינויים
היסטוריית השינויים ב-BigQuery מאפשרת לעקוב אחרי היסטוריית השינויים בטבלה ב-BigQuery. אתם יכולים להשתמש בפונקציות של GoogleSQL כדי לראות סוגים מסוימים של שינויים שבוצעו במהלך טווח תאריכים מסוים, וכך לעבד שינויים מצטברים שבוצעו בטבלה. אם תבינו אילו שינויים בוצעו בטבלה, תוכלו לבצע פעולות כמו תחזוקה הדרגתית של רפליקה של הטבלה מחוץ ל-BigQuery, בלי ליצור עותקים יקרים.
ההרשאות הנדרשות
כדי לראות את היסטוריית השינויים בטבלה, צריך את ההרשאה bigquery.tables.getData בטבלה הזו. התפקידים המוגדרים מראש הבאים של ניהול זהויות והרשאות גישה (IAM) כוללים את ההרשאה הזו:
roles/bigquery.dataViewerroles/bigquery.dataEditorroles/bigquery.dataOwnerroles/bigquery.admin
אם בטבלה יש, או היו, כללי מדיניות גישה ברמת השורה, רק אדמין של הטבלה יכול לגשת לנתונים ההיסטוריים שלה. ההרשאה bigquery.rowAccessPolicies.overrideTimeTravelRestrictions נדרשת בטבלה, והיא כלולה בתפקיד המוגדר מראש roles/bigquery.admin ב-IAM.
אם בטבלה מוגדרת אבטחה ברמת העמודה, אתם יכולים לראות את היסטוריית השינויים רק בעמודות שיש לכם גישה אליהן.
כדי לראות את היסטוריית השינויים של APPENDS בטבלאות מנוהלות של Apache Iceberg, צריך גם את ההרשאות הבאות:
- הרשאת
bigquery.connections.delegateבמשאב Google Cloud של החיבור שמשויך לטבלה, שנכללת בתפקיד משתמש בחיבור של BigQuery (roles/bigquery.connectionUser) - התפקידים
roles/storage.objectUserו-roles/storage.legacyBucketReaderשהוקצו לחשבון השירות של החיבור בקטגוריה של Cloud Storage הבסיסית
מידע נוסף זמין במאמר עבודה עם היסטוריית השינויים ב-Lakehouse.
פונקציות של היסטוריית השינויים
אתם יכולים להשתמש בפונקציות הבאות כדי להבין את היסטוריית השינויים של הטבלה:
APPENDS: מחזירה את כל השורות שנוספו לטבלה בטווח תאריכים נתון.הפעולות הבאות מוסיפות שורות להיסטוריית השינויים ב-
APPENDS:
CHANGES: מחזירה את כל השורות שהשתנו בטבלה בטווח תאריכים נתון. כדי להשתמש בפונקציהCHANGESבטבלה, צריך להגדיר את האפשרותenable_change_historyשל הטבלה לערךTRUE.הפעולות הבאות מוסיפות שורות להיסטוריית השינויים ב-
CHANGES:- הצהרת DDL אחת (
CREATE TABLE) - פקודת DML אחת (
INSERT) - נתונים שנוספו או שונו כחלק מ
MERGEפקודת DML - פקודת DML אחת (
UPDATE) - פקודת DML אחת (
DELETE) - טעינת נתונים ל-BigQuery
- הטמעת עדכונים בזמן אמת
- פקודת DML אחת (
TRUNCATE TABLE) - משימות שמוגדרות עם
writeDispositionשלWRITE_TRUNCATE - מחיקות של מחיצות בודדות בטבלה
- הצהרת DDL אחת (
תמחור ועלויות
קריאה לפונקציות של היסטוריית השינויים כרוכה בעלויות המחשוב של BigQuery.
שתי הפונקציות APPENDS ו-CHANGES דורשות עיבוד של כל הנתונים שנכתבו בטבלה בטווח התאריכים שצוין. העיבוד הזה חל על כל פעולות הכתיבה, כולל פעולות הוספה ומוטציה.
הגדרת האפשרות enable_change_history של טבלה ל-FALSE לא מפחיתה את עיבוד הנתונים על ידי APPENDS.
כשמגדירים את האפשרות enable_change_history בטבלה לערך TRUE כדי להשתמש בפונקציה CHANGES, BigQuery מאחסן את המטא-נתונים של השינויים בטבלה. המטא-נתונים שמאוחסנים כרוכים בעלויות אחסון נוספות ב-BigQuery ובעלויות מחשוב נוספות ב-BigQuery.
סכום החיוב תלוי במספר השינויים שבוצעו בטבלה ובסוג שלהם, ובדרך כלל הוא קטן. טבלאות שמתבצעות בהן הרבה פעולות שינוי, במיוחד מחיקות גדולות, הן אלה שסביר להניח שיגרמו לעלויות משמעותיות.