תזמון שאילתות
שאילתות מתוזמנות ב-BigQuery מאפשרות להפוך עומסי עבודה חוזרים של GoogleSQL לאוטומטיים, כולל הצהרות של שפת הגדרת נתונים (DDL) ושל שפת טיפול בנתונים (DML). כדי לארגן את התוצאות לפי תאריך ושעה, אפשר להגדיר פרמטרים גם למחרוזת השאילתה וגם לטבלת היעד. כשיוצרים או מעדכנים לוח זמנים, BigQuery ממיר את הזמן המתוזמן מהשעון המקומי ל-UTC, שלא מושפע משעון קיץ.
לפני שמתחילים
- שאילתות מתוזמנות משתמשות בתכונות של שירות העברת הנתונים ל-BigQuery. מוודאים שביצעתם את כל הפעולות שנדרשות כדי להפעיל את שירות העברת הנתונים ל-BigQuery.
- להקצות תפקידים של ניהול זהויות והרשאות גישה (IAM) שנותנים למשתמשים את ההרשאות שנדרשות כדי לבצע כל משימה שמופיעה במסמך הזה.
- אם אתם מתכננים לציין מפתח הצפנה בניהול הלקוח (CMEK), ודאו שלחשבון השירות יש הרשאות להצפנה ולפענוח, ושיש לכם את מזהה המשאב של מפתח Cloud KMS שנדרש כדי להשתמש ב-CMEK. במאמר ציון מפתח הצפנה בשאילתות מתוזמנות מוסבר איך CMEK פועל עם שירות העברת הנתונים ל-BigQuery.
מגבלות
- שאילתות מתוזמנות שפועלות בדיוק בשעה עגולה (לדוגמה, 09:00) עשויות לפעול כמה פעמים, מה שעלול לגרום לתוצאות לא מכוונות כמו שכפול נתונים מפעולות
INSERT. כדי למנוע תוצאות לא מכוונות כאלה, כדאי להשתמש בלוח זמנים שלא מתחיל בשעה עגולה (לדוגמה, 08:58 או 09:03).
ההרשאות הנדרשות
כדי לתזמן שאילתה, אתם צריכים את הרשאות ה-IAM הבאות:
כדי ליצור את ההעברה, צריכות להיות לכם ההרשאות
bigquery.transfers.updateו-bigquery.datasets.get, או ההרשאותbigquery.jobs.create,bigquery.transfers.getו-bigquery.datasets.get.כדי להריץ שאילתה מתוזמנת, אתם צריכים:
- ההרשאה
bigquery.datasets.getבמערך הנתונים המיועד. - ההרשאה
bigquery.jobs.createבפרויקט.
- ההרשאה
כדי לשנות או למחוק שאילתה מתוזמנת, צריך אחד מהתפקידים הבאים:
- ההרשאות
bigquery.transfers.updateו-bigquery.transfers.getבפרויקט. - אם אתם מריצים שאילתה מתוזמנת באמצעות פרטי כניסה של משתמש, המשתמש צריך להיות הבעלים של השאילתה המתוזמנת, ואתם צריכים את ההרשאה
bigquery.jobs.createבפרויקט. - אם אתם מריצים שאילתה מתוזמנת כחשבון שירות, למשתמש ששולח קריאה לשאילתה המתוזמנת צריכות להיות ההרשאות
bigquery.transfers.updateו-bigquery.transfers.getבפרויקט. הקצאת התפקיד משתמש בחשבון שירות של IAM (iam.serviceAccountUser) מאפשרת למשתמש להריץ משימות בתור חשבון השירות, אבל לא מקנה הרשאות ניהול של הגדרת השאילתה המתוזמנת.
תפקיד ה-IAM המוגדר מראש אדמין ב-BigQuery (roles/bigquery.admin) כולל את ההרשאות שנדרשות כדי לתזמן או לשנות שאילתה.
למידע נוסף על תפקידי IAM ב-BigQuery, קראו את המאמר תפקידים והרשאות מוגדרים מראש.
כדי ליצור או לעדכן שאילתות מתוזמנות שמופעלות על ידי חשבון שירות, אתם צריכים גישה לחשבון השירות הזה. מידע נוסף על הקצאת תפקיד של חשבון שירות למשתמשים זמין במאמר תפקיד משתמש בחשבון שירות. כדי לבחור חשבון שירות בממשק המשתמש של השאילתות המתוזמנות במסוףGoogle Cloud , צריך את ההרשאות הבאות ב-IAM:
-
iam.serviceAccounts.listכדי להציג את רשימת חשבונות השירות. iam.serviceAccountUserכדי להקצות חשבון שירות לשאילתה מתוזמנת.
אפשרויות להגדרות אישיות
בקטעים הבאים מתוארות אפשרויות ההגדרה.
מחרוזת השאילתה
מחרוזת השאילתה צריכה להיות תקינה וכתובה ב-GoogleSQL. כל הפעלה של שאילתה מתוזמנת יכולה לקבל את הפרמטרים הבאים של השאילתה.
כדי לבדוק באופן ידני מחרוזת שאילתה עם הפרמטרים @run_time ו-@run_date לפני שמתזמנים שאילתה, משתמשים בכלי שורת הפקודה של BigQuery.
הפרמטרים הזמינים
| פרמטר | סוג GoogleSQL | ערך |
|---|---|---|
@run_time |
TIMESTAMP |
התאריך מוצג לפי שעון UTC. בשאילתות שנקבעו באופן קבוע, run_time מייצג את זמן ההפעלה המיועד. לדוגמה, אם השאילתה המתוזמנת מוגדרת ל "כל 24 שעות", ההפרש של run_time בין שתי שאילתות עוקבות הוא בדיוק 24 שעות, למרות שזמן הביצוע בפועל עשוי להשתנות מעט. |
@run_date |
DATE |
מייצג תאריך לוגי ביומן. |
דוגמה
הפרמטר @run_time הוא חלק ממחרוזת השאילתה בדוגמה הזו, ששולחת שאילתה למערך נתונים ציבורי בשם hacker_news.stories.
SELECT @run_time AS time, title, author, text FROM `bigquery-public-data.hacker_news.stories` LIMIT 1000
טבלת היעד
אם טבלת היעד של התוצאות לא קיימת כשמגדירים את השאילתה המתוזמנת, המערכת של BigQuery מנסה ליצור את הטבלה בשבילכם.
אם אתם משתמשים בשאילתת DDL או DML, בחרו את Processing location או את האזור במסוף Google Cloud . צריך לציין מיקום עיבוד לשאילתות DDL או DML שיוצרות את טבלת היעד.
אם טבלת היעד קיימת ואתם משתמשים בWRITE_APPEND
write preference, המערכת של BigQuery מוסיפה נתונים לטבלת היעד ומנסה למפות את הסכימה.
BigQuery מאפשר באופן אוטומטי להוסיף שדות ולשנות את הסדר שלהם, וגם להתאים שדות אופציונליים חסרים. אם הסכימה של הטבלה משתנה באופן משמעותי בין הרצות, כך ש-BigQuery לא יכול לעבד את השינויים באופן אוטומטי, השאילתה המתוזמנת נכשלת.
שאילתות יכולות להפנות לטבלאות מפרויקטים שונים וממערכי נתונים שונים. כשמגדירים את השאילתה המתוזמנת, לא צריך לכלול את קבוצת הנתונים של היעד בשם הטבלה. אתם מציינים את קבוצת הנתונים של היעד בנפרד.
מערך הנתונים והטבלה של היעד בשאילתה מתוזמנת צריכים להיות באותו פרויקט כמו השאילתה המתוזמנת.
העדפת כתיבה
העדפת הכתיבה שתבחרו תקבע איך תוצאות השאילתה ייכתבו בטבלת יעד קיימת.
-
WRITE_TRUNCATE: אם הטבלה קיימת, BigQuery מחליף את נתוני הטבלה. -
WRITE_APPEND: אם הטבלה קיימת, BigQuery מוסיף את הנתונים לטבלה.
אם אתם משתמשים בשאילתת DDL או DML, אתם לא יכולים להשתמש באפשרות של העדפת כתיבה.
יצירה, חיתוך או הוספה של טבלת יעד מתרחשים רק אם BigQuery מצליח להשלים את השאילתה. פעולות של יצירה, חיתוך או הוספה מתרחשות כעדכון אטומי אחד בסיום המשימה.
סידור באשכולות
שאילתות מתוזמנות יכולות ליצור אשכולות רק בטבלאות חדשות, כשהטבלה נוצרת באמצעות הצהרת DDL CREATE TABLE AS SELECT. אפשר לקרוא מידע נוסף במאמר יצירת טבלה מסודרת באשכולות מתוצאת שאילתה בדף שימוש בהצהרות של שפת הגדרת נתונים (DDL).
אפשרויות חלוקה למחיצות
שאילתות מתוזמנות יכולות ליצור טבלאות יעד מחולקות למחיצות או לא מחולקות למחיצות. אפשר להגדיר חלוקה למחיצות במסוף Google Cloud , בכלי שורת הפקודה של BigQuery וב-API. אם אתם משתמשים בשאילתת DDL או DML עם חלוקה למחיצות, השאירו את השדה Destination table partitioning ריק.
ב-BigQuery אפשר להשתמש בסוגים הבאים של חלוקה למחיצות בטבלאות:
- חלוקה לפי טווח של מספרים שלמים: טבלאות שמחולקות לפי טווחים של ערכים בעמודה ספציפית של
INTEGER. - חלוקה למחיצות לפי עמודת יחידת זמן: טבלאות שמחולקות למחיצות לפי עמודה מסוג
TIMESTAMP,DATEאוDATETIME. - חלוקה למחיצות לפי זמן הטמעה: טבלאות שמחולקות למחיצות לפי זמן ההטמעה. BigQuery מקצה שורות למחיצות באופן אוטומטי על סמך הזמן שבו BigQuery מטמיע את הנתונים.
כדי ליצור טבלה מחולקת למחיצות באמצעות שאילתה מתוזמנת במסוףGoogle Cloud , משתמשים באפשרויות הבאות:
כדי להשתמש בחלוקה למחיצות לפי טווח של מספרים שלמים, משאירים את השדה חלוקה למחיצות של טבלת יעדים ריק.
כדי להשתמש בחלוקה למחיצות לפי עמודת יחידת זמן, ציינו את שם העמודה בשדה חלוקה למחיצות של טבלת יעדים כשאתם מגדירים שאילתה מתוזמנת.
כדי להשתמש בחלוקה למחיצות לפי זמן הטמעה, משאירים את השדה Destination table partitioning ריק ומציינים את החלוקה למחיצות לפי תאריך בשם של טבלת היעד. לדוגמה,
mytable${run_date}. מידע נוסף זמין במאמר תחביר של תבניות פרמטרים.
הפרמטרים הזמינים
כשמגדירים את השאילתה המתוזמנת, אפשר לציין איך רוצים לחלק את טבלת היעד באמצעות פרמטרים של זמן ריצה.
| פרמטר | סוג התבנית | ערך |
|---|---|---|
run_time |
חותמת זמן בפורמט | לפי שעון UTC, בהתאם ללוח הזמנים. בשאילתות שנקבעו באופן קבוע, run_time מייצג את זמן ההפעלה המיועד. לדוגמה, אם השאילתה המתוזמנת מוגדרת ל "כל 24 שעות", ההפרש של run_time בין שתי שאילתות עוקבות הוא בדיוק 24 שעות, למרות שזמן הביצוע בפועל עשוי להשתנות מעט.אפשר לעיין בקטע TransferRun.runTime. |
run_date |
מחרוזת תאריך | התאריך של הפרמטר run_time בפורמט הבא: %Y-%m-%d, לדוגמה: 2018-01-01. הפורמט הזה תואם לטבלאות שמחולקות למחיצות (Partitions) לפי זמני הטמעת הנתונים. |
מערכת תבניות
שאילתות מתוזמנות תומכות בפרמטרים של זמן ריצה בשם של טבלת היעד, באמצעות תחביר של תבניות.
תחביר של תבניות פרמטרים
תחביר התבניות תומך בתבניות בסיסיות של מחרוזות ובהזמן שחלף. הפרמטרים מופיעים בפורמטים הבאים:
{run_date}{run_time[+\-offset]|"time_format"}
| פרמטר | מטרה |
|---|---|
run_date |
הפרמטר הזה מוחלף בתאריך בפורמט YYYYMMDD. |
run_time |
הפרמטר הזה תומך במאפיינים הבאים:
|
- אסור להוסיף רווחים בין run_time, offset ופורמט הזמן.
- כדי לכלול סוגריים מסולסלים במחרוזת, אפשר להוסיף להם תו בריחה (escape) כמו
'\{' and '\}'. - כדי לכלול מירכאות או קו אנכי ב-time_format, כמו
"YYYY|MM|DD", אפשר להוסיף להם תו בריחה במחרוזת הפורמט, למשל:'\"'או'\|'.
דוגמאות לתבניות של פרמטרים
בדוגמאות האלה אפשר לראות איך מציינים שמות של טבלאות יעד בפורמטים שונים של זמן, ואיך משנים את זמן ההרצה.| run_time (UTC) | פרמטר של תבנית | שם טבלת היעד של הפלט |
|---|---|---|
| 2018-02-15 00:01:00 | mytable |
mytable |
| 2018-02-15 00:01:00 | mytable_{run_time|"%Y%m%d"} |
mytable_20180215 |
| 2018-02-15 00:01:00 | mytable_{run_time+25h|"%Y%m%d"} |
mytable_20180216 |
| 2018-02-15 00:01:00 | mytable_{run_time-1h|"%Y%m%d"} |
mytable_20180214 |
| 2018-02-15 00:01:00 | mytable_{run_time+1.5h|"%Y%m%d%H"}
או mytable_{run_time+90m|"%Y%m%d%H"} |
mytable_2018021501 |
| 2018-02-15 00:01:00 | {run_time+97s|"%Y%m%d"}_mytable_{run_time+97s|"%H%M%S"} |
20180215_mytable_000237 |
שימוש בחשבון שירות
אתם יכולים להגדיר שאילתה מתוזמנת לאימות כחשבון שירות. חשבון שירות הוא חשבון מיוחד שמשויך לפרויקט ב- Google Cloud . חשבון השירות יכול להריץ משימות, כמו שאילתות מתוזמנות או צינורות עיבוד נתונים ברצף (batch processing), באמצעות פרטי הכניסה של השירות עצמו במקום פרטי הכניסה של משתמש קצה.
במאמר מבוא לאימות תוכלו לקרוא מידע נוסף על אימות באמצעות חשבונות שירות.
אתם יכולים להגדיר את השאילתה המתוזמנת באמצעות חשבון שירות. אם נכנסתם באמצעות זהות מאוחדת, תצטרכו חשבון שירות כדי ליצור העברה. אם נכנסתם באמצעות חשבון Google, חשבון שירות להעברה הוא אופציונלי.
אתם יכולים לעדכן שאילתה מתוזמנת קיימת עם פרטי הכניסה של חשבון שירות באמצעות כלי שורת הפקודה של BigQuery או מסוף Google Cloud . למידע נוסף, ראו עדכון פרטי הכניסה של שאילתה מתוזמנת.
ציון מפתח הצפנה עם שאילתות מתוזמנות
אתם יכולים לציין מפתחות הצפנה בניהול הלקוח (CMEK) כדי להצפין נתונים להרצת העברה. אתם יכולים להשתמש ב-CMEK כדי לתמוך בהעברות משאילתות מתוזמנות.כשמציינים CMEK בהעברה, שירות העברת הנתונים ל-BigQuery מחיל את ה-CMEK על כל מטמון ביניים בדיסק של הנתונים שנקלטו, כדי שכל תהליך העבודה של העברת הנתונים יהיה תואם ל-CMEK.
אי אפשר לעדכן העברה קיימת כדי להוסיף CMEK אם ההעברה לא נוצרה במקור עם CMEK. לדוגמה, אי אפשר לשנות טבלת יעד שהוצפנה במקור כברירת מחדל, כך שתוצפן עכשיו באמצעות CMEK. באופן דומה, אי אפשר לשנות טבלת יעד שמוצפנת באמצעות CMEK לסוג אחר של הצפנה.
אפשר לעדכן את ה-CMEK של העברה אם הגדרת ההעברה נוצרה במקור עם הצפנת CMEK. כשמעדכנים מפתח CMEK בהגדרות ההעברה, שירות העברת הנתונים ל-BigQuery מעביר את מפתח ה-CMEK לטבלאות היעד בהפעלה הבאה של ההעברה, ומחליף את כל מפתחות ה-CMEK המיושנים במפתח ה-CMEK החדש במהלך ההעברה. מידע נוסף זמין במאמר עדכון העברה.
אפשר גם להשתמש במפתחות ברירת המחדל של הפרויקט. כשמציינים מפתח ברירת מחדל לפרויקט בהעברה, שירות העברת הנתונים ל-BigQuery משתמש במפתח ברירת המחדל של הפרויקט כמפתח ברירת המחדל לכל הגדרות ההעברה החדשות.
הגדרת שאילתות מתוזמנות באמצעות חשבון שירות
Java
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של Java במדריך למתחילים של BigQuery באמצעות ספריות לקוח. למידע נוסף, קראו את מאמרי העזרה של BigQuery Java API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
Python
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של Python במדריך למתחילים של BigQuery באמצעות ספריות לקוח. למידע נוסף, קראו את מאמרי העזרה של BigQuery Python API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
הצגת הסטטוס של שאילתה מתוזמנת
המסוף
כדי לראות את הסטטוס של השאילתות המתוזמנות, בתפריט הניווט לוחצים על Scheduling ומסננים לפי Scheduled Query. לוחצים על שאילתה מתוזמנת כדי לקבל פרטים נוספים עליה.
BQ
שאילתות מתוזמנות הן סוג של העברה. כדי להציג את הפרטים של שאילתה מתוזמנת, קודם צריך להשתמש בכלי שורת הפקודה של BigQuery כדי להציג את רשימת הגדרות ההעברה.
מזינים את הפקודה bq ls ומציינים את דגל ההעברה --transfer_config. צריך גם את הדגלים הבאים:
--transfer_location
לדוגמה:
bq ls \
--transfer_config \
--transfer_location=us
כדי להציג את הפרטים של שאילתה מתוזמנת אחת, מזינים את הפקודה bq show ומציינים את הערך של transfer_path של השאילתה המתוזמנת או של הגדרת ההעברה.
לדוגמה:
bq show \
--transfer_config \
projects/862514376110/locations/us/transferConfigs/5dd12f26-0000-262f-bc38-089e0820fe38
API
משתמשים ב-method projects.locations.transferConfigs.list ומספקים מופע של המשאב TransferConfig.
Java
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של Java במדריך למתחילים של BigQuery באמצעות ספריות לקוח. למידע נוסף, קראו את מאמרי העזרה של BigQuery Java API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
Python
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של Python במדריך למתחילים של BigQuery באמצעות ספריות לקוח. למידע נוסף, קראו את מאמרי העזרה של BigQuery Python API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
עדכון שאילתות מתוזמנות
המסוף
כדי לעדכן שאילתה מתוזמנת:
- בתפריט הניווט, לוחצים על Scheduled queries או על Scheduling.
- ברשימת השאילתות המתוזמנות, לוחצים על שם השאילתה שרוצים לשנות.
- בדף Scheduled query details שנפתח, לוחצים על Edit.
- אופציונלי: משנים את הטקסט של השאילתה בחלונית העריכה של השאילתה.
- לוחצים על Schedule query ובוחרים באפשרות Update scheduled query.
- אופציונלי: משנים את אפשרויות התזמון האחרות של השאילתה.
- לוחצים על עדכון.
BQ
שאילתות מתוזמנות הן סוג של העברה. כדי לעדכן שאילתה מתוזמנת, אתם יכולים להשתמש בכלי שורת הפקודה של BigQuery כדי ליצור הגדרות העברה.
מזינים את הפקודה bq update עם הדגל הנדרש --transfer_config.
דגלים אופציונליים:
--project_idהוא מזהה הפרויקט. אם לא מציינים את--project_id, המערכת משתמשת בפרויקט שמוגדר כברירת מחדל.
--scheduleהיא התדירות שבה רוצים להריץ את השאילתה. אם לא מציינים את--schedule, ברירת המחדל היא "כל 24 שעות" על סמך זמן היצירה.המדיניות
--service_account_nameנכנסת לתוקף רק אם גם המדיניות--update_credentialsמוגדרת. למידע נוסף, ראו עדכון פרטי הכניסה של שאילתה מתוזמנת.
--target_dataset(אופציונלי לשאילתות DDL ו-DML) היא דרך חלופית לתת שם למערך הנתונים של היעד לתוצאות השאילתה, כשמשתמשים בשאילתות DDL ו-DML.
--display_nameהוא השם של השאילתה המתוזמנת.
--paramsהפרמטרים של הגדרת ההעברה שנוצרה, בפורמט JSON. לדוגמה: --params='{"param":"param_value"}'.
--destination_kms_keyמציין את מזהה משאב המפתח של מפתח Cloud KMS, אם משתמשים במפתח הצפנה בניהול הלקוח (CMEK) להעברה הזו. במאמר ציון מפתח הצפנה עם שאילתות מתוזמנות מוסבר איך מפתחות הצפנה בניהול הלקוח (CMEK) פועלים עם שירות העברת הנתונים ל-BigQuery.
bq update \ --target_dataset=dataset \ --display_name=name \ --params='parameters' --transfer_config \ RESOURCE_NAME
מחליפים את מה שכתוב בשדות הבאים:
-
dataset. מערך הנתונים לטירגוט של הגדרות ההעברה. הפרמטר הזה הוא אופציונלי לשאילתות DDL ו-DML. הוא נדרש לכל שאר השאילתות. -
name. השם המוצג של הגדרות ההעברה. השם המוצג יכול להיות כל ערך שתוכלו לזהות מאוחר יותר אם תצטרכו לשנות את השאילתה. -
parameters. מכיל את הפרמטרים של הגדרות ההעברה שנוצרו בפורמט JSON. לדוגמה:--params='{"param":"param_value"}'.- בשאילתה מתוזמנת, צריך לספק את הפרמטר
query. - הפרמטר
destination_table_name_templateהוא השם של טבלת היעד. הפרמטר הזה הוא אופציונלי לשאילתות DDL ו-DML. הוא נדרש בכל שאר השאילתות. - בפרמטר
write_disposition, אתם יכולים לבחור באפשרותWRITE_TRUNCATEכדי לחתוך (להחליף) את טבלת היעד, או באפשרותWRITE_APPENDכדי להוסיף את תוצאות השאילתה לטבלת היעד. הפרמטר הזה אופציונלי בשאילתות DDL ו-DML. הוא נדרש בכל שאר השאילתות.
- בשאילתה מתוזמנת, צריך לספק את הפרמטר
- אופציונלי:
--destination_kms_keyמציין את מזהה המשאב של המפתח ב-Cloud KMS, לדוגמהprojects/project_name/locations/us/keyRings/key_ring_name/cryptoKeys/key_name. RESOURCE_NAME: שם המשאב של ההעברה (נקרא גם הגדרות ההעברה). אם אתם לא יודעים את שם המשאב של ההעברה, אתם יכולים למצוא אותו באמצעות:bq ls --transfer_config --transfer_location=location.
לדוגמה, הפקודה הבאה מעדכנת הגדרת העברה של שאילתה מתוזמנת בשם My Scheduled Query באמצעות השאילתה SELECT 1
from mydataset.test. טבלת היעד mytable נחתכת בכל כתיבה, ומערך הנתונים של היעד הוא mydataset:
bq update \
--target_dataset=mydataset \
--display_name='My Scheduled Query' \
--params='{"query":"SELECT 1 from mydataset.test","destination_table_name_template":"mytable","write_disposition":"WRITE_TRUNCATE"}'
--transfer_config \
projects/myproject/locations/us/transferConfigs/1234a123-1234-1a23-1be9-12ab3c456de7
API
משתמשים ב-method projects.transferConfigs.patch ומציינים את שם המשאב של ההעברה באמצעות הפרמטר transferConfig.name. אם אתם לא יודעים את שם המשאב של ההעברה, אתם יכולים להשתמש בפקודה bq ls --transfer_config --transfer_location=location כדי להציג את כל ההעברות, או להפעיל את ה-method projects.locations.transferConfigs.list ולציין את מזהה הפרויקט באמצעות הפרמטר parent.
Java
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של Java במדריך למתחילים של BigQuery באמצעות ספריות לקוח. למידע נוסף, קראו את מאמרי העזרה של BigQuery Java API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
Python
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של Python במדריך למתחילים של BigQuery באמצעות ספריות לקוח. למידע נוסף, קראו את מאמרי העזרה של BigQuery Python API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
עדכון שאילתות מתוזמנות עם הגבלות בעלות
אם תנסו לעדכן שאילתה מתוזמנת שלא אתם יצרתם, יכול להיות שהעדכון ייכשל ותופיע הודעת השגיאה הבאה:
Cannot modify restricted parameters without taking ownership of the transfer configuration.
הבעלים של שאילתה מתוזמנת הוא הזהות שפרטי הכניסה שלה משמשים להרצת השאילתה:
- פרטי כניסה של משתמש: אם השאילתה פועלת כמשתמש, המשתמש הזה הוא הבעלים.
- פרטי כניסה לחשבון שירות: אם השאילתה פועלת כחשבון שירות, חשבון השירות הוא הבעלים.
המשתמש המשויך מופיע בפרטי ההגדרה של השאילתה המתוזמנת. במאמר עדכון פרטי הכניסה של שאילתה מתוזמנת מוסבר איך לעדכן את השאילתה המתוזמנת כדי לקבל בעלות. כדי לתת למשתמשים גישה לחשבון שירות, צריך להיות לכם את התפקיד "משתמש בחשבון שירות".
הפרמטרים שמוגבלים לבעלים של שאילתות מתוזמנות הם:
- טקסט השאילתה
- מערך הנתונים של היעד
- תבנית השם של טבלת היעד
עדכון פרטי הכניסה של שאילתה מתוזמנת
אם אתם מתזמנים שאילתה קיימת, יכול להיות שתצטרכו לעדכן את פרטי הכניסה של המשתמש בשאילתה. פרטי הכניסה מתעדכנים באופן אוטומטי בשאילתות מתוזמנות חדשות.
מצבים נוספים שבהם יכול להיות שיהיה צורך לעדכן את פרטי הכניסה:
- אתם רוצים להריץ שאילתה על נתונים ב-Google Drive בשאילתה מתוזמנת.
כשמנסים לתזמן את השאילתה, מקבלים את השגיאה INVALID_USER:
Error code 5 : Authentication failure: User Id not found. Error code: INVALID_USERIDכשמנסים לעדכן את השאילתה, מופיעה הודעת השגיאה הבאה לגבי פרמטרים מוגבלים:
Cannot modify restricted parameters without taking ownership of the transfer configuration.
המסוף
כדי לרענן את פרטי הכניסה הקיימים בשאילתה מתוזמנת:
לוחצים על הלחצן MORE (עוד) ובוחרים באפשרות Update credentials (עדכון פרטי הכניסה).
השינוי ייכנס לתוקף תוך 10 עד 20 דקות. יכול להיות שתצטרכו לנקות את המטמון של הדפדפן.
BQ
שאילתות מתוזמנות הן סוג של העברה. כדי לעדכן את פרטי הכניסה של שאילתה מתוזמנת, אפשר להשתמש בכלי שורת הפקודה של BigQuery כדי לעדכן את הגדרות ההעברה.
מזינים את הפקודה bq update ומציינים את דגל ההעברה --transfer_config. צריך גם את הדגלים הבאים:
--update_credentials
דגל אופציונלי:
-
--service_account_nameמשמש לאימות השאילתה המתוזמנת באמצעות חשבון שירות במקום חשבון המשתמש שלכם.
לדוגמה, הפקודה הבאה מעדכנת הגדרת העברה של שאילתה מתוזמנת כדי לבצע אימות כחשבון שירות:
bq update \
--update_credentials \
--service_account_name=abcdef-test-sa@abcdef-test. \
--transfer_config \
projects/myproject/locations/us/transferConfigs/1234a123-1234-1a23-1be9-12ab3c456de7
Java
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של Java במדריך למתחילים של BigQuery באמצעות ספריות לקוח. למידע נוסף, קראו את מאמרי העזרה של BigQuery Java API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
Python
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של Python במדריך למתחילים של BigQuery באמצעות ספריות לקוח. למידע נוסף, קראו את מאמרי העזרה של BigQuery Python API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
הגדרה של הפעלה ידנית בתאריכים היסטוריים
בנוסף לתזמון שאילתה להרצה בעתיד, אתם יכולים גם להפעיל הרצות מיידיות באופן ידני. הפעלה מיידית נדרשת אם השאילתה משתמשת בפרמטר run_date, והיו בעיות במהלך הפעלה קודמת.
לדוגמה, בכל יום בשעה 09:00 אתם שולחים שאילתה לטבלת מקור כדי למצוא שורות שתואמות לתאריך הנוכחי. עם זאת, אתם מגלים שבשלושת הימים האחרונים לא נוספו נתונים לטבלת המקור. במצב כזה, אתם יכולים להגדיר שהשאילתה תפעל על נתונים היסטוריים בטווח תאריכים שתציינו. השאילתה פועלת באמצעות שילובים של הפרמטרים run_date ו-run_time, שתואמים לתאריכים שהגדרתם בשאילתה המתוזמנת.
אחרי שמגדירים שאילתה מתוזמנת, אפשר להריץ אותה באמצעות טווח תאריכים היסטורי:
המסוף
אחרי שלוחצים על Schedule כדי לשמור את השאילתה המתוזמנת, אפשר ללחוץ על הלחצן Scheduled queries כדי לראות את רשימת השאילתות המתוזמנות. לוחצים על שם תצוגה כלשהו כדי לראות את פרטי התזמון של השאילתה. בפינה השמאלית העליונה של הדף, לוחצים על Schedule backfill כדי לציין טווח תאריכים היסטורי.
זמני ההפעלה שנבחרו נמצאים בטווח שבחרתם, כולל התאריך הראשון ולא כולל התאריך האחרון.
דוגמה 1
השאילתה המתוזמנת מוגדרת לפעול בשעה every day 09:00 לפי שעון החוף המערבי של ארה"ב. חסרים נתונים מ-1 בינואר, מ-2 בינואר ומ-3 בינואר. בוחרים את טווח התאריכים ההיסטורי הבא:
Start Time = 1/1/19
End Time = 1/4/19
השאילתה פועלת באמצעות הפרמטרים run_date ו-run_time, שתואמים לזמנים הבאים:
- 1/1/19 09:00 שעון החוף המערבי של ארה"ב
- 2.1.19 בשעה 09:00 לפי שעון החוף המערבי של ארה"ב
- 3 בינואר 2019, 09:00 שעון החוף המערבי של ארה"ב
דוגמה 2
השאילתה המתוזמנת מוגדרת לפעול בשעה every day 23:00 לפי שעון החוף המערבי של ארה"ב. חסרים נתונים מ-1 בינואר, מ-2 בינואר ומ-3 בינואר. בוחרים את טווחי התאריכים ההיסטוריים הבאים (התאריכים המאוחרים יותר נבחרים כי התאריך ב-UTC שונה בשעה 23:00 לפי שעון החוף המערבי של ארה"ב):
Start Time = 1/2/19
End Time = 1/5/19
השאילתה פועלת באמצעות הפרמטרים run_date ו-run_time, שתואמים לזמנים הבאים:
- 2.1.2019 בשעה 06:00 לפי שעון UTC, או 1.1.2019 בשעה 23:00 לפי שעון החוף המערבי
- 3 בינואר 2019 בשעה 06:00 לפי שעון UTC, או 2 בינואר 2019 בשעה 23:00 לפי שעון החוף המערבי של ארה"ב
- 1/4/19 06:00 UTC, או 1/3/2019 23:00 שעון החוף המערבי
אחרי שמגדירים הפעלות ידניות, צריך לרענן את הדף כדי לראות אותן ברשימת ההפעלות.
BQ
כדי להריץ את השאילתה באופן ידני על טווח תאריכים היסטורי:
מזינים את הפקודה bq mk ומציינים את הדגל של הרצת ההעברה --transfer_run. צריך גם את הדגלים הבאים:
--start_time--end_time
bq mk \ --transfer_run \ --start_time='start_time' \ --end_time='end_time' \ resource_name
מחליפים את מה שכתוב בשדות הבאים:
-
start_timeוגםend_time. חותמות זמן שמסתיימות ב-Z או מכילות היסט תקין של אזור זמן. דוגמאות:- 2017-08-19T12:11:35.00Z
- 2017-05-25T00:00:00+00:00
-
resource_name. שם המשאב של השאילתה המתוזמנת (או של ההעברה). שם המשאב נקרא גם הגדרת ההעברה.
לדוגמה, הפקודה הבאה מתזמנת מילוי חוסרים למשאב של שאילתה מתוזמנת (או הגדרת העברה):
projects/myproject/locations/us/transferConfigs/1234a123-1234-1a23-1be9-12ab3c456de7.
bq mk \
--transfer_run \
--start_time 2017-05-25T00:00:00Z \
--end_time 2017-05-25T00:00:00Z \
projects/myproject/locations/us/transferConfigs/1234a123-1234-1a23-1be9-12ab3c456de7
מידע נוסף זמין במאמר bq mk --transfer_run.
API
משתמשים ב-method projects.locations.transferConfigs.scheduleRun ומספקים נתיב למשאב TransferConfig.
Java
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של Java במדריך למתחילים של BigQuery באמצעות ספריות לקוח. למידע נוסף, קראו את מאמרי העזרה של BigQuery Java API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
Python
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של Python במדריך למתחילים של BigQuery באמצעות ספריות לקוח. למידע נוסף, קראו את מאמרי העזרה של BigQuery Python API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
הגדרת התראות לגבי שאילתות מתוזמנות
אפשר להגדיר מדיניות התראות לשאילתות מתוזמנות על סמך מדדים של ספירת שורות. מידע נוסף זמין במאמר הגדרת התראות באמצעות שאילתות מתוזמנות.
מחיקת שאילתות מתוזמנות
המסוף
כדי למחוק שאילתה מתוזמנת בדף Scheduled queries במסוף Google Cloud :
- בתפריט הניווט, לוחצים על Scheduled queries.
- ברשימת השאילתות המתוזמנות, לוחצים על השם של השאילתה שרוצים למחוק.
בדף Scheduled query details, לוחצים על Delete.
אפשר גם למחוק שאילתה מתוזמנת בדף Scheduling במסוף Google Cloud :
- בתפריט הניווט, לוחצים על תזמון.
- ברשימת השאילתות המתוזמנות, לוחצים על התפריט Actions של השאילתה המתוזמנת שרוצים למחוק.
בוחרים את האפשרות Delete.
Java
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של Java במדריך למתחילים של BigQuery באמצעות ספריות לקוח. למידע נוסף, קראו את מאמרי העזרה של BigQuery Java API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
Python
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של Python במדריך למתחילים של BigQuery באמצעות ספריות לקוח. למידע נוסף, קראו את מאמרי העזרה של BigQuery Python API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
השבתה או הפעלה של שאילתות מתוזמנות
כדי להשהות את ההרצות המתוזמנות של שאילתה מסוימת בלי למחוק את התזמון, אתם יכולים להשבית את התזמון.
כדי להשבית תזמון של שאילתה שנבחרה:
- בתפריט הניווט של מסוף Google Cloud , לוחצים על Scheduling.
- ברשימת השאילתות המתוזמנות, לוחצים על התפריט Actions של השאילתה המתוזמנת שרוצים להשבית.
לוחצים על השבתה.
כדי להפעיל שאילתה מתוזמנת מושבתת, לוחצים על התפריט Actions של השאילתה המתוזמנת שרוצים להפעיל ובוחרים באפשרות Enable.
מכסות
שאילתות מתוזמנות תמיד מופעלות כמשימות של שאילתות באצווה, וכפופות לאותן מכסות ומגבלות של BigQuery כמו שאילתות ידניות.
למרות ששאילתות מתוזמנות משתמשות בתכונות של שירות העברת הנתונים ל-BigQuery, הן לא העברות ולא כפופות למכסת משימות הטעינה.
הזהות שמשמשת להרצת השאילתה קובעת אילו מכסות יחולו. זה תלוי בהגדרות של השאילתה המתוזמנת:
פרטי הכניסה של היוצר (ברירת מחדל): אם לא מציינים חשבון שירות, השאילתה המתוזמנת פועלת באמצעות פרטי הכניסה של המשתמש שיצר אותה. החיוב על משימת השאילתה מתבצע בפרויקט של היוצר, והיא כפופה למכסות של המשתמש והפרויקט.
פרטי כניסה לחשבון שירות: אם מגדירים את השאילתה המתוזמנת לשימוש בחשבון שירות, היא פועלת באמצעות פרטי כניסה לחשבון השירות. במקרה כזה, החיוב על המשימה עדיין מתבצע בפרויקט שמכיל את השאילתה המתוזמנת, אבל הביצוע כפוף למכסות של חשבון השירות שצוין.
תמחור
התמחור של שאילתות מתוזמנות זהה לתמחור של שאילתות ידניות ב-BigQuery.
אזורים נתמכים
אפשר להשתמש בשאילתות מתוזמנות במיקומים הבאים.
אזורים
בטבלה הבאה מפורטים האזורים ביבשת אמריקה שבהם BigQuery זמין.| תיאור האזור | שם האזור | פרטים |
|---|---|---|
| קולומבוס, אוהיו | us-east5 |
|
| דאלאס | us-south1 |
|
| אייווה | us-central1 |
|
| לוס אנג'לס | us-west2 |
|
| לאס וגאס | us-west4 |
|
| מקסיקו | northamerica-south1 |
|
| מונטריאול | northamerica-northeast1 |
|
| צפון וירג'יניה | us-east4 |
|
| אוקלהומה | us-central2 |
|
| אורגון | us-west1 |
|
| סולט לייק סיטי | us-west3 |
|
| סאו פאולו | southamerica-east1 |
|
| סנטיאגו | southamerica-west1 |
|
| דרום קרוליינה | us-east1 |
|
| טורונטו | northamerica-northeast2 |
|
| תיאור האזור | שם האזור | פרטים |
|---|---|---|
| בנגקוק | asia-southeast3 |
|
| דלהי | asia-south2 |
|
| הונג קונג | asia-east2 |
|
| ג'קארטה | asia-southeast2 |
|
| מלבורן | australia-southeast2 |
|
| מומבאי | asia-south1 |
|
| אוסקה | asia-northeast2 |
|
| סיאול | asia-northeast3 |
|
| סינגפור | asia-southeast1 |
|
| סידני | australia-southeast1 |
|
| טייוואן | asia-east1 |
|
| טוקיו | asia-northeast1 |
| תיאור האזור | שם האזור | פרטים |
|---|---|---|
| בלגיה | europe-west1 |
|
| ברלין | europe-west10 |
|
| פינלנד | europe-north1 |
|
| פרנקפורט | europe-west3 |
|
| לונדון | europe-west2 |
|
| מדריד | europe-southwest1 |
|
| מילאנו | europe-west8 |
|
| הולנד | europe-west4 |
|
| פריז | europe-west9 |
|
| שטוקהולם | europe-north2 |
|
| טורינו | europe-west12 |
|
| ורשה | europe-central2 |
|
| ציריך | europe-west6 |
|
| תיאור האזור | שם האזור | פרטים |
|---|---|---|
| דמאם | me-central2 |
|
| דוחה | me-central1 |
|
| תל אביב | me-west1 |
| תיאור האזור | שם האזור | פרטים |
|---|---|---|
| יוהנסבורג | africa-south1 |
במספר אזורים
בטבלה הבאה מפורטים האזורים שבהם BigQuery זמין. כשבוחרים כמה אזורים, מאפשרים ל-BigQuery לבחור אזור אחד מתוך כמה אזורים שבהם הנתונים מאוחסנים ומעובדים.| תיאור של המיקום "במספר אזורים" | השם של המיקום "במספר אזורים" |
|---|---|
| מרכזי נתונים במדינות החברות באיחוד האירופי1 | EU |
| מרכזי נתונים בארצות הברית2 | US |
1 נתונים שנמצאים במיקום "במספר אזורים" של EU מאוחסנים רק באחד מהמיקומים הבאים: europe-west1 (בלגיה) או europe-west4 (הולנד).
המיקום המדויק שבו הנתונים מאוחסנים ומעובדים נקבע באופן אוטומטי על ידי BigQuery.
2 נתונים שנמצאים במיקום "במספר אזורים" של US מאוחסנים רק באחד מהמיקומים הבאים: us-central1 (איווה), us-west1 (אורגון) או us-central2 (אוקלהומה). המיקום המדויק שבו הנתונים מאוחסנים ומעובדים נקבע באופן אוטומטי על ידי BigQuery.
המאמרים הבאים
- במאמר יצירת קובצי snapshot של טבלאות באמצעות שאילתה מתוזמנת מופיעה דוגמה לשאילתה מתוזמנת שמשתמשת בחשבון שירות וכוללת את הפרמטרים
@run_dateו-@run_time.