פרמטרים של זמן ריצה בהעברות מ-Amazon S3

כשמגדירים העברת נתונים ב-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 הפרמטר הזה תומך במאפיינים הבאים:


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

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

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

  • טבלאות שמחולקות למחיצות (Partitions) לפי זמני כתיבת הנתונים. במקרה של העברות מ-Cloud Storage, מ-Blob Storage ומ-Amazon S3, זמן ההטמעה הוא זמן הריצה של ההעברה.
  • טבלאות שמחולקות למחיצות על סמך עמודה. סוג העמודה צריך להיות 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

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