גישה לנתונים היסטוריים
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> לציון זמן.
אי אפשר להריץ שאילתה על טבלה שנמחקה, גם אם משתמשים במעצב זמן. קודם צריך לשחזר אותו.
משתמשים בתחביר הבא עם @<time> מעצב הזמן:
-
tableid@TIMEכאשרTIMEהוא מספר אלפיות השנייה מאז ראשית זמן יוניקס. -
tableid@-TIME_OFFSETכאשרTIME_OFFSETהוא ההיסט היחסי מהשעה הנוכחית, באלפיות השנייה. tableid@0: מציין את הנתונים ההיסטוריים הכי ישנים שזמינים.
כדי לשחזר טבלה, בוחרים באחת מהאפשרויות הבאות:
המסוף
אי אפשר לבטל את המחיקה של טבלה באמצעות מסוף Google Cloud .
BQ
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
כדי לשחזר טבלה, קודם צריך לקבוע חותמת זמן של מערכת 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
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Goהוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery Go API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
Java
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Javaהוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery Java API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
Node.js
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Node.jsהוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery Node.js API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
Python
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Pythonהוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery Python API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
אם אתם חושבים שאולי תרצו לשחזר טבלה מאוחר יותר ממה שמותר בחלון הזמן של התכונה 'מסע בזמן', כדאי ליצור תמונת מצב של הטבלה. מידע נוסף זמין במאמר מבוא לצילומי מצב של טבלאות.
אי אפשר לשחזר תצוגה לוגית ישירות. מידע נוסף זמין במאמר בנושא שחזור תצוגה.
המאמרים הבאים
- מידע נוסף על תמונות מצב של טבלאות
- מידע נוסף על שמירת נתונים באמצעות תכונות Time Travel ו-Fail-safe
- מידע נוסף על ניהול טבלאות