גישה לנתונים היסטוריים
BigQuery מאפשר לכם להריץ שאילתות ולשחזר נתונים שאוחסנו ב-BigQuery וששונו או נמחקו במסגרת חלון החזרה בזמן.
שליחת שאילתות לנתונים בנקודת זמן מסוימת
אפשר להשתמש בפסקה FOR SYSTEM_TIME AS OF כדי לשלוח שאילתה לגבי נתונים היסטוריים של טבלה מכל נקודת זמן בחלון הזמן של התכונה 'מסע בזמן'. הסעיף הזה מקבל ביטוי קבוע של חותמת זמן ומפנה לגרסה של הטבלה שהייתה עדכנית באותה חותמת זמן. הטבלה צריכה להיות מאוחסנת ב-BigQuery, ולא יכולה להיות טבלה חיצונית. אין הגבלה על גודל הטבלה כשמשתמשים ב-SYSTEM_TIME AS OF.
לדוגמה, השאילתה הבאה מחזירה גרסה היסטורית של הטבלה מלפני שעה:
SELECT *
FROM `mydataset.mytable`
FOR SYSTEM_TIME AS OF TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 HOUR);
אם חותמת הזמן מציינת זמן שקדם לחלון הזמן של המסע בזמן או שקדם למועד שבו הטבלה נוצרה, השאילתה תיכשל ותחזיר שגיאה כמו השגיאה הבאה:
Invalid snapshot time 1601168925462 for table myproject:mydataset.table1@1601168925462. Cannot read before 1601573410026.
אחרי שמחליפים טבלה קיימת באמצעות ההצהרה CREATE OR REPLACE TABLE, אפשר להשתמש ב-FOR SYSTEM_TIME AS OF כדי לשלוח שאילתה לגרסה הקודמת של הטבלה.
אם הטבלה נמחקה, השאילתה תיכשל ותחזיר שגיאה כמו זו שמופיעה בהמשך:
Not found: Table myproject:mydataset.table was not found in location LOCATION
שחזור טבלה מנקודת זמן מסוימת
אפשר לשחזר טבלה מנתונים היסטוריים על ידי העתקת הנתונים ההיסטוריים לטבלה חדשה. העתקת נתונים היסטוריים פועלת גם אם הטבלה נמחקה או שתוקפה פג, כל עוד משחזרים את הטבלה במהלך חלון הזמן של 'מסע בזמן'.
כשמשחזרים טבלה מנתונים היסטוריים, תגים מטבלת המקור לא מועתקים לטבלת היעד. גם מידע על חלוקת הטבלה לא מועתק לטבלת היעד. כדי ליצור מחדש את סכימת החלוקה למחיצות של הטבלה המקורית, אפשר לעיין בבקשה הראשונית ליצירת הטבלה ב-Cloud Logging ולהשתמש במידע הזה כדי לחלק את הטבלה המשוחזרת למחיצות.
כדי לשחזר טבלה שנמחקה אבל עדיין נמצאת בחלון הזמן של Time Travel, מעתיקים את הטבלה לטבלה חדשה באמצעות הכלי @<time> Time Decorator.
אי אפשר להריץ שאילתה על טבלה שנמחקה, גם אם משתמשים במעצב זמן. קודם צריך לשחזר אותו.
משתמשים בתחביר הבא עם @<time> מעצב הזמן:
-
tableid@TIMEכאשרTIMEהוא מספר אלפיות השנייה מאז ראשית זמן יוניקס (Unix epoch). -
tableid@-TIME_OFFSETכאשרTIME_OFFSETהוא ההפרש היחסי מהשעה הנוכחית, באלפיות השנייה. -
tableid@0: מציין את הנתונים ההיסטוריים הכי ישנים שזמינים.
כדי לשחזר טבלה, בוחרים באחת מהאפשרויות הבאות:
המסוף
אי אפשר לבטל את המחיקה של טבלה באמצעות מסוף Cloud de Confiance .
BQ
-
במסוף Cloud de Confiance , מפעילים את Cloud Shell.
בחלק התחתון של Cloud de Confiance המסוף יתחיל סשן של Cloud Shell ותופיע הודעה של שורת הפקודה. Cloud Shell היא סביבת מעטפת שבה ה-CLI של Google Cloud מותקן ומוגדרים ערכים לפרויקט הקיים. הסשן יופעל תוך כמה שניות.
כדי לשחזר טבלה, קודם צריך לקבוע חותמת זמן של מערכת UNIX שבה הטבלה הייתה קיימת (באלפיות השנייה). אפשר להשתמש בפקודה
dateשל Linux כדי ליצור את חותמת הזמן של מערכת Unix מערך רגיל של חותמת זמן:date -d '2023-08-04 16:00:34.456789Z' +%s000
לאחר מכן, משתמשים בפקודה
bq copyעם קישוט ה-time travel@<time>כדי לבצע את פעולת העתקת הטבלה.לדוגמה, מזינים את הפקודה הבאה כדי להעתיק את הטבלה
mydataset.mytableבשעה1418864998000לטבלה חדשהmydataset.newtable.bq cp mydataset.mytable@1418864998000 mydataset.newtable
(אופציונלי) מציינים את הדגל
--locationומגדירים את הערך למיקום.אפשר גם לציין היסט יחסי. בדוגמה הבאה מועתקת הגרסה של טבלה מלפני שעה:
bq cp mydataset.mytable@-3600000 mydataset.newtable
המשך
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Goהוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery Go API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
לפני שמריצים דוגמאות קוד, צריך להגדיר את משתנה הסביבה GOOGLE_CLOUD_UNIVERSE_DOMAIN לערך s3nsapis.fr.
Java
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Javaהוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery Java API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
לפני שמריצים דוגמאות קוד, צריך להגדיר את משתנה הסביבה GOOGLE_CLOUD_UNIVERSE_DOMAIN לערך s3nsapis.fr.
Node.js
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Node.jsהוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery Node.js API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
לפני שמריצים דוגמאות קוד, צריך להגדיר את משתנה הסביבה GOOGLE_CLOUD_UNIVERSE_DOMAIN לערך s3nsapis.fr.
Python
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Pythonהוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery Python API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
לפני שמריצים דוגמאות קוד, צריך להגדיר את משתנה הסביבה GOOGLE_CLOUD_UNIVERSE_DOMAIN לערך s3nsapis.fr.
אם אתם חושבים שאולי תרצו לשחזר טבלה מאוחר יותר ממה שמותר בחלון הזמן של Time Travel, כדאי ליצור תמונת מצב של הטבלה. מידע נוסף זמין במאמר מבוא לצילומי מצב של טבלאות.
אי אפשר לשחזר תצוגה לוגית ישירות. מידע נוסף מופיע במאמר בנושא שחזור תצוגה.