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

אם החלונית הימנית לא מוצגת, לוחצים על הרחבת החלונית הימנית כדי לפתוח אותה.
בחלונית Explorer, מרחיבים את הפרויקט, לוחצים על Datasets (מערכי נתונים) ואז לוחצים על מערך הנתונים.
לוחצים על סקירה כללית > טבלאות, ואז לוחצים על השם של הטבלה שרוצים ליצור לה תמונת מצב.
בחלונית הפרטים שמופיעה, לוחצים על תמונת מצב.

בחלונית יצירת תמונת מצב של טבלה שמופיעה, מזינים את פרטי הפרויקט, מערך הנתונים והטבלה של תמונת המצב החדשה של הטבלה.
בשדה Expiration time, מזינים את התאריך והשעה של 24 שעות מעכשיו.
לוחצים על Save.
SQL
משתמשים בהצהרת ה-DDL CREATE SNAPSHOT TABLE:
במסוף Google Cloud , עוברים לדף BigQuery.
מזינים את ההצהרה הבאה בעורך השאילתות:
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_DATASET_NAME: השם של מערך הנתונים שבו רוצים ליצור את ה-snapshot. -
SNAPSHOT_NAME: השם של קובץ ה-snapshot שאתם יוצרים. -
TABLE_PROJECT_ID: מזהה הפרויקט שמכיל את הטבלה שממנה יוצרים את ה-snapshot. -
TABLE_DATASET_NAME: השם של מערך הנתונים שמכיל את הטבלה שממנה יוצרים את ה-Snapshot. -
TABLE_NAME: השם של הטבלה שממנה יוצרים את ה-snapshot. -
TIMESTAMP_VALUE: ערך של חותמת זמן שמייצג את התאריך והשעה בעוד 24 שעות.
-
לוחצים על הפעלה.
מידע נוסף על הרצת שאילתות זמין במאמר הרצת שאילתה אינטראקטיבית.
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_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_DATASET_NAME: השם של מערך הנתונים שבו רוצים ליצור את ה-snapshot. -
SNAPSHOT_NAME: השם של קובץ ה-snapshot שאתם יוצרים. -
TIMESTAMP_VALUE: ערך של חותמת זמן שמייצג את התאריך והשעה בעוד 24 שעות.
בדומה לטבלאות, אם לא מציינים תאריך תפוגה, תמונת המצב של הטבלה תפוג אחרי תאריך התפוגה שמוגדר כברירת מחדל לטבלה או לערכת הנתונים שמכילה את תמונת המצב של הטבלה.
יצירת snapshot של טבלה באמצעות תכונת Time Travel
כדי ליצור תמונת מצב של טבלה כמו שהיא הייתה לפני שעה, אפשר להשתמש באחת מהאפשרויות הבאות:
המסוף
במסוף Google Cloud , עוברים לדף BigQuery.
בחלונית הימנית, לוחצים על כלי הניתוחים:

בחלונית Explorer, מרחיבים את הפרויקט, לוחצים על Datasets (מערכי נתונים) ואז לוחצים על מערך הנתונים.
לוחצים על סקירה כללית > טבלאות, ואז לוחצים על השם של הטבלה שרוצים ליצור לה תמונת מצב.
בחלונית הפרטים שמופיעה, לוחצים על תמונת מצב.

בחלונית יצירת תמונת מצב של טבלה שמופיעה, מזינים את פרטי הפרויקט, מערך הנתונים והטבלה של תמונת המצב החדשה של הטבלה.
בשדה Snapshot time (שעת הצילום), מזינים את התאריך והשעה שלפני שעה.
לוחצים על Save.
SQL
משתמשים בהצהרת DDL CREATE SNAPSHOT TABLE עם סעיף FOR SYSTEM_TIME AS OF:
במסוף Google Cloud , עוברים לדף BigQuery.
מזינים את ההצהרה הבאה בעורך השאילתות:
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_DATASET_NAME: השם של מערך הנתונים שבו רוצים ליצור את ה-snapshot. -
SNAPSHOT_NAME: השם של קובץ ה-snapshot שאתם יוצרים. -
TABLE_PROJECT_ID: מזהה הפרויקט שמכיל את הטבלה שממנה יוצרים את ה-snapshot. -
TABLE_DATASET_NAME: השם של מערך הנתונים שמכיל את הטבלה שממנה יוצרים את ה-Snapshot. -
TABLE_NAME: השם של הטבלה שממנה יוצרים את ה-snapshot.
-
לוחצים על הפעלה.
מידע נוסף על הרצת שאילתות זמין במאמר הרצת שאילתה אינטראקטיבית.
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_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_DATASET_NAME: השם של מערך הנתונים שבו רוצים ליצור את ה-snapshot. -
SNAPSHOT_NAME: השם של קובץ ה-snapshot שאתם יוצרים.
מידע נוסף על ציון גרסה קודמת של טבלה זמין במאמר גישה לנתונים היסטוריים באמצעות תכונת Time Travel.
בקרת גישה לטבלה
כדי לשלוט בגישה לטבלאות ב-BigQuery, אפשר לעיין במאמר בנושא שליטה בגישה למשאבים באמצעות IAM.
כשיוצרים תמונת מצב של טבלה, הגישה ברמת הטבלה לתמונת המצב של הטבלה מוגדרת באופן הבא:
- אם תמונת המצב של הטבלה מחליפה טבלה קיימת, הרשאות הגישה ברמת הטבלה של הטבלה הקיימת נשמרות. תגים לא מועתקים מהטבלה הבסיסית.
- אם תמונת המצב של הטבלה היא משאב חדש, הגישה ברמת הטבלה לתמונת המצב של הטבלה נקבעת לפי מדיניות הגישה של מערך הנתונים שבו נוצרה תמונת המצב של הטבלה. בנוסף, תגים מועתקים מהטבלה הבסיסית לתמונת המצב של הטבלה.
המאמרים הבאים
- עדכון התיאור, תאריך התפוגה או מדיניות הגישה של תמונת מצב של טבלה.
- שחזור תמונת מצב של טבלה.
- יצירת תמונות מצב חודשיות של טבלה באמצעות חשבון שירות שמריץ שאילתה מתוזמנת.