יצירת קובצי snapshot של טבלאות
במאמר הזה מוסבר איך ליצור קובץ snapshot של טבלה באמצעות מסוףGoogle Cloud , הצהרת ה-SQL CREATE SNAPSHOT TABLE, הפקודה bq cp --snapshot או ה-API jobs.insert. המסמך הזה מיועד למשתמשים שמכירים את תמונות המצב של טבלאות ב-BigQuery.
הרשאות ותפקידים
בקטע הזה מתוארות ההרשאות של ניהול זהויות והרשאות גישה (IAM) שנדרשות כדי ליצור תמונת מצב של טבלה, והתפקידים המוגדרים מראש ב-IAM שמעניקים את ההרשאות האלה.
הרשאות
כדי ליצור קובץ snapshot של טבלה, צריך את ההרשאות הבאות:
| הרשאה | משאב | הערות |
|---|---|---|
כל התנאים הבאים:bigquery.tables.getbigquery.tables.getDatabigquery.tables.createSnapshotbigquery.datasets.getbigquery.jobs.create
|
הטבלה שרוצים ליצור לה קובץ snapshot. | מכיוון שתפוגת התוקף של קובץ ה-snapshot מוחקת את קובץ ה-snapshot במועד מאוחר יותר, כדי ליצור קובץ snapshot עם זמן תפוגה, אתם צריכים את ההרשאה bigquery.tables.deleteSnapshot. |
bigquery.tables.createbigquery.tables.updateData
|
מערך הנתונים שמכיל את קובץ ה-snapshot של הטבלה. |
תפקידים
אלה התפקידים המוגדרים מראש ב-BigQuery שכוללים את ההרשאות הנדרשות:
| תפקיד | משאב | הערות |
|---|---|---|
לפחות אחד מהבאים:bigquery.dataViewerbigquery.dataEditorbigquery.dataOwnerולפחות אחד מהבאים: bigquery.jobUserbigquery.studioUserbigquery.userbigquery.studioAdminbigquery.admin
|
הטבלה שרוצים ליצור לה קובץ snapshot. | אפשר להשתמש רק ב-bigquery.dataOwner, ב-bigquery.admin וב-bigquery.studioAdmin כדי ליצור קובץ snapshot עם זמן תפוגה. |
לפחות אחד מהבאים:bigquery.dataEditorbigquery.dataOwnerbigquery.studioAdminbigquery.admin
|
מערך הנתונים שמכיל את קובץ ה-snapshot החדש של הטבלה. |
מגבלות
למידע על המגבלות של תמונות מצב של טבלאות, ראו המגבלות של תמונות מצב של טבלאות.
בנוסף, יצירת תמונת מצב של טבלה כפופה למגבלות הבאות, שחלות על כל המשימות להעתקת טבלאות:
- כשיוצרים תמונת מצב של טבלה, השם שלה צריך לעמוד באותם כללי מתן שמות כמו כשיוצרים טבלה.
- יצירת תמונת מצב של טבלה כפופה למגבלות של BigQuery על משימות העתקה.
- מערך הנתונים של תמונת המצב של הטבלה צריך להיות באותו אזור ובאותו ארגון כמו מערך הנתונים שמכיל את הטבלה שממנה אתם יוצרים תמונת מצב. לדוגמה, אי אפשר ליצור קובץ snapshot של טבלה במערך נתונים שמבוסס על ארה"ב, אם הטבלה נמצאת במערך נתונים שמבוסס על האיחוד האירופי. במקום זאת, צריך ליצור עותק של הטבלה.
- הזמן שלוקח ל-BigQuery ליצור תמונות מצב של טבלאות יכול להשתנות באופן משמעותי בין הרצות שונות, כי האחסון הבסיסי מנוהל באופן דינמי.
- כשיוצרים תמונת מצב של טבלה באמצעות BigQuery CLI, לתמונת המצב יש את מפתח ההצפנה שמוגדר כברירת מחדל במערך הנתונים של היעד. כשיוצרים קובץ Snapshot של טבלה באמצעות SQL, לקובץ ה-Snapshot יש את אותו מפתח הצפנה כמו לטבלת המקור.
יצירת תמונת מצב של טבלה
השיטה המומלצת היא ליצור קובץ snapshot של טבלה במערך נתונים שונה מזה של טבלת הבסיס. כך אפשר לשחזר את מסד הנתונים הטבלאי מתמונת המצב של הטבלה, גם אם קבוצת הנתונים של מסד הנתונים הטבלאי נמחקה בטעות.
כשיוצרים תמונת מצב של טבלה, מציינים את הטבלה שרוצים ליצור לה תמונת מצב ואת השם הייחודי של תמונת המצב של הטבלה. אפשר גם לציין את השעה של קובץ ה-snapshot ואת תאריך התפוגה של קובץ ה-snapshot של הטבלה.
יצירת תמונת מצב של טבלה עם תאריך תפוגה
כדי ליצור תמונת מצב של טבלה שתוקפה יפוג אחרי 24 שעות, אתם יכולים להשתמש באחת מהאפשרויות הבאות:
המסוף
נכנסים לדף BigQuery במסוף Google Cloud .
בחלונית הימנית, לוחצים על Explorer:

אם החלונית הימנית לא מוצגת, לוחצים על הרחבת החלונית הימנית כדי לפתוח אותה.
בחלונית Explorer, מרחיבים את הפרויקט, לוחצים על Datasets ואז על מערך הנתונים.
לוחצים על Overview > Tables, ואז על שם הטבלה שרוצים ליצור לה תמונת מצב.
בחלונית הפרטים, לוחצים על More > Create snapshot.
בחלונית Create table snapshot שמופיעה, מזינים את פרטי Project, Dataset ו-Table של קובץ ה-snapshot החדש של הטבלה.
בשדה Expiration time, מזינים את התאריך והשעה של 24 שעות מעכשיו.
לוחצים על Save.
SQL
משתמשים בהצהרת ה-DDL CREATE SNAPSHOT TABLE:
נכנסים לדף BigQuery במסוף Google Cloud .
בעורך השאילתות, מזינים את ההצהרה הבאה:
CREATE SNAPSHOT TABLE SNAPSHOT_PROJECT_ID.SNAPSHOT_DATASET_NAME.SNAPSHOT_NAME CLONE TABLE_PROJECT_ID.TABLE_DATASET_NAME.TABLE_NAME OPTIONS ( expiration_timestamp = TIMESTAMP 'TIMESTAMP_VALUE');
מחליפים את מה שכתוב בשדות הבאים:
-
SNAPSHOT_PROJECT_ID: מזהה הפרויקט שבו רוצים ליצור את קובץ ה-snapshot. -
SNAPSHOT_DATASET_NAME: השם של מערך הנתונים שבו רוצים ליצור את קובץ ה-snapshot. -
SNAPSHOT_NAME: השם של קובץ ה-snapshot שאתם יוצרים. -
TABLE_PROJECT_ID: מזהה הפרויקט שמכיל את הטבלה שממנה יוצרים את קובץ ה-snapshot. -
TABLE_DATASET_NAME: השם של מערך הנתונים שמכיל את הטבלה שממנה יוצרים את קובץ ה-snapshot. -
TABLE_NAME: שם הטבלה שממנה יוצרים את קובץ ה-snapshot. TIMESTAMP_VALUE: ערך של חותמת זמן שמייצג את התאריך והשעה בעוד 24 שעות.
-
לוחצים על Run.
מידע נוסף על הרצת שאילתות זמין במאמר הרצת שאילתה אינטראקטיבית.
BQ
מזינים את הפקודה הבאה ב-Cloud Shell:
bq cp \ --snapshot \ --no_clobber \ --expiration=86400 \ TABLE_PROJECT_ID:TABLE_DATASET_NAME.TABLE_NAME \ SNAPSHOT_PROJECT_ID:SNAPSHOT_DATASET_NAME.SNAPSHOT_NAME
מחליפים את מה שכתוב בשדות הבאים:
-
TABLE_PROJECT_ID: מזהה הפרויקט שמכיל את הטבלה שממנה יוצרים את קובץ ה-snapshot. -
TABLE_DATASET_NAME: השם של מערך הנתונים שמכיל את הטבלה שממנה יוצרים את קובץ ה-snapshot. -
TABLE_NAME: שם הטבלה שממנה יוצרים את קובץ ה-snapshot. -
SNAPSHOT_PROJECT_ID: מזהה הפרויקט שבו רוצים ליצור את קובץ ה-snapshot. -
SNAPSHOT_DATASET_NAME: השם של מערך הנתונים שבו רוצים ליצור את קובץ ה-snapshot. -
SNAPSHOT_NAME: השם של קובץ ה-snapshot שאתם יוצרים.
חובה להשתמש בדגל --no_clobber.
API
מפעילים את השיטה jobs.insert עם הפרמטרים הבאים:
| פרמטר | ערך |
|---|---|
projectId |
מזהה הפרויקט לחיוב על הפעולה הזו. |
| גוף הבקשה | { "configuration": { "copy": { "sourceTables": [ { "projectId": "TABLE_PROJECT_ID", "datasetId": "TABLE_DATASET_NAME", "tableId": "TABLE_NAME" } ], "destinationTable": { "projectId": "SNAPSHOT_PROJECT_ID", "datasetId": "SNAPSHOT_DATASET_NAME", "tableId": "SNAPSHOT_NAME" }, "operationType": "SNAPSHOT", "writeDisposition": "WRITE_EMPTY", "destinationExpirationTime":"TIMESTAMP_VALUE" } } } |
מחליפים את מה שכתוב בשדות הבאים:
-
TABLE_PROJECT_ID: מזהה הפרויקט שמכיל את הטבלה שממנה יוצרים את קובץ ה-snapshot. -
TABLE_DATASET_NAME: השם של מערך הנתונים שמכיל את הטבלה שממנה יוצרים את קובץ ה-snapshot. -
TABLE_NAME: שם הטבלה שממנה יוצרים את קובץ ה-snapshot. -
SNAPSHOT_PROJECT_ID: מזהה הפרויקט שבו רוצים ליצור את קובץ ה-snapshot. -
SNAPSHOT_DATASET_NAME: השם של מערך הנתונים שבו רוצים ליצור את קובץ ה-snapshot. -
SNAPSHOT_NAME: השם של קובץ ה-snapshot שאתם יוצרים. TIMESTAMP_VALUE: ערך של חותמת זמן שמייצג את התאריך והשעה בעוד 24 שעות.
כמו בטבלאות, אם לא מציינים תאריך תפוגה, תמונת המצב של הטבלה תפוג אחרי זמן התפוגה שמוגדר כברירת מחדל לטבלה או למערך הנתונים שמכיל את תמונת המצב של הטבלה.
יצירת קובץ snapshot של טבלה באמצעות נסיעה בזמן
כדי ליצור תמונת מצב של טבלה כפי שהייתה לפני שעה, אפשר להשתמש באחת מהאפשרויות הבאות:
המסוף
נכנסים לדף BigQuery במסוף Google Cloud .
בחלונית הימנית, לוחצים על Explorer:

בחלונית Explorer, מרחיבים את הפרויקט, לוחצים על Datasets ואז על מערך הנתונים.
לוחצים על Overview > Tables, ואז על שם הטבלה שרוצים ליצור לה תמונת מצב.
בחלונית הפרטים, לוחצים על More > Create snapshot.
בחלונית Create table snapshot שמופיעה, מזינים את פרטי Project, Dataset ו-Table של קובץ ה-snapshot החדש של הטבלה.
בשדה Snapshot time, מזינים את התאריך והשעה של לפני שעה.
לוחצים על Save.
SQL
משתמשים בהצהרת ה-DDL CREATE SNAPSHOT TABLE עם סעיף FOR SYSTEM_TIME AS OF:
נכנסים לדף BigQuery במסוף Google Cloud .
בעורך השאילתות, מזינים את ההצהרה הבאה:
CREATE SNAPSHOT TABLE SNAPSHOT_PROJECT_ID.SNAPSHOT_DATASET_NAME.SNAPSHOT_NAME CLONE TABLE_PROJECT_ID.TABLE_DATASET_NAME.TABLE_NAME FOR SYSTEM_TIME AS OF TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 HOUR);
מחליפים את מה שכתוב בשדות הבאים:
-
SNAPSHOT_PROJECT_ID: מזהה הפרויקט שבו רוצים ליצור את קובץ ה-snapshot. -
SNAPSHOT_DATASET_NAME: השם של מערך הנתונים שבו רוצים ליצור את קובץ ה-snapshot. -
SNAPSHOT_NAME: השם של קובץ ה-snapshot שאתם יוצרים. -
TABLE_PROJECT_ID: מזהה הפרויקט שמכיל את הטבלה שממנה יוצרים את קובץ ה-snapshot. -
TABLE_DATASET_NAME: השם של מערך הנתונים שמכיל את הטבלה שממנה יוצרים את קובץ ה-snapshot. -
TABLE_NAME: שם הטבלה שממנה יוצרים את קובץ ה-snapshot.
-
לוחצים על Run.
מידע נוסף על הרצת שאילתות זמין במאמר הרצת שאילתה אינטראקטיבית.
BQ
מזינים את הפקודה הבאה ב-Cloud Shell:
bq cp \ --no_clobber \ --snapshot \ TABLE_PROJECT_ID:TABLE_DATASET_NAME.TABLE_NAME@-3600000 \ SNAPSHOT_PROJECT_ID:SNAPSHOT_DATASET_NAME.SNAPSHOT_NAME
מחליפים את מה שכתוב בשדות הבאים:
-
TABLE_PROJECT_ID: מזהה הפרויקט שמכיל את הטבלה שממנה יוצרים את קובץ ה-snapshot. -
TABLE_DATASET_NAME: השם של מערך הנתונים שמכיל את הטבלה שממנה יוצרים את קובץ ה-snapshot. -
TABLE_NAME: שם הטבלה שממנה יוצרים את קובץ ה-snapshot. -
SNAPSHOT_PROJECT_ID: מזהה הפרויקט שבו רוצים ליצור את קובץ ה-snapshot. -
SNAPSHOT_DATASET_NAME: השם של מערך הנתונים שבו רוצים ליצור את קובץ ה-snapshot. -
SNAPSHOT_NAME: השם של קובץ ה-snapshot שאתם יוצרים.
חובה להשתמש בדגל --no_clobber.
API
מפעילים את ה-method jobs.insert עם הפרמטרים הבאים:
| פרמטר | ערך |
|---|---|
projectId |
מזהה הפרויקט לחיוב על הפעולה הזו. |
| גוף הבקשה | { "configuration": { "copy": { "sourceTables": [ { "projectId": "TABLE_PROJECT_ID", "datasetId": "TABLE_DATASET_NAME", "tableId": "TABLE_NAME@-360000" } ], "destinationTable": { "projectId": "SNAPSHOT_PROJECT_ID", "datasetId": "SNAPSHOT_DATASET_NAME", "tableId": "SNAPSHOT_NAME" }, "operationType": "SNAPSHOT", "writeDisposition": "WRITE_EMPTY" } } } |
מחליפים את מה שכתוב בשדות הבאים:
-
TABLE_PROJECT_ID: מזהה הפרויקט שמכיל את הטבלה שממנה יוצרים את קובץ ה-snapshot. -
TABLE_DATASET_NAME: השם של מערך הנתונים שמכיל את הטבלה שממנה יוצרים את קובץ ה-snapshot. -
TABLE_NAME: שם הטבלה שממנה יוצרים את קובץ ה-snapshot. -
SNAPSHOT_PROJECT_ID: מזהה הפרויקט שבו רוצים ליצור את קובץ ה-snapshot. -
SNAPSHOT_DATASET_NAME: השם של מערך הנתונים שבו רוצים ליצור את קובץ ה-snapshot. -
SNAPSHOT_NAME: השם של קובץ ה-snapshot שאתם יוצרים.
למידע נוסף על ציון גרסה קודמת של טבלה, קראו את המאמר גישה לנתונים היסטוריים באמצעות נסיעה בזמן.
בקרת גישה לטבלאות
כדי לשלוט בגישה לטבלאות ב-BigQuery, קראו את המאמר בקרת גישה למשאבים באמצעות IAM.
כשיוצרים תמונת מצב של טבלה, הגישה ברמת הטבלה לתמונת המצב של הטבלה מוגדרת באופן הבא:
- אם קובץ ה-snapshot של הטבלה מחליף טבלה קיימת, הגישה ברמת הטבלה לטבלה הקיימת נשמרת. התגים לא מועתקים ממסד הנתונים הטבלאי.
- אם תמונת המצב של הטבלה היא משאב חדש, הגישה ברמת הטבלה לתמונת המצב של הטבלה נקבעת לפי כללי מדיניות הגישה של מערך הנתונים שבו נוצרה תמונת המצב של הטבלה. בנוסף, התגים מועתקים ממסד הנתונים הטבלאי לתמונת המצב של הטבלה.