פרמטרים של זמן ריצה בהעברות של Cloud Storage
כשמגדירים העברת נתונים ב-Cloud Storage, ב-Azure Blob Storage או ב-Amazon Simple Storage Service (Amazon S3), אפשר להגדיר פרמטרים ל-URI (או לנתיב הנתונים) ולטבלת היעד. הוספת פרמטרים מאפשרת לכם לטעון נתונים מקטגוריות שמסודרות לפי תאריך. הפרמטרים האלה נקראים פרמטרים של זמן ריצה כדי להבדיל ביניהם לבין פרמטרים של שאילתה.
כשמשתמשים בפרמטרים של זמן ריצה בהעברה, אפשר:
- מציינים איך רוצים לחלק את טבלת היעד
- שחזור קבצים שתואמים לתאריך מסוים
פרמטרים זמינים של זמן ריצה
כשמגדירים את ההעברה מ-Cloud Storage, מ-Blob Storage או מ-Amazon S3, אפשר לציין איך רוצים לחלק את טבלת היעד באמצעות פרמטרים של זמן ריצה.
| פרמטר | סוג התבנית | ערך |
|---|---|---|
run_time |
חותמת זמן בפורמט | לפי שעון UTC, בהתאם ללוח הזמנים. בהעברות שמתוזמנות באופן קבוע, run_time מייצג את שעת ההפעלה המיועדת. לדוגמה, אם ההעברה מוגדרת ל'כל 24 שעות', run_timeההפרש בין שתי שאילתות עוקבות יהיה בדיוק 24 שעות – גם אם זמן הביצוע בפועל עשוי להשתנות מעט.ראו TransferRun.runTime |
run_date |
מחרוזת תאריך | התאריך של הפרמטר run_time בפורמט הבא: %Y%m%d, לדוגמה, 20180101. הפורמט הזה תואם לטבלאות מחולקות למחיצות (Partitions) לפי זמני כתיבת הנתונים. |
מערכת תבניות
העברות של Cloud Storage, Blob Storage ו-Amazon S3 תומכות בפרמטרים של זמן ריצה בשם טבלת היעד באמצעות תחביר של תבניות.
תחביר של תבניות פרמטרים
תחביר התבניות תומך בתבניות מחרוזות בסיסיות ובהזזת זמן. הפרמטרים מוזכרים בפורמטים הבאים:
{run_date}{run_time[+\-offset]|"time_format"}
| פרמטר | מטרה |
|---|---|
run_date |
הפרמטר הזה מוחלף בתאריך בפורמט YYYYMMDD. |
run_time |
הפרמטר הזה תומך במאפיינים הבאים:
|
- אסור להוסיף רווח לבן בין 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 |
אפשרויות חלוקה למחיצות
יש שני סוגים של טבלאות מחולקות למחיצות ב-BigQuery:
- טבלאות שמחולקות למחיצות (Partitions) לפי זמני כתיבת הנתונים. במקרה של העברות מ-Cloud Storage, מ-Blob Storage ומ-Amazon S3, זמן ההטמעה הוא זמן הריצה של ההעברה.
- טבלאות שמחולקות למחיצות על סמך עמודה. סוג העמודה צריך להיות
TIMESTAMPאוDATE.
אם טבלת היעד מחולקת למחיצות לפי עמודה, צריך לציין את עמודת החלוקה למחיצות כשיוצרים את טבלת היעד ומגדירים את הסכימה שלה. מידע נוסף על יצירת טבלאות מחולקות לפי עמודות זמין במאמר יצירה של טבלאות מחולקות ושימוש בהן.
דוגמאות לחלוקה למחיצות
- טבלה ללא חלוקה למחיצות
- טבלת היעד:
mytable
- טבלת היעד:
- טבלה מחולקת למחיצות (Partitions) לפי זמני כתיבת הנתונים
- טבלת היעד:
mytable$YYYYMMDD - שימו לב: אי אפשר לציין דקות.
- טבלת היעד:
- טבלה עם חלוקה למחיצות לפי עמודות
- טבלת היעד:
mytable - כשיוצרים את הסכימה של הטבלה, צריך לציין את עמודת החלוקה כמחיצה
TIMESTAMPאוDATE.
- טבלת היעד:
הערות לגבי השימוש בפרמטרים
- אם מחלקים את הנתונים למחיצות על סמך אזור הזמן המקומי, צריך לחשב ידנית את ההפרש בשעות מ-UTC באמצעות מנגנון ההזזה בתחביר של תבניות.
- אי אפשר לציין דקות בפרמטרים.
- מותר להשתמש בתווים כלליים לחיפוש של ה-URI או של נתיב הנתונים בשילוב עם פרמטרים בשם טבלת היעד.
דוגמאות לפרמטרים של זמן ריצה
בדוגמאות הבאות אפשר לראות איך משלבים את התו הכללי עם פרמטרים לתרחישים נפוצים. נניח ששם הטבלה הוא mytable ושrun_time הוא 2018-02-15 00:00:00 (UTC) בכל הדוגמאות.
העברת נתונים לטבלה לא מחולקת
תרחיש השימוש הזה מתאים לטעינת קבצים חדשים מקטגוריה של Cloud Storage, Blob Storage או Amazon S3 לטבלה לא מחולקת. בדוגמה הזו נעשה שימוש בתו כללי ב-URI או בנתיב הנתונים, ונעשה שימוש בהעברה של רענון אד-הוק כדי לאסוף קבצים חדשים.
| מקור נתונים | מקור ה-URI או נתיב הנתונים | שם טבלת היעד |
|---|---|---|
| Cloud Storage | gs://bucket/*.csv |
mytable |
| Amazon S3 | s3://bucket/*.csv |
mytable |
| Blob Storage | *.csv |
mytable |
טעינת תמונת מצב של כל הנתונים לטבלה מחולקת למחיצות (Partitions) לפי זמני כתיבת הנתונים
במקרה כזה, כל הנתונים ב-URI או בנתיב הנתונים שצוינו מועברים לטבלה שמחולקת למחיצות לפי התאריך של היום. בהעברה של רענון, ההגדרה הזו מאתרת קבצים שנוספו מאז הטעינה האחרונה ומוסיפה אותם למחיצה מסוימת.
| מקור נתונים | מקור ה-URI או נתיב הנתונים | שם טבלת היעד עם פרמטרים | שם טבלת היעד שנבדק |
|---|---|---|---|
| Cloud Storage | gs://bucket/*.csv |
mytable${run_time|"%Y%m%d"} |
mytable$20180215 |
| Amazon S3 | s3://bucket/*.csv |
mytable${run_time|"%Y%m%d"} |
mytable$20180215 |
| Blob Storage | *.csv |
mytable${run_time|"%Y%m%d"} |
mytable$20180215 |
בתרחיש השימוש הזה, הנתונים של היום מועברים לטבלה שמחולקת למחיצות לפי התאריך של היום. הדוגמה הזו רלוונטית גם להעברה של רענון, שבה מתבצע אחזור של קבצים חדשים שתואמים לתאריך מסוים, והנתונים נטענים למחיצה המתאימה.
| מקור נתונים | נתיב נתונים או URI עם פרמטרים | שם טבלת היעד עם פרמטרים | נתיב נתונים או URI שנבדקו | שם טבלת היעד שנבדק |
|---|---|---|---|---|
| Cloud Storage | gs://bucket/events-{run_time|"%Y%m%d"}/*.csv |
mytable${run_time|"%Y%m%d"} |
gs://bucket/events-20180215/*.csv |
mytable$20180215 |
| Amazon S3 | s3://bucket/events-{run_time|"%Y%m%d"}/*.csv |
mytable${run_time|"%Y%m%d"} |
s3://bucket/events-20180215/*.csv |
mytable$20180215 |
| Blob Storage | events-{run_time|"%Y%m%d"}/*.csv |
mytable${run_time|"%Y%m%d"} |
events-20180215/*.csv |
mytable$20180215 |