תזמון שאילתות

בדף הזה מוסבר איך לתזמן שאילתות חוזרות ב-BigQuery.

אפשר לתזמן שאילתות להפעלה חוזרת. שאילתות מתוזמנות צריכות להיכתב ב-GoogleSQL, שיכול לכלול הצהרות של שפת הגדרת נתונים (DDL) ושל שפת טיפול בנתונים (DML). אפשר לארגן את תוצאות השאילתה לפי תאריך ושעה על ידי הגדרת פרמטרים למחרוזת השאילתה ולטבלת היעד.

כשיוצרים או מעדכנים את לוח הזמנים של שאילתה, השעה המתוזמנת של השאילתה מומרת מהשעון המקומי לשעון UTC. שעון UTC לא מושפע משעון קיץ.

לפני שמתחילים

מגבלות

  • שאילתות מתוזמנות שמופעלות בדיוק בשעה עגולה (לדוגמה, 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.

תפקיד ה-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, במסוף בוחרים את מיקום העיבוד או האזור. Google Cloud צריך לציין מיקום עיבוד בשאילתות DDL או DML שיוצרות את טבלת היעד.

אם טבלת היעד קיימת ואתם משתמשים בWRITE_APPEND העדפת הכתיבה, אפליקציית BigQuery מוסיפה נתונים לטבלת היעד ומנסה למפות את הסכימה. ‫BigQuery מאפשר באופן אוטומטי להוסיף שדות ולשנות את הסדר שלהם, וגם להתמודד עם שדות אופציונליים חסרים. אם הסכימה של הטבלה משתנה כל כך הרבה בין הרצות, כך ש-BigQuery לא יכול לעבד את השינויים באופן אוטומטי, השאילתה המתוזמנת תיכשל.

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

מערך הנתונים והטבלה של היעד של שאילתה מתוזמנת צריכים להיות באותו פרויקט כמו השאילתה המתוזמנת.

העדפות כתיבה

העדפת הכתיבה שבוחרים קובעת איך תוצאות השאילתה ייכתבו לטבלת יעד קיימת.

  • WRITE_TRUNCATE: אם הטבלה קיימת, BigQuery מחליף את נתוני הטבלה.
  • WRITE_APPEND: אם הטבלה קיימת, אפליקציית BigQuery מוסיפה את הנתונים לטבלה.

אם משתמשים בשאילתת DDL או DML, אי אפשר להשתמש באפשרות של העדפת כתיבה.

יצירה, חיתוך או הוספה של טבלת יעד מתבצעים רק אם BigQuery מצליח להשלים את השאילתה. פעולות של יצירה, חיתוך או הוספה מתרחשות כעדכון אטומי אחד בסיום העבודה.

סידור באשכולות

שאילתות מתוזמנות יכולות ליצור אשכולות רק בטבלאות חדשות, כשהטבלה נוצרת באמצעות משפט DDL CREATE TABLE AS SELECT. אפשר לעיין במאמר יצירת טבלה מסודרת באשכולות מתוצאה של שאילתה בדף שימוש בהצהרות של שפת הגדרת נתונים.

אפשרויות חלוקה למחיצות

שאילתות מתוזמנות יכולות ליצור טבלאות יעד עם מחיצות או בלי מחיצות. אפשר להשתמש בחלוקה למחיצות במסוף Google Cloud , בכלי שורת הפקודה של BigQuery ובשיטות ההגדרה של ה-API. אם משתמשים בשאילתת DDL או DML עם חלוקה למחיצות, משאירים את השדה של חלוקת טבלת היעד למחיצות ריק.

אפשר להשתמש בסוגים הבאים של חלוקת טבלאות למחיצות ב-BigQuery:

כדי ליצור טבלה עם מחיצות באמצעות שאילתה מתוזמנת במסוףGoogle Cloud , משתמשים באפשרויות הבאות:

  • כדי להשתמש בחלוקה למחיצות של טווח מספרים שלמים, צריך להשאיר את השדה 'חלוקה למחיצות של טבלת היעד' ריק.

  • כדי להשתמש בחלוקת מחיצות לפי עמודה של יחידת זמן, צריך לציין את שם העמודה בשדה חלוקת המחיצות של טבלת היעד כשמגדירים שאילתה מתוזמנת.

  • כדי להשתמש בחלוקה למחיצות בזמן ההטמעה, משאירים את השדה של חלוקת טבלת היעד למחיצות ריק ומציינים את חלוקת התאריכים למחיצות בשם של טבלת היעד. לדוגמה, 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 הפרמטר הזה תומך במאפיינים הבאים:


offset
הזמן שחלף, המבוטא בשעות (h), דקות (m) ושניות (s), לפי הסדר הזה. אין תמיכה בערך
ימים (d).
מותר להשתמש במספרים עשרוניים, לדוגמה: 1.5h.

time_format
מחרוזת פורמט. הפרמטרים הנפוצים ביותר לעיצוב הם שנים (%Y), חודשים (%m) וימים (%d).
בטבלאות עם חלוקה למחיצות, הסיומת הנדרשת היא YYYYMMDD – זה שווה ל-‎%Y%m%d.

מידע נוסף על עיצוב רכיבי תאריך ושעה

הערות לגבי השימוש:
  • אסור להוסיף רווח לבן בין run_time,‏ offset ו-time format.
  • כדי לכלול בספרייה סוגריים מסולסלים, אפשר להשתמש בתו בריחה (escape) '\{' and '\}'.
  • כדי לכלול מירכאות או קו אנכי ב-time_format, כמו "YYYY|MM|DD", אפשר להשתמש בתו בריחה במחרוזת הפורמט כך: '\"' או '\|'.

דוגמאות ליצירת תבניות של פרמטרים

בדוגמאות האלה אפשר לראות איך מציינים שמות של טבלאות יעד עם פורמטים שונים של זמן, ואיך משנים את זמן הריצה.
run_time (UTC) פרמטר מבוסס-תבנית שם טבלת היעד של הפלט
2018-02-15 00:00:00 mytable mytable
2018-02-15 00:00:00 mytable_{run_time|"%Y%m%d"} mytable_20180215
2018-02-15 00:00:00 mytable_{run_time+25h|"%Y%m%d"} mytable_20180216
2018-02-15 00:00:00 mytable_{run_time-1h|"%Y%m%d"} mytable_20180214
2018-02-15 00:00:00 mytable_{run_time+1.5h|"%Y%m%d%H"}
או
mytable_{run_time+90m|"%Y%m%d%H"}
mytable_2018021501
2018-02-15 00:00:00 {run_time+97s|"%Y%m%d"}_mytable_{run_time+97s|"%H%M%S"} 20180215_mytable_000137

שימוש בחשבון שירות

אפשר להגדיר שאילתה מתוזמנת שתאומת כחשבון שירות. חשבון שירות הוא חשבון מיוחד שמשויך לפרויקט שלכם ב- Google Cloud . חשבון השירות יכול להריץ משימות, כמו שאילתות מתוזמנות או צינורות לעיבוד ברצף (batch processing), באמצעות פרטי הכניסה שלו לשירות ולא באמצעות פרטי הכניסה של משתמש קצה.

מידע נוסף על אימות באמצעות חשבונות שירות זמין במאמר מבוא לאימות.

ציון מפתח הצפנה בשאילתות מתוזמנות

אפשר לציין מפתחות הצפנה בניהול הלקוח (CMEK) כדי להצפין נתונים להרצת העברה. אתם יכולים להשתמש ב-CMEK כדי לתמוך בהעברות משאילתות מתוזמנות.

כשמציינים CMEK בהעברה, שירות העברת הנתונים ל-BigQuery מחיל את ה-CMEK על כל מטמון ביניים בדיסק של נתונים שהועברו, כך שכל תהליך העבודה של העברת הנתונים תואם ל-CMEK.

אי אפשר לעדכן העברה קיימת כדי להוסיף CMEK אם ההעברה לא נוצרה במקור עם CMEK. לדוגמה, אי אפשר לשנות טבלת יעד שהוצפנה במקור בהצפנה שמוגדרת כברירת מחדל כך שהיא תוצפן עכשיו באמצעות CMEK. באופן דומה, אי אפשר לשנות טבלת יעד מוצפנת באמצעות CMEK כך שתהיה לה הצפנה מסוג אחר.

אפשר לעדכן CMEK להעברה אם הגדרת ההעברה נוצרה במקור עם הצפנת CMEK. כשמעדכנים את ה-CMEK בהגדרות של העברה, שירות העברת הנתונים ל-BigQuery מעביר את ה-CMEK לטבלאות היעד בהפעלה הבאה של ההעברה. במהלך ההפעלה, שירות העברת הנתונים ל-BigQuery מחליף את כל ה-CMEK שהתיישנו ב-CMEK החדש. מידע נוסף זמין במאמר בנושא עדכון העברה.

אפשר גם להשתמש במפתחות ברירת המחדל של הפרויקט. כשמציינים מפתח ברירת מחדל של פרויקט בהעברה, שירות העברת הנתונים ל-BigQuery משתמש במפתח ברירת המחדל של הפרויקט כמפתח ברירת המחדל לכל הגדרה חדשה של העברה.

הגדרת שאילתות מתוזמנות

במאמר עיצוב התזמון מופיע תיאור של תחביר התזמון. פרטים על התחביר של לוחות זמנים מופיעים במאמר משאב: TransferConfig.

המסוף

  1. פותחים את הדף BigQuery במסוף Google Cloud .

    כניסה ל-BigQuery

  2. מריצים את השאילתה שמעניינת אתכם. כשמרוצים מהתוצאות, לוחצים על תזמון.

    יוצרים שאילתה מתוזמנת חדשה במסוף Google Cloud .

  3. אפשרויות השאילתה המתוזמנת ייפתחו בחלונית New scheduled query (שאילתה מתוזמנת חדשה).

    חלונית חדשה של שאילתות מתוזמנות.

  4. בחלונית שאילתה מתוזמנת חדשה:

    • בשדה Name for the scheduled query (שם לשאילתה המתוזמנת), מזינים שם כמו My scheduled query. שם השאילתה המתוזמנת יכול להיות כל ערך שתוכלו לזהות בהמשך אם תצטרכו לשנות את השאילתה.
    • אופציונלי: כברירת מחדל, השאילתה מתוזמנת להפעלה יומית. אפשר לשנות את לוח הזמנים שמוגדר כברירת מחדל על ידי בחירת אפשרות מהתפריט הנפתח חוזר:

      • כדי לציין תדירות מותאמת אישית, בוחרים באפשרות בהתאמה אישית ומזינים מפרט זמן בסגנון Cron בשדה תזמון בהתאמה אישית – לדוגמה, every mon 23:30, every 6 hours או every hour on mon,tue,wed,thu,fri. פרטים על לוחות זמנים תקינים, כולל מרווחים מותאמים אישית, מופיעים בשדה schedule בקטע Resource: TransferConfig.

        עיצוב שאילתה מותאמת אישית שמתוזמנת להרצה.

      • כדי לשנות את שעת ההתחלה, בוחרים באפשרות התחלה בשעה מוגדרת, ומזינים את תאריך ההתחלה ואת שעת ההתחלה הרצויים.

      • כדי לציין שעת סיום, בוחרים באפשרות שעת הסיום של לוח הזמנים ומזינים את תאריך הסיום ושעת הסיום הרצויים.

      • כדי לשמור את השאילתה בלי לוח זמנים, כדי להריץ אותה לפי דרישה בהמשך, בוחרים באפשרות לפי דרישה בתפריט חזרה.

  5. בשביל שאילתת GoogleSQL‏ SELECT, בוחרים באפשרות הגדרת טבלת יעד לתוצאות השאילתה ומזינים את הפרטים הבאים לגבי מערך נתוני היעד.

    • בשדה Dataset name (שם קבוצת הנתונים), בוחרים את קבוצת הנתונים המתאימה ליעד.
    • בשדה Table name (שם הטבלה), מזינים את שם טבלת היעד.
    • בקטע העדפת כתיבה לטבלת היעד, בוחרים באחת מהאפשרויות הבאות: הוספה לטבלה כדי להוסיף נתונים לטבלה או החלפת הטבלה כדי להחליף את טבלת היעד.

      יעד חדש של שאילתה מתוזמנת.

  6. בוחרים את סוג המיקום.

    • אם הפעלתם את טבלת היעד לתוצאות השאילתה, תוכלו לבחור באפשרות המיקום ייבחר אוטומטית כדי שהמיקום שבו נמצאת טבלת היעד ייבחר אוטומטית.

    • אחרת, בוחרים את המיקום שבו נמצאים הנתונים שרוצים לשלוח לגביהם שאילתה.

  7. אפשרויות מתקדמות:

    • אופציונלי: CMEK. אם אתם משתמשים במפתחות הצפנה בניהול הלקוח, אתם יכולים לבחור באפשרות מפתח בניהול הלקוח בקטע אפשרויות מתקדמות. תוצג רשימה של מפתחות CMEK זמינים לבחירה. מידע על האופן שבו מפתחות הצפנה בניהול הלקוח (CMEK) פועלים עם שירות העברת הנתונים ל-BigQuery זמין במאמר ציון מפתח הצפנה באמצעות שאילתות מתוזמנות.

    • אימות כחשבון שירות אם יש לכם חשבון שירות אחד או יותר שמשויכים לפרויקט Google Cloud , אתם יכולים לשייך חשבון שירות לשאילתה המתוזמנת במקום להשתמש בפרטי הכניסה של המשתמש. בקטע Scheduled query credential (אישורי שאילתה מתוזמנת), לוחצים על התפריט כדי לראות רשימה של חשבונות השירות הזמינים. אם אתם מחוברים כזהות מאוחדת, אתם צריכים להשתמש בחשבון שירות.

      אפשרויות מתקדמות של שאילתות מתוזמנות.

  8. הגדרות נוספות:

    • אופציונלי: מסמנים את התיבה שליחת התראות באימייל כדי לאפשר שליחת התראות באימייל על כשלים בהרצת ההעברה.

    • אופציונלי: בשדה Pub/Sub topic, מזינים את שם הנושא ב-Pub/Sub, לדוגמה: projects/myproject/topics/mytopic.

      DDL ו-DML חדשים של שאילתות מתוזמנות.

  9. לוחצים על Save.

BQ

אפשרות 1: משתמשים בפקודה bq query.

כדי ליצור שאילתה מתוזמנת, מוסיפים את האפשרויות destination_table (או target_dataset), --schedule ו---display_name לפקודה bq query.

bq query \
--display_name=name \
--destination_table=table \
--schedule=interval

מחליפים את מה שכתוב בשדות הבאים:

  • name. השם המוצג של השאילתה המתוזמנת. השם המוצג יכול להיות כל ערך שתוכלו לזהות בהמשך אם תצטרכו לשנות את השאילתה.
  • table. טבלת היעד של תוצאות השאילתה.
    • --target_dataset היא דרך חלופית לתת שם למערך הנתונים של היעד עבור תוצאות השאילתה, כשמשתמשים בה עם שאילתות DDL ו-DML.
    • אפשר להשתמש ב---destination_table או ב---target_dataset, אבל לא בשניהם.
  • interval. כשמשתמשים בה עם bq query, השאילתה הופכת לשאילתה מתוזמנת חוזרת. חובה לציין לוח זמנים לתדירות ההפעלה של השאילתה. פרטים על לוחות זמנים תקינים, כולל מרווחי זמן מותאמים אישית, מופיעים בשדה schedule בקטע משאב: TransferConfig. דוגמאות:
    • --schedule='every 24 hours'
    • --schedule='every 3 hours'
    • --schedule='every monday 09:00'
    • --schedule='1st sunday of sep,oct,nov 00:00'

דגלים אופציונליים:

  • --project_id הוא מזהה הפרויקט. אם לא מציינים את --project_id, נעשה שימוש בפרויקט שמוגדר כברירת מחדל.

  • --replace מחליף את טבלת היעד בתוצאות השאילתה אחרי כל הרצה של השאילתה המתוזמנת. כל הנתונים הקיימים יימחקו. בטבלאות שלא מחולקות למחיצות, הסכימה נמחקת גם כן.

  • --append_table מוסיף את התוצאות לטבלת היעד.

  • בשביל שאילתות DDL ו-DML, אפשר גם לספק את הדגל --location כדי לציין אזור מסוים לעיבוד. אם לא מציינים את --location, המערכת משתמשת במיקום הקרוב ביותר Google Cloud .

לדוגמה, הפקודה הבאה יוצרת שאילתה מתוזמנת בשם My Scheduled Query באמצעות השאילתה SELECT 1 from mydataset.test. טבלת היעד היא mytable במערך הנתונים mydataset. השאילתה המתוזמנת נוצרת בפרויקט ברירת המחדל:

    bq query \
    --use_legacy_sql=false \
    --destination_table=mydataset.mytable \
    --display_name='My Scheduled Query' \
    --schedule='every 24 hours' \
    --replace=true \
    'SELECT
      1
    FROM
      mydataset.test'


אפשרות 2: משתמשים בפקודה bq mk.

שאילתות מתוזמנות הן סוג של העברה. כדי לתזמן שאילתה, אפשר להשתמש בכלי שורת הפקודה של BigQuery כדי ליצור הגדרת העברה.

כדי לתזמן שאילתות, הן צריכות להיות בניב StandardSQL.

מזינים את הפקודה bq mk ומספקים את הדגלים הנדרשים הבאים:

  • --transfer_config
  • --data_source
  • --target_dataset (אופציונלי לשאילתות DDL ו-DML)
  • --display_name
  • --params

דגלים אופציונליים:

  • --project_id הוא מזהה הפרויקט. אם לא מציינים את --project_id, נעשה שימוש בפרויקט שמוגדר כברירת מחדל.

  • --schedule היא התדירות שבה רוצים שהשאילתה תפעל. אם לא מציינים את --schedule, ברירת המחדל היא 'כל 24 שעות' על סמך זמן היצירה.

  • בשביל שאילתות DDL ו-DML, אפשר גם לספק את הדגל --location כדי לציין אזור מסוים לעיבוד. אם לא מציינים את --location, המערכת משתמשת במיקום הקרוב ביותר Google Cloud .

  • --service_account_name משמש לאימות של השאילתה המתוזמנת באמצעות חשבון שירות במקום באמצעות חשבון המשתמש האישי.

  • --destination_kms_key מציין את מזהה מקום האחסון של המפתח אם משתמשים במפתח הצפנה בניהול הלקוח (CMEK) להעברה הזו. מידע על אופן השימוש במפתחות CMEK עם שירות העברת הנתונים ל-BigQuery זמין במאמר ציון מפתח הצפנה באמצעות שאילתות מתוזמנות.

bq mk \
--transfer_config \
--target_dataset=dataset \
--display_name=name \
--params='parameters' \
--data_source=data_source

מחליפים את מה שכתוב בשדות הבאים:

  • 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. היא נדרשת לכל השאילתות האחרות.
  • data_source. מקור הנתונים: scheduled_query.
  • אופציונלי: הדגל --service_account_name משמש לאימות באמצעות חשבון שירות במקום באמצעות חשבון משתמש פרטי.
  • אופציונלי: הערך --destination_kms_key מציין את מזהה משאב המפתח של מפתח Cloud KMS, לדוגמה, projects/project_name/locations/us/keyRings/key_ring_name/cryptoKeys/key_name.

לדוגמה, הפקודה הבאה יוצרת העברה מתוזמנת של שאילתה בשם My Scheduled Query באמצעות השאילתה SELECT 1 from mydataset.test. הטבלה ביעד mytable נחתכת בכל כתיבה, ומערך נתוני היעד הוא mydataset. השאילתה המתוזמנת נוצרת בפרויקט שמוגדר כברירת מחדל, והאימות מתבצע כחשבון שירות:

bq mk \
--transfer_config \
--target_dataset=mydataset \
--display_name='My Scheduled Query' \
--params='{"query":"SELECT 1 from mydataset.test","destination_table_name_template":"mytable","write_disposition":"WRITE_TRUNCATE"}' \
--data_source=scheduled_query \
--service_account_name=abcdef-test-sa@abcdef-test.iam.gserviceaccount.com

בפעם הראשונה שמריצים את הפקודה, מקבלים הודעה כמו זו:

[URL omitted] Please copy and paste the above URL into your web browser and follow the instructions to retrieve an authentication code.

פועלים לפי ההוראות בהודעה ומדביקים את קוד האימות בשורת הפקודה.

API

משתמשים בשיטה projects.locations.transferConfigs.create ומספקים מופע של המשאב TransferConfig.

Java

לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Javaהוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery Java API.

כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.

import com.google.api.gax.rpc.ApiException;
import com.google.cloud.bigquery.datatransfer.v1.CreateTransferConfigRequest;
import com.google.cloud.bigquery.datatransfer.v1.DataTransferServiceClient;
import com.google.cloud.bigquery.datatransfer.v1.ProjectName;
import com.google.cloud.bigquery.datatransfer.v1.TransferConfig;
import com.google.protobuf.Struct;
import com.google.protobuf.Value;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

// Sample to create a scheduled query
public class CreateScheduledQuery {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    final String projectId = "MY_PROJECT_ID";
    final String datasetId = "MY_DATASET_ID";
    final String query =
        "SELECT CURRENT_TIMESTAMP() as current_time, @run_time as intended_run_time, "
            + "@run_date as intended_run_date, 17 as some_integer";
    Map<String, Value> params = new HashMap<>();
    params.put("query", Value.newBuilder().setStringValue(query).build());
    params.put(
        "destination_table_name_template",
        Value.newBuilder().setStringValue("my_destination_table_{run_date}").build());
    params.put("write_disposition", Value.newBuilder().setStringValue("WRITE_TRUNCATE").build());
    params.put("partitioning_field", Value.newBuilder().build());
    TransferConfig transferConfig =
        TransferConfig.newBuilder()
            .setDestinationDatasetId(datasetId)
            .setDisplayName("Your Scheduled Query Name")
            .setDataSourceId("scheduled_query")
            .setParams(Struct.newBuilder().putAllFields(params).build())
            .setSchedule("every 24 hours")
            .build();
    createScheduledQuery(projectId, transferConfig);
  }

  public static void createScheduledQuery(String projectId, TransferConfig transferConfig)
      throws IOException {
    try (DataTransferServiceClient dataTransferServiceClient = DataTransferServiceClient.create()) {
      ProjectName parent = ProjectName.of(projectId);
      CreateTransferConfigRequest request =
          CreateTransferConfigRequest.newBuilder()
              .setParent(parent.toString())
              .setTransferConfig(transferConfig)
              .build();
      TransferConfig config = dataTransferServiceClient.createTransferConfig(request);
      System.out.println("\nScheduled query created successfully :" + config.getName());
    } catch (ApiException ex) {
      System.out.print("\nScheduled query was not created." + ex.toString());
    }
  }
}

Python

לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Pythonהוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery Python API.

כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.

from google.cloud import bigquery_datatransfer

transfer_client = bigquery_datatransfer.DataTransferServiceClient()

# The project where the query job runs is the same as the project
# containing the destination dataset.
project_id = "your-project-id"
dataset_id = "your_dataset_id"

# This service account will be used to execute the scheduled queries. Omit
# this request parameter to run the query as the user with the credentials
# associated with this client.
service_account_name = "abcdef-test-sa@abcdef-test.iam.gserviceaccount.com"

# Use standard SQL syntax for the query.
query_string = """
SELECT
  CURRENT_TIMESTAMP() as current_time,
  @run_time as intended_run_time,
  @run_date as intended_run_date,
  17 as some_integer
"""

parent = transfer_client.common_project_path(project_id)

transfer_config = bigquery_datatransfer.TransferConfig(
    destination_dataset_id=dataset_id,
    display_name="Your Scheduled Query Name",
    data_source_id="scheduled_query",
    params={
        "query": query_string,
        "destination_table_name_template": "your_table_{run_date}",
        "write_disposition": "WRITE_TRUNCATE",
        "partitioning_field": "",
    },
    schedule="every 24 hours",
)

transfer_config = transfer_client.create_transfer_config(
    bigquery_datatransfer.CreateTransferConfigRequest(
        parent=parent,
        transfer_config=transfer_config,
        service_account_name=service_account_name,
    )
)

print("Created scheduled query '{}'".format(transfer_config.name))

הגדרת שאילתות מתוזמנות באמצעות חשבון שירות

Java

לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Javaהוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery Java API.

כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.

import com.google.api.gax.rpc.ApiException;
import com.google.cloud.bigquery.datatransfer.v1.CreateTransferConfigRequest;
import com.google.cloud.bigquery.datatransfer.v1.DataTransferServiceClient;
import com.google.cloud.bigquery.datatransfer.v1.ProjectName;
import com.google.cloud.bigquery.datatransfer.v1.TransferConfig;
import com.google.protobuf.Struct;
import com.google.protobuf.Value;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

// Sample to create a scheduled query with service account
public class CreateScheduledQueryWithServiceAccount {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    final String projectId = "MY_PROJECT_ID";
    final String datasetId = "MY_DATASET_ID";
    final String serviceAccount = "MY_SERVICE_ACCOUNT";
    final String query =
        "SELECT CURRENT_TIMESTAMP() as current_time, @run_time as intended_run_time, "
            + "@run_date as intended_run_date, 17 as some_integer";
    Map<String, Value> params = new HashMap<>();
    params.put("query", Value.newBuilder().setStringValue(query).build());
    params.put(
        "destination_table_name_template",
        Value.newBuilder().setStringValue("my_destination_table_{run_date}").build());
    params.put("write_disposition", Value.newBuilder().setStringValue("WRITE_TRUNCATE").build());
    params.put("partitioning_field", Value.newBuilder().build());
    TransferConfig transferConfig =
        TransferConfig.newBuilder()
            .setDestinationDatasetId(datasetId)
            .setDisplayName("Your Scheduled Query Name")
            .setDataSourceId("scheduled_query")
            .setParams(Struct.newBuilder().putAllFields(params).build())
            .setSchedule("every 24 hours")
            .build();
    createScheduledQueryWithServiceAccount(projectId, transferConfig, serviceAccount);
  }

  public static void createScheduledQueryWithServiceAccount(
      String projectId, TransferConfig transferConfig, String serviceAccount) throws IOException {
    try (DataTransferServiceClient dataTransferServiceClient = DataTransferServiceClient.create()) {
      ProjectName parent = ProjectName.of(projectId);
      CreateTransferConfigRequest request =
          CreateTransferConfigRequest.newBuilder()
              .setParent(parent.toString())
              .setTransferConfig(transferConfig)
              .setServiceAccountName(serviceAccount)
              .build();
      TransferConfig config = dataTransferServiceClient.createTransferConfig(request);
      System.out.println(
          "\nScheduled query with service account created successfully :" + config.getName());
    } catch (ApiException ex) {
      System.out.print("\nScheduled query with service account was not created." + ex.toString());
    }
  }
}

Python

לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Pythonהוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery Python API.

כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.

from google.cloud import bigquery_datatransfer

transfer_client = bigquery_datatransfer.DataTransferServiceClient()

# The project where the query job runs is the same as the project
# containing the destination dataset.
project_id = "your-project-id"
dataset_id = "your_dataset_id"

# This service account will be used to execute the scheduled queries. Omit
# this request parameter to run the query as the user with the credentials
# associated with this client.
service_account_name = "abcdef-test-sa@abcdef-test.iam.gserviceaccount.com"

# Use standard SQL syntax for the query.
query_string = """
SELECT
  CURRENT_TIMESTAMP() as current_time,
  @run_time as intended_run_time,
  @run_date as intended_run_date,
  17 as some_integer
"""

parent = transfer_client.common_project_path(project_id)

transfer_config = bigquery_datatransfer.TransferConfig(
    destination_dataset_id=dataset_id,
    display_name="Your Scheduled Query Name",
    data_source_id="scheduled_query",
    params={
        "query": query_string,
        "destination_table_name_template": "your_table_{run_date}",
        "write_disposition": "WRITE_TRUNCATE",
        "partitioning_field": "",
    },
    schedule="every 24 hours",
)

transfer_config = transfer_client.create_transfer_config(
    bigquery_datatransfer.CreateTransferConfigRequest(
        parent=parent,
        transfer_config=transfer_config,
        service_account_name=service_account_name,
    )
)

print("Created scheduled query '{}'".format(transfer_config.name))

הצגת הסטטוס של שאילתה מתוזמנת

המסוף

כדי לראות את הסטטוס של השאילתות המתוזמנות, בתפריט הניווט לוחצים על תזמון ומסננים לפי שאילתה מתוזמנת. כדי לקבל פרטים נוספים על שאילתה מתוזמנת, לוחצים עליה.

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

משתמשים בשיטה projects.locations.transferConfigs.list ומספקים מופע של המשאב TransferConfig.

Java

לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Javaהוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery Java API.

כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.

import com.google.api.gax.rpc.ApiException;
import com.google.cloud.bigquery.datatransfer.v1.DataTransferServiceClient;
import com.google.cloud.bigquery.datatransfer.v1.ListTransferConfigsRequest;
import com.google.cloud.bigquery.datatransfer.v1.ProjectName;
import java.io.IOException;

// Sample to get list of transfer config
public class ListTransferConfigs {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    final String projectId = "MY_PROJECT_ID";
    listTransferConfigs(projectId);
  }

  public static void listTransferConfigs(String projectId) throws IOException {
    try (DataTransferServiceClient dataTransferServiceClient = DataTransferServiceClient.create()) {
      ProjectName parent = ProjectName.of(projectId);
      ListTransferConfigsRequest request =
          ListTransferConfigsRequest.newBuilder().setParent(parent.toString()).build();
      dataTransferServiceClient
          .listTransferConfigs(request)
          .iterateAll()
          .forEach(config -> System.out.print("Success! Config ID :" + config.getName() + "\n"));
    } catch (ApiException ex) {
      System.out.println("Config list not found due to error." + ex.toString());
    }
  }
}

Python

לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Pythonהוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery Python API.

כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.

import google.api_core.exceptions
from google.cloud import bigquery_datatransfer_v1

client = bigquery_datatransfer_v1.DataTransferServiceClient()


def list_transfer_configs(project_id: str, location: str) -> None:
    """Lists transfer configurations in a given project.

    This sample demonstrates how to list all transfer configurations in a project.

    Args:
        project_id: The Google Cloud project ID.
        location: The geographic location of the transfer config, for example "us-central1"
    """

    parent = client.common_location_path(project_id, location)

    try:
        for config in client.list_transfer_configs(parent=parent):
            print(f"Name: {config.name}")
            print(f"Display Name: {config.display_name}")
            print(f"Data source: {config.data_source_id}")
            print(f"Destination dataset: {config.destination_dataset_id}")
            if "time_based_schedule" in config.schedule_options_v2:
                print(
                    f"Schedule: {config.schedule_options_v2.time_based_schedule.schedule}"
                )
            else:
                print("Schedule: None")
            print("---")
    except google.api_core.exceptions.NotFound:
        print(
            f"Error: Project '{project_id}' not found or contains no transfer configs."
        )
    except google.api_core.exceptions.PermissionDenied:
        print(
            f"Error: Permission denied for project '{project_id}'. Please ensure you have the correct permissions."
        )

עדכון שאילתות מתוזמנות

המסוף

כדי לעדכן שאילתה מתוזמנת:

  1. בתפריט הניווט, לוחצים על Scheduled queries (שאילתות מתוזמנות) או על Scheduling (תזמון).
  2. ברשימת השאילתות המתוזמנות, לוחצים על שם השאילתה שרוצים לשנות.
  3. בדף פרטי שאילתה מתוזמנת שנפתח, לוחצים על עריכה. עריכת הפרטים של שאילתה מתוזמנת.
  4. אופציונלי: משנים את הטקסט של השאילתה בחלונית לעריכת שאילתות.
  5. לוחצים על תזמון שאילתה ואז על עדכון שאילתה מתוזמנת.
  6. אופציונלי: משנים אפשרויות אחרות לקביעת לוח הזמנים של השאילתה.
  7. לוחצים על עדכון.

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

משתמשים בשיטה projects.transferConfigs.patch ומספקים את שם המשאב של ההעברה באמצעות הפרמטר transferConfig.name. אם אתם לא יודעים את שם המשאב של ההעברה, אתם יכולים להשתמש בפקודה bq ls --transfer_config --transfer_location=location כדי לראות רשימה של כל ההעברות, או להתקשר לשיטה projects.locations.transferConfigs.list ולספק את מזהה הפרויקט באמצעות הפרמטר parent.

Java

לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Javaהוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery Java API.

כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.

import com.google.api.gax.rpc.ApiException;
import com.google.cloud.bigquery.datatransfer.v1.DataTransferServiceClient;
import com.google.cloud.bigquery.datatransfer.v1.TransferConfig;
import com.google.cloud.bigquery.datatransfer.v1.UpdateTransferConfigRequest;
import com.google.protobuf.FieldMask;
import com.google.protobuf.util.FieldMaskUtil;
import java.io.IOException;

// Sample to update transfer config.
public class UpdateTransferConfig {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    String configId = "MY_CONFIG_ID";
    TransferConfig transferConfig =
        TransferConfig.newBuilder()
            .setName(configId)
            .setDisplayName("UPDATED_DISPLAY_NAME")
            .build();
    FieldMask updateMask = FieldMaskUtil.fromString("display_name");
    updateTransferConfig(transferConfig, updateMask);
  }

  public static void updateTransferConfig(TransferConfig transferConfig, FieldMask updateMask)
      throws IOException {
    try (DataTransferServiceClient dataTransferServiceClient = DataTransferServiceClient.create()) {
      UpdateTransferConfigRequest request =
          UpdateTransferConfigRequest.newBuilder()
              .setTransferConfig(transferConfig)
              .setUpdateMask(updateMask)
              .build();
      TransferConfig updateConfig = dataTransferServiceClient.updateTransferConfig(request);
      System.out.println("Transfer config updated successfully :" + updateConfig.getDisplayName());
    } catch (ApiException ex) {
      System.out.print("Transfer config was not updated." + ex.toString());
    }
  }
}

Python

לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Pythonהוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery Python API.

כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.

import google.api_core.exceptions
from google.cloud import bigquery_datatransfer_v1
from google.protobuf import field_mask_pb2


client = bigquery_datatransfer_v1.DataTransferServiceClient()


def update_transfer_config(
    project_id: str,
    location: str,
    transfer_config_id: str,
) -> None:
    """Updates a data transfer configuration.

    This sample shows how to update the display name for a transfer
    configuration.

    Args:
        project_id: The Google Cloud project ID.
        location: The geographic location of the transfer config, for example "us-central1"
        transfer_config_id: The transfer configuration ID
    """
    transfer_config_name = client.transfer_config_path(
        project=f"{project_id}/locations/{location}",
        transfer_config=transfer_config_id,
    )

    transfer_config = bigquery_datatransfer_v1.types.TransferConfig(
        name=transfer_config_name,
        display_name="My New Transfer Config display name",
    )
    update_mask = field_mask_pb2.FieldMask(paths=["display_name"])

    try:
        response = client.update_transfer_config(
            transfer_config=transfer_config,
            update_mask=update_mask,
        )

        print(f"Updated transfer config: {response.name}")
        print(f"New display name: {response.display_name}")
    except google.api_core.exceptions.NotFound:
        print(f"Error: Transfer config '{transfer_config_name}' not found.")

עדכון שאילתות מתוזמנות עם הגבלות בעלות

אם תנסו לעדכן שאילתה מתוזמנת שלא בבעלותכם, יכול להיות שהעדכון ייכשל ותוצג הודעת השגיאה הבאה:

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.

המסוף

כדי לרענן את פרטי הכניסה הקיימים בשאילתה מתוזמנת:

  1. איך מוצאים וצופים בסטטוס של שאילתה מתוזמנת

  2. לוחצים על הלחצן עוד ובוחרים באפשרות עדכון פרטי הכניסה.

    עדכון פרטי הכניסה של שאילתה מתוזמנת.

  3. השינוי ייכנס לתוקף תוך 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.iam.gserviceaccount.com \
--transfer_config \
projects/myproject/locations/us/transferConfigs/1234a123-1234-1a23-1be9-12ab3c456de7

Java

לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Javaהוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery Java API.

כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.

import com.google.api.gax.rpc.ApiException;
import com.google.cloud.bigquery.datatransfer.v1.DataTransferServiceClient;
import com.google.cloud.bigquery.datatransfer.v1.TransferConfig;
import com.google.cloud.bigquery.datatransfer.v1.UpdateTransferConfigRequest;
import com.google.protobuf.FieldMask;
import com.google.protobuf.util.FieldMaskUtil;
import java.io.IOException;

// Sample to update credentials in transfer config.
public class UpdateCredentials {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    String configId = "MY_CONFIG_ID";
    String serviceAccount = "MY_SERVICE_ACCOUNT";
    TransferConfig transferConfig = TransferConfig.newBuilder().setName(configId).build();
    FieldMask updateMask = FieldMaskUtil.fromString("service_account_name");
    updateCredentials(transferConfig, serviceAccount, updateMask);
  }

  public static void updateCredentials(
      TransferConfig transferConfig, String serviceAccount, FieldMask updateMask)
      throws IOException {
    try (DataTransferServiceClient dataTransferServiceClient = DataTransferServiceClient.create()) {
      UpdateTransferConfigRequest request =
          UpdateTransferConfigRequest.newBuilder()
              .setTransferConfig(transferConfig)
              .setUpdateMask(updateMask)
              .setServiceAccountName(serviceAccount)
              .build();
      dataTransferServiceClient.updateTransferConfig(request);
      System.out.println("Credentials updated successfully");
    } catch (ApiException ex) {
      System.out.print("Credentials was not updated." + ex.toString());
    }
  }
}

Python

לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Pythonהוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery Python API.

כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.

from google.cloud import bigquery_datatransfer
from google.protobuf import field_mask_pb2

transfer_client = bigquery_datatransfer.DataTransferServiceClient()

service_account_name = "abcdef-test-sa@abcdef-test.iam.gserviceaccount.com"
transfer_config_name = "projects/1234/locations/us/transferConfigs/abcd"

transfer_config = bigquery_datatransfer.TransferConfig(name=transfer_config_name)

transfer_config = transfer_client.update_transfer_config(
    {
        "transfer_config": transfer_config,
        "update_mask": field_mask_pb2.FieldMask(paths=["service_account_name"]),
        "service_account_name": service_account_name,
    }
)

print("Updated config: '{}'".format(transfer_config.name))

הגדרת הפעלה ידנית בתאריכים היסטוריים

בנוסף לתזמון של שאילתה להפעלה בעתיד, אפשר גם להפעיל אותה באופן ידני באופן מיידי. הפעלת ריצה מיידית נדרשת אם השאילתה משתמשת בפרמטר run_date, והיו בעיות במהלך ריצה קודמת.

לדוגמה, כל יום בשעה 09:00 אתם שולחים שאילתה לטבלת מקור כדי למצוא שורות שתואמות לתאריך הנוכחי. עם זאת, גיליתם שהנתונים לא נוספו לטבלת המקור ב-3 הימים האחרונים. במצב כזה, אפשר להגדיר את השאילתה כך שתפעל על נתונים היסטוריים בטווח תאריכים שאתם מציינים. השאילתה מופעלת באמצעות שילובים של הפרמטרים run_date ו-run_time שמתאימים לתאריכים שהגדרתם בשאילתה המתוזמנת.

אחרי הגדרת שאילתה מתוזמנת, כך מריצים את השאילתה באמצעות טווח תאריכים היסטורי:

המסוף

אחרי שלוחצים על תזמון כדי לשמור את השאילתה המתוזמנת, אפשר ללחוץ על הלחצן שאילתות מתוזמנות כדי לראות את רשימת השאילתות המתוזמנות. לוחצים על שם התצוגה כדי לראות את פרטי התזמון של השאילתה. בפינה השמאלית העליונה של הדף, לוחצים על תזמון מילוי חוסרים כדי לציין טווח תאריכים היסטורי.

כפתור לתזמון מילוי חוסרים.

כל זמני הריצה שנבחרו נמצאים בטווח התאריכים שבחרתם, כולל התאריך הראשון ולא כולל התאריך האחרון.

הגדרת תאריכים היסטוריים

דוגמה 1

השאילתה המתוזמנת מוגדרת להפעלה ב-every day 09:00 Pacific Time. חסרים לך נתונים מ-1 בינואר, מ-2 בינואר ומ-3 בינואר. בוחרים את טווח התאריכים ההיסטורי הבא:

Start Time = 1/1/19
End Time = 1/4/19

השאילתה מורצת באמצעות הפרמטרים run_date ו-run_time שמתאימים לזמנים הבאים:

  • ‫1/1/19 09:00 שעון החוף המערבי
  • ‫1/2/19 09:00 Pacific Time
  • ‫1/3/19 09:00 שעון החוף המערבי

דוגמה 2

השאילתה המתוזמנת מוגדרת להפעלה ב-every day 23:00 Pacific Time. חסרים לך נתונים מ-1 בינואר, מ-2 בינואר ומ-3 בינואר. בוחרים את טווחי התאריכים ההיסטוריים הבאים (התאריכים המאוחרים יותר נבחרים כי שעון UTC הוא תאריך אחר בשעה 23:00 לפי שעון החוף הפסיפי):

Start Time = 1/2/19
End Time = 1/5/19

השאילתה מורצת באמצעות הפרמטרים run_date ו-run_time שמתאימים לזמנים הבאים:

  • ‫2.1.19 בשעה 06:00 UTC, או 1.1.2019 בשעה 23:00 לפי שעון החוף המערבי
  • ‫1/3/19 06:00 UTC או 1/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

משתמשים בשיטה projects.locations.transferConfigs.scheduleRun ומספקים נתיב של משאב TransferConfig.

Java

לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Javaהוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery Java API.

כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.

import com.google.api.gax.rpc.ApiException;
import com.google.cloud.bigquery.datatransfer.v1.DataTransferServiceClient;
import com.google.cloud.bigquery.datatransfer.v1.ScheduleTransferRunsRequest;
import com.google.cloud.bigquery.datatransfer.v1.ScheduleTransferRunsResponse;
import com.google.protobuf.Timestamp;
import java.io.IOException;
import org.threeten.bp.Clock;
import org.threeten.bp.Instant;
import org.threeten.bp.temporal.ChronoUnit;

// Sample to run schedule back fill for transfer config
public class ScheduleBackFill {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    String configId = "MY_CONFIG_ID";
    Clock clock = Clock.systemDefaultZone();
    Instant instant = clock.instant();
    Timestamp startTime =
        Timestamp.newBuilder()
            .setSeconds(instant.minus(5, ChronoUnit.DAYS).getEpochSecond())
            .setNanos(instant.minus(5, ChronoUnit.DAYS).getNano())
            .build();
    Timestamp endTime =
        Timestamp.newBuilder()
            .setSeconds(instant.minus(2, ChronoUnit.DAYS).getEpochSecond())
            .setNanos(instant.minus(2, ChronoUnit.DAYS).getNano())
            .build();
    scheduleBackFill(configId, startTime, endTime);
  }

  public static void scheduleBackFill(String configId, Timestamp startTime, Timestamp endTime)
      throws IOException {
    try (DataTransferServiceClient client = DataTransferServiceClient.create()) {
      ScheduleTransferRunsRequest request =
          ScheduleTransferRunsRequest.newBuilder()
              .setParent(configId)
              .setStartTime(startTime)
              .setEndTime(endTime)
              .build();
      ScheduleTransferRunsResponse response = client.scheduleTransferRuns(request);
      System.out.println("Schedule backfill run successfully :" + response.getRunsCount());
    } catch (ApiException ex) {
      System.out.print("Schedule backfill was not run." + ex.toString());
    }
  }
}

Python

לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Pythonהוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery Python API.

כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.

import datetime

from google.cloud.bigquery_datatransfer_v1 import (
    DataTransferServiceClient,
    StartManualTransferRunsRequest,
)

# Create a client object
client = DataTransferServiceClient()

# Replace with your transfer configuration name
transfer_config_name = "projects/1234/locations/us/transferConfigs/abcd"
now = datetime.datetime.now(datetime.timezone.utc)
start_time = now - datetime.timedelta(days=5)
end_time = now - datetime.timedelta(days=2)

# Some data sources, such as scheduled_query only support daily run.
# Truncate start_time and end_time to midnight time (00:00AM UTC).
start_time = datetime.datetime(
    start_time.year, start_time.month, start_time.day, tzinfo=datetime.timezone.utc
)
end_time = datetime.datetime(
    end_time.year, end_time.month, end_time.day, tzinfo=datetime.timezone.utc
)

requested_time_range = StartManualTransferRunsRequest.TimeRange(
    start_time=start_time,
    end_time=end_time,
)

# Initialize request argument(s)
request = StartManualTransferRunsRequest(
    parent=transfer_config_name,
    requested_time_range=requested_time_range,
)

# Make the request
response = client.start_manual_transfer_runs(request=request)

# Handle the response
print("Started manual transfer runs:")
for run in response.runs:
    print(f"backfill: {run.run_time} run: {run.name}")

הגדרת התראות לגבי שאילתות מתוזמנות

אפשר להגדיר מדיניות התראות עבור שאילתות מתוזמנות על סמך מדדים של מספר השורות. מידע נוסף מפורט במאמר הגדרת התראות באמצעות שאילתות מתוזמנות.

מחיקת שאילתות מתוזמנות

המסוף

כדי למחוק שאילתה מתוזמנת בדף Scheduled queries במסוף Google Cloud :

  1. בתפריט הניווט, לוחצים על Scheduled queries (שאילתות מתוזמנות).
  2. ברשימת השאילתות המתוזמנות, לוחצים על השם של השאילתה המתוזמנת שרוצים למחוק.
  3. בדף פרטים של שאילתה מתוזמנת, לוחצים על מחיקה.

    מחיקת שאילתה מתוזמנת בדף &#39;שאילתות מתוזמנות&#39;.

אפשר גם למחוק שאילתה מתוזמנת בדף תזמון של מסוף Google Cloud :

  1. בתפריט הניווט, לוחצים על Scheduling (תזמון).
  2. ברשימת השאילתות המתוזמנות, לוחצים על התפריט פעולות של השאילתה המתוזמנת שרוצים למחוק.
  3. בוחרים את האפשרות Delete.

    מחיקה של שאילתה מתוזמנת בדף &#39;תזמון&#39;.

Java

לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Javaהוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery Java API.

כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.

import com.google.api.gax.rpc.ApiException;
import com.google.cloud.bigquery.datatransfer.v1.DataTransferServiceClient;
import com.google.cloud.bigquery.datatransfer.v1.DeleteTransferConfigRequest;
import java.io.IOException;

// Sample to delete a transfer config
public class DeleteTransferConfig {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    // i.e projects/{project_id}/transferConfigs/{config_id}` or
    // `projects/{project_id}/locations/{location_id}/transferConfigs/{config_id}`
    String configId = "MY_CONFIG_ID";
    deleteTransferConfig(configId);
  }

  public static void deleteTransferConfig(String configId) throws IOException {
    try (DataTransferServiceClient dataTransferServiceClient = DataTransferServiceClient.create()) {
      DeleteTransferConfigRequest request =
          DeleteTransferConfigRequest.newBuilder().setName(configId).build();
      dataTransferServiceClient.deleteTransferConfig(request);
      System.out.println("Transfer config deleted successfully");
    } catch (ApiException ex) {
      System.out.println("Transfer config was not deleted." + ex.toString());
    }
  }
}

Python

לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Pythonהוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery Python API.

כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.

import google.api_core.exceptions
from google.cloud import bigquery_datatransfer_v1

client = bigquery_datatransfer_v1.DataTransferServiceClient()


def delete_transfer_config(
    project_id: str, location: str, transfer_config_id: str
) -> None:
    """Deletes a data transfer configuration, including any associated transfer runs and logs.

    Args:
        project_id: The Google Cloud project ID.
        location: The geographic location of the transfer configuration, for example, "us-central1".
        transfer_config_id: The transfer configuration ID, for example, "1234a-5678-90b1-2c3d-4e5f67890g12".
    """

    name = client.transfer_config_path(
        project=f"{project_id}/locations/{location}",
        transfer_config=transfer_config_id,
    )
    request = bigquery_datatransfer_v1.DeleteTransferConfigRequest(name=name)

    try:
        client.delete_transfer_config(request=request)
        print(f"Deleted transfer config {name}")
    except google.api_core.exceptions.NotFound:
        print(f"Error: Transfer config '{name}' not found.")

השבתה או הפעלה של שאילתות מתוזמנות

כדי להשהות את ההרצות המתוזמנות של שאילתה שנבחרה בלי למחוק את התזמון, אפשר להשבית את התזמון.

כדי להשבית לוח זמנים לשאילתה שנבחרה, פועלים לפי השלבים הבאים:

  1. בתפריט הניווט של מסוף Google Cloud , לוחצים על Scheduling.
  2. ברשימת השאילתות המתוזמנות, לוחצים על התפריט פעולות של השאילתה המתוזמנת שרוצים להשבית.
  3. בוחרים באפשרות השבתה.

    משביתים שאילתה מתוזמנת בדף &#39;תזמון&#39;.

כדי להפעיל שאילתה מתוזמנת שהושבתה, לוחצים על התפריט פעולות של השאילתה המתוזמנת שרוצים להפעיל ובוחרים באפשרות הפעלה.

מכסות

שאילתות מתוזמנות תמיד מורצות כמשימות של שאילתות באצווה, והן כפופות לאותן מכסות ומגבלות של BigQuery כמו שאילתות ידניות.

למרות ששאילתות מתוזמנות משתמשות בתכונות של שירות העברת הנתונים ל-BigQuery, הן לא העברות ולא חלות עליהן מכסות של עבודות טעינה.

הזהות שמשמשת להפעלת השאילתה קובעת אילו מכסות יחולו. זה תלוי בהגדרות של השאילתה המתוזמנת:

  • פרטי הכניסה של היוצר (ברירת מחדל): אם לא מציינים חשבון שירות, השאילתה המתוזמנת מופעלת באמצעות פרטי הכניסה של המשתמש שיצר אותה. החיוב על עבודת השאילתה חל על הפרויקט של היוצר, והוא כפוף למכסות של המשתמש והפרויקט.

  • פרטי כניסה של חשבון שירות: אם מגדירים את השאילתה המתוזמנת לשימוש בחשבון שירות, היא מורצת באמצעות פרטי הכניסה של חשבון השירות. במקרה כזה, העבודה עדיין מחויבת לפרויקט שמכיל את השאילתה המתוזמנת, אבל הביצוע כפוף למכסות של חשבון השירות שצוין.

תמחור

התמחור של שאילתות מתוזמנות זהה לזה של שאילתות BigQuery ידניות.

אזורים נתמכים

אפשר לתזמן שאילתות במיקומים הבאים.

אזורים

בטבלה הבאה מפורטים האזורים באמריקה שבהם BigQuery זמין.
תיאור האזור שם האזור פרטים
קולומבוס, אוהיו us-east5
דאלאס us-south1 סמל של עלה רמה נמוכה של CO2
אייווה us-central1 סמל של עלה רמה נמוכה של CO2
לאס וגאס us-west4
לוס אנג'לס us-west2
מקסיקו northamerica-south1
מונטריאול northamerica-northeast1 סמל של עלה רמה נמוכה של CO2
צפון וירג'יניה us-east4
אורגון us-west1 סמל של עלה רמה נמוכה של CO2
סולט לייק סיטי us-west3
סאו פאולו southamerica-east1 סמל של עלה רמה נמוכה של CO2
סנטיאגו southamerica-west1 סמל של עלה רמה נמוכה של CO2
דרום קרוליינה us-east1
טורונטו northamerica-northeast2 סמל של עלה רמה נמוכה של CO2
בטבלה הבאה מפורטים האזורים באסיה ובאוקיינוס השקט שבהם BigQuery זמין.
תיאור האזור שם האזור פרטים
בנגקוק asia-southeast3
דלהי asia-south2
הונג קונג asia-east2
ג'קארטה asia-southeast2
מלבורן australia-southeast2
מומבאי asia-south1
אוסקה asia-northeast2
סיאול asia-northeast3
סינגפור asia-southeast1
סידני australia-southeast1
טייוואן asia-east1
טוקיו asia-northeast1
בטבלה הבאה מפורטים האזורים באירופה שבהם BigQuery זמין.
תיאור האזור שם האזור פרטים
בלגיה europe-west1 סמל של עלה רמה נמוכה של CO2
ברלין europe-west10
פינלנד europe-north1 סמל של עלה רמה נמוכה של CO2
פרנקפורט europe-west3
לונדון europe-west2 סמל של עלה רמה נמוכה של CO2
מדריד europe-southwest1 סמל של עלה רמה נמוכה של CO2
מילאנו europe-west8
הולנד europe-west4 סמל של עלה רמה נמוכה של CO2
פריז europe-west9 סמל של עלה רמה נמוכה של CO2
שטוקהולם europe-north2 סמל של עלה רמה נמוכה של CO2
טורינו europe-west12
ורשה europe-central2
ציריך europe-west6 סמל של עלה רמה נמוכה של CO2
בטבלה הבאה מפורטים האזורים במזרח התיכון שבהם BigQuery זמין.
תיאור האזור שם האזור פרטים
דמאם me-central2
דוחה me-central1
תל אביב me-west1
בטבלה הבאה מפורטים האזורים באפריקה שבהם BigQuery זמין.
תיאור האזור שם האזור פרטים
יוהנסבורג africa-south1

במספר אזורים

בטבלה הבאה מפורטים האזורים המרובים שבהם BigQuery זמין. כשבוחרים אזור מרובה, מאפשרים ל-BigQuery לבחור אזור יחיד בתוך האזור המרובה שבו הנתונים מאוחסנים ומעובדים.
תיאור של המיקום 'במספר אזורים' השם של המיקום 'במספר אזורים&#��
מרכזי נתונים במדינות החברות באיחוד האירופי1 EU
מרכזי נתונים בארצות הברית2 US

1 נתונים שנמצאים במיקום 'במספר אזורים' של EU מאוחסנים רק באחד מהמיקומים הבאים: europe-west1 (בלגיה) או europe-west4 (הולנד). המיקום המדויק שבו הנתונים מאוחסנים ומעובדים נקבע באופן אוטומטי על ידי BigQuery.

2 נתונים שנמצאים במיקום 'במספר אזורים' של US מאוחסנים רק באחד מהמיקומים הבאים: us-central1 (איווה), us-west1 (אורגון) או us-central2 (אוקלהומה). המיקום המדויק שבו הנתונים מאוחסנים ומעובדים נקבע באופן אוטומטי על ידי BigQuery.

המאמרים הבאים