יצירת קובצי snapshot של טבלאות באמצעות שאילתה מתוזמנת
במאמר הזה מוסבר איך ליצור תמונות מצב חודשיות של טבלה באמצעות חשבון שירות שמריץ שאילתת DDL מתוזמנת. המסמך מדריך אתכם בדוגמה הבאה:
- בפרויקט
PROJECT, יוצרים חשבון שירות בשםsnapshot-bot. - נותנים לחשבון השירות
snapshot-botאת ההרשאות שנדרשות כדי ליצור תמונות מצב של הטבלהTABLEשנמצאת במערך הנתוניםDATASET, ולאחסן את תמונות המצב של הטבלה במערך הנתוניםBACKUP. - כותבים שאילתה שיוצרת תמונות מצב חודשיות של הטבלה
TABLEוממקמת אותן במערך הנתוניםBACKUP. אי אפשר להחליף תמונת מצב קיימת של טבלה, ולכן לכל תמונת מצב של טבלה צריך להיות שם ייחודי. כדי לעשות את זה, השאילתה מוסיפה את התאריך הנוכחי לשמות של תמונות המצב של הטבלאות, לדוגמה:TABLE_20220521. התוקף של קובצי ה-snapshot של הטבלאות פג אחרי 40 יום. - מתזמנים את חשבון השירות
snapshot-botלהרצת השאילתה ביום הראשון של כל חודש.
המסמך הזה מיועד למשתמשים שמכירים את BigQuery ואת תמונות המצב של טבלאות ב-BigQuery.
הרשאות ותפקידים
בקטע הזה מתוארות ההרשאות של ניהול הזהויות והרשאות הגישה (IAM) שנדרשות כדי ליצור חשבון שירות ולתזמן שאילתה, והתפקידים המוגדרים מראש ב-IAM שמעניקים את ההרשאות האלה.
הרשאות
כדי לעבוד עם חשבון שירות, צריך את ההרשאות הבאות:
| הרשאה | משאב | סוג המשאב |
|---|---|---|
iam.serviceAccounts.*
|
PROJECT |
פרויקט |
כדי לתזמן שאילתה, צריך את ההרשאה הבאה:
| הרשאה | משאב | סוג המשאב |
|---|---|---|
bigquery.jobs.create
|
PROJECT |
פרויקט |
תפקידים
אלה התפקידים המוגדרים מראש שכוללים את ההרשאות שנדרשות כדי לעבוד עם חשבון שירות:
| תפקיד | משאב | סוג המשאב |
|---|---|---|
אחת מהאפשרויות הבאות:roles/iam.serviceAccountAdminroles/editorroles/owner
|
PROJECT |
פרויקט |
אלה התפקידים המוגדרים מראש ב-BigQuery שכוללים את ההרשאות הנדרשות לתזמון שאילתה:
| תפקיד | משאב | סוג המשאב |
|---|---|---|
אחת מהאפשרויות הבאות:roles/bigquery.userroles/bigquery.jobuserroles/bigquery.admin
|
PROJECT |
פרויקט |
יצירת חשבון השירות של snapshot-bot
כדי ליצור את חשבון השירות של snapshot-bot ולתת לו את ההרשאות שנדרשות כדי להריץ שאילתות בפרויקט PROJECT:
המסוף
במסוף Cloud de Confiance , נכנסים לדף Service accounts:
בוחרים את הפרויקט
PROJECT.יוצרים את חשבון השירות של
snapshot-bot:לוחצים על Create service account.
בשדה Service account name, מזינים snapshot-bot.
לוחצים על יצירה והמשך.
נותנים לחשבון השירות את ההרשאות שנדרשות כדי להריץ משימות ב-BigQuery:
בקטע Grant this service account access to project, בוחרים את התפקיד BigQuery User.
לוחצים על סיום.
BigQuery יוצר את חשבון השירות עם כתובת האימייל snapshot-bot@PROJECT.s3ns.iam.gserviceaccount.com.
כדי לוודא ש-BigQuery יצר את חשבון השירות עם ההרשאות שציינתם:
המסוף
מוודאים שחשבון השירות נוצר ב-BigQuery:
במסוף Cloud de Confiance , נכנסים לדף Service accounts:
בוחרים את הפרויקט
PROJECT.לוחצים על snapshot-bot@PROJECT.s3ns.iam.gserviceaccount.com.
מוודאים שבהודעה Service account status כתוב שחשבון השירות פעיל.
מוודאים שב-BigQuery ניתנה לחשבון השירות ההרשאה שנדרשת כדי להריץ שאילתות:
במסוף Cloud de Confiance , נכנסים לדף Manage resources:
לחץ על
PROJECT.לוחצים על הצגת חלונית המידע.
בכרטיסייה Permissions, מרחיבים את הצומת BigQuery User.
מוודאים שחשבון השירות snapshot-bot מופיע ברשימה.
מתן הרשאות לחשבון השירות
בקטע הזה מוסבר איך לתת לחשבון השירות snapshot-bot את ההרשאות שנדרשות כדי ליצור קובצי snapshot של הטבלה DATASET.TABLE במערך הנתונים BACKUP.
הרשאה לצלם תמונות מצב של מסד הנתונים הטבלאי
כדי לתת לחשבון השירות snapshot-bot את ההרשאות שנדרשות לו כדי ליצור קובצי Snapshot של הטבלה DATASET.TABLE:
המסוף
במסוף Cloud de Confiance , פותחים את הדף BigQuery.
בחלונית השמאלית, לוחצים על Explorer:

אם החלונית הימנית לא מוצגת, לוחצים על הרחבת החלונית הימנית כדי לפתוח אותה.
בחלונית Explorer, מרחיבים את צומת הפרויקט
PROJECT.לוחצים על Datasets ואז על מערך הנתונים DATASET.
לוחצים על Overview > Tables, ואז על הטבלה TABLE.
לוחצים על שיתוף. החלונית שיתוף נפתחת.
לוחצים על Add Principal. החלונית Grant access נפתחת.
בשדה New principals, מזינים את כתובת האימייל של חשבון השירות: snapshot-bot@PROJECT.s3ns.iam.gserviceaccount.com.
בתפריט הנפתח Select a role, בוחרים את התפקיד BigQuery Data Editor.
לוחצים על Save.
בחלונית Share, מרחיבים את הצומת BigQuery Data Editor ומוודאים שחשבון השירות snapshot-bot@PROJECT.s3ns.iam.gserviceaccount.com מופיע ברשימה.
לוחצים על Close.
BQ
מפעילים את Cloud Shell במסוף Cloud de Confiance :
מזינים את הפקודה הבאה של
bq add-iam-policy-binding:bq add-iam-policy-binding \ --member=serviceAccount:snapshot-bot@PROJECT.s3ns.iam.gserviceaccount.com \ --role=roles/bigquery.dataEditor DATASET.TABLE
ב-BigQuery מוצג אישור על כך שקישור המדיניות החדש נוסף.
הרשאה ליצור טבלאות במערך הנתונים של היעד
נותנים לחשבון השירות snapshot-bot את ההרשאות שנדרשות כדי ליצור תמונות מצב של טבלאות במערך הנתונים BACKUP, באופן הבא:
המסוף
במסוף Cloud de Confiance , נכנסים לדף BigQuery.
בחלונית השמאלית, לוחצים על Explorer:

בחלונית Explorer, מרחיבים את צומת הפרויקט
PROJECT.לוחצים על Datasets ואז על מערך הנתונים BACKUP.
לוחצים על שיתוף > ניהול הרשאות. חלונית ההרשאות של מערך הנתונים תיפתח.
לוחצים על Add principal. בשדה New principals, מזינים את כתובת האימייל של חשבון השירות: snapshot-bot@PROJECT.s3ns.iam.gserviceaccount.com.
בתפריט הנפתח Select a role, בוחרים את התפקיד BigQuery Data Owner.
לוחצים על Save.
בחלונית ההרשאות של מערך הנתונים, מוודאים שחשבון השירות snapshot-bot@PROJECT.s3ns.iam.gserviceaccount.com מופיע בצומת BigQuery Data Owner.
לוחצים על Close.
עכשיו לחשבון השירות snapshot-bot יש את תפקידי ה-IAM הבאים במשאבים הבאים:
| תפקיד | משאב | סוג המשאב | מטרה |
|---|---|---|---|
| עריכה של נתוני BigQuery | PROJECT:DATASET.TABLE |
טבלה | יוצרים תמונות מצב של הטבלה TABLE. |
| בעלי הנתונים ב-BigQuery | PROJECT:BACKUP |
קבוצת הנתונים | יצירה ומחיקה של קובצי Snapshot של טבלאות במערך הנתונים BACKUP. |
| משתמש ב-BigQuery | PROJECT |
פרויקט | מריצים את השאילתה המתוזמנת שיוצרת את קובצי ה-snapshot של הטבלה. |
התפקידים האלה מספקים את ההרשאות שנדרשות לחשבון השירות snapshot-bot כדי להריץ שאילתות שיוצרות תמונות מצב של הטבלה DATASET.TABLE, ולהציב את תמונות המצב של הטבלה במערך הנתונים BACKUP.
כתיבת שאילתה עם כמה הצהרות
בקטע הזה מוסבר איך לכתוב שאילתה עם כמה הצהרות שיוצרת תמונת מצב של טבלה ב-DATASET.TABLE באמצעות הצהרת ה-DDL CREATE SNAPSHOT TABLE.
תמונת המצב נשמרת במערך הנתונים BACKUP והתוקף שלה פג אחרי יום אחד.
-- Declare variables DECLARE snapshot_name STRING; DECLARE expiration TIMESTAMP; DECLARE query STRING; -- Set variables SET expiration = DATE_ADD(current_timestamp(), INTERVAL 1 DAY); SET snapshot_name = CONCAT( "BACKUP.TABLE_", FORMAT_DATETIME('%Y%m%d', current_date())); -- Construct the query to create the snapshot SET query = CONCAT( "CREATE SNAPSHOT TABLE ", snapshot_name, " CLONE mydataset.mytable OPTIONS(expiration_timestamp = TIMESTAMP '", expiration, "');"); -- Run the query EXECUTE IMMEDIATE query;
תזמון השאילתה החודשית
מתזמנים את השאילתה כך שתפעל בשעה 5:00 ביום הראשון של כל חודש, באופן הבא:
BQ
מפעילים את Cloud Shell במסוף Cloud de Confiance :
מזינים את הפקודה הבאה ב-
bq query:bq query --use_legacy_sql=false --display_name="Monthly snapshots of the TABLE table" \ --location="us" --schedule="1 of month 05:00" \ --project_id=PROJECT \ 'DECLARE snapshot_name STRING; DECLARE expiration TIMESTAMP; DECLARE query STRING; SET expiration = DATE_ADD(@run_time, INTERVAL 40 DAY); SET snapshot_name = CONCAT("BACKUP.TABLE_", FORMAT_DATETIME("%Y%m%d", @run_date)); SET query = CONCAT("CREATE SNAPSHOT TABLE ", snapshot_name, " CLONE PROJECT.DATASET.TABLE OPTIONS(expiration_timestamp=TIMESTAMP \"", expiration, "\");"); EXECUTE IMMEDIATE query;'
המערכת של BigQuery מתזמנת את השאילתה.
השאילתה עם כמה הצהרות בכלי שורת הפקודה של BigQuery שונה מהשאילתה שהרצתם במסוף Cloud de Confiance , באופן הבא:
- השאילתה של כלי שורת הפקודה של BigQuery משתמשת ב-
@run_dateבמקום ב-current_date(). בשאילתה מתוזמנת, הפרמטר@run_dateמכיל את התאריך הנוכחי. אבל בשאילתה אינטראקטיבית, הפרמטר@run_dateלא נתמך. אפשר להשתמש ב-current_date()במקום ב-@run_dateכדי לבדוק שאילתה אינטראקטיבית לפני שמתזמנים אותה. - השאילתה של כלי שורת הפקודה של BigQuery משתמשת ב-
@run_timeבמקום ב-current_timestamp()מסיבה דומה – הפרמטר@run_timeלא נתמך בשאילתות אינטראקטיביות, אבל אפשר להשתמש ב-current_timestamp()במקום ב-@run_timeכדי לבדוק את השאילתה האינטראקטיבית. - בשאילתה של כלי שורת הפקודה של BigQuery משתמשים בלוכסן ובמירכאות
\"במקום בגרש', כי הגרשיים משמשים לתחום את השאילתה.
הגדרת חשבון השירות להרצת השאילתה המתוזמנת
השאילתה מתוזמנת כרגע להפעלה באמצעות פרטי הכניסה שלך.
כדי לעדכן את השאילתה המתוזמנת כך שתפעל עם פרטי הכניסה של חשבון השירות snapshot-bot:
מריצים את הפקודה
bq lsכדי לקבל את הזהות של משימת השאילתה המתוזמנת:bq ls --transfer_config=true --transfer_location=us
הפלט אמור להיראות כך:
namedisplayNamedataSourceIdstateprojects/12345/locations/us/transferConfigs/12345Monthly snapshots of the TABLE tablescheduled_queryRUNNINGמריצים את הפקודה הבאה של
bq updateבאמצעות המזהה שבשדהname:bq update --transfer_config --update_credentials \ --service_account_name=snapshot-bot@PROJECT.s3ns.iam.gserviceaccount.com \ projects/12345/locations/us/transferConfigs/12345
ב-Cloud Shell יופיע אישור שהשאילתה המתוזמנת עודכנה בהצלחה.
בדיקת העבודה שלכם
בקטע הזה מוסבר איך לוודא שהשאילתה מתוזמנת כמו שצריך, איך לבדוק אם היו שגיאות כשהשאילתה הופעלה ואיך לוודא שתמונות המצב החודשיות נוצרות.
הצגת השאילתה המתוזמנת
כדי לוודא ש-BigQuery תזמן את השאילתה החודשית של תמונות המצב של הטבלאות:
המסוף
במסוף Cloud de Confiance , נכנסים לדף Scheduled queries:
לוחצים על Monthly snapshots of the TABLE table.
לוחצים על הגדרה.
מוודאים שהשדה Query string מכיל את השאילתה, ושהיא מתוזמנת לפעול ביום הראשון של כל חודש.
הצגת היסטוריית ההרצות של השאילתה המתוזמנת
אחרי שהשאילתה המתוזמנת רצה, אפשר לבדוק אם היא רצה בהצלחה:
המסוף
במסוף Cloud de Confiance , נכנסים לדף Scheduled queries:
לוחצים על תיאור השאילתה, Monthly snapshots of the TABLE table.
לוחצים על היסטוריית הפעלות.
אתם יכולים לראות את התאריך והשעה שבהם השאילתה הופעלה, אם ההפעלה הצליחה, ואם לא, אילו שגיאות אירעו. כדי לראות פרטים נוספים על הפעלה מסוימת, לוחצים על השורה שלה בטבלה Run history. בחלונית Run details מוצגים פרטים נוספים.
הצגת תמונות המצב של הטבלה
כדי לוודא שנוצרים קובצי Snapshot של הטבלאות, פועלים לפי השלבים הבאים:
המסוף
במסוף Cloud de Confiance , נכנסים לדף BigQuery:
בחלונית השמאלית, לוחצים על Explorer:

בחלונית Explorer, פותחים את מערך הנתונים
BACKUPומוודאים שנוצרו קובצי ה-snapshotTABLE_YYYYMMDD, כאשרYYYYMMDDהוא היום הראשון בכל חודש.לדוגמה:
TABLE_20220601TABLE_20220701TABLE_20220801
המאמרים הבאים
- למידע נוסף על תמונות מצב של טבלאות, קראו את המאמר עבודה עם תמונות מצב של טבלאות.
- מידע נוסף על תזמון שאילתות זמין במאמר תזמון שאילתות.
- למידע נוסף על חשבונות שירות של Cloud de Confiance , קראו את המאמר חשבונות שירות.