מעצבי טבלאות ב-SQL מדור קודם

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

אפשר להשתמש בערכי <time> יחסיים ומוחלטים. ערכים יחסיים מצוינים באמצעות מספר שלילי, וערכים מוחלטים מצוינים באמצעות מספר חיובי. לדוגמה, -3600000 מציין שעה אחת לפני הזמן הנוכחי באלפיות השנייה, ו-3600000 מציין שעה אחת באלפיות השנייה אחרי 1/1/1970.

מעצבי זמן

מעצבי זמן (לשעבר מעצבי תמונת מצב) מפנים לנתונים ההיסטוריים של טבלה בנקודת זמן מסוימת.

תחביר

@<time>
  • הפונקציה מפנה לנתונים ההיסטוריים של הטבלה ב-<time>, באלפיות השנייה מאז ראשית זמן יוניקס (Unix epoch).
  • הערך של <time> חייב להיות בטווח של שבעת הימים האחרונים, וגדול או שווה לזמן היצירה של הטבלה, אבל קטן מזמן המחיקה או התפוגה של הטבלה.
  • ‫@0 הוא מקרה מיוחד שמתייחס לנתונים הכי ישנים שזמינים בטבלה.

משתמשים במעצבי זמן גם מחוץ ל-SQL מדור קודם. אפשר להשתמש בהם בפקודה bq cp כדי לשחזר טבלאות שנמחקו תוך שבעה ימים ממחיקת הטבלה.

דוגמאות

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

דוגמה לערך יחסי

#legacySQL
SELECT COUNT(*) FROM [PROJECT_ID:DATASET.TABLE@-3600000]

דוגמה לערך מוחלט

  1. כדי לקבל את הערך של <time> מלפני שעה:

    #legacySQL
    SELECT INTEGER(DATE_ADD(USEC_TO_TIMESTAMP(NOW()), -1, 'HOUR')/1000)
    
  2. אחר כך מחליפים את <time> בשאילתה הבאה:

    #legacySQL
    SELECT COUNT(*) FROM [PROJECT_ID:DATASET.TABLE@time]
    

סגנונות טווח

תחביר

@<time1>-<time2>
  • נתוני הטבלה של קובצי העזר שנוספו בין <time1> לבין <time2>, באלפיות השנייה מאז ראשית זמן יוניקס (Unix epoch).
  • התאריכים <time1> ו-<time2> חייבים להיות בטווח של שבעת הימים האחרונים.
  • הפרמטר <time2> הוא אופציונלי, וברירת המחדל שלו היא "עכשיו".

דוגמאות

דוגמאות לערכים יחסיים

כדי לקבל נתונים שנוספו לטבלה בין לפני שעה ללפני חצי שעה:

#legacySQL
SELECT COUNT(*) FROM [PROJECT_ID:DATASET.TABLE@-3600000--1800000]

כדי לקבל נתונים מ-10 הדקות האחרונות:

#legacySQL
SELECT COUNT(*) FROM [PROJECT_ID:DATASET.TABLE@-600000-]

דוגמה לערך מוחלט

כדי לקבל נתונים שנוספו לטבלה בין לפני שעה ללפני חצי שעה:

  1. כדי לקבל את הערך של <time1> מלפני שעה:

    #legacySQL
    SELECT INTEGER(DATE_ADD(USEC_TO_TIMESTAMP(NOW()), -1, 'HOUR')/1000)
    
  2. כדי לקבל את <time2> מלפני חצי שעה:

    #legacySQL
    SELECT INTEGER(DATE_ADD(USEC_TO_TIMESTAMP(NOW()), -30, 'MINUTE')/1000)
    
  3. מחליפים את <time1> ו-<time2> בשאילתה הבאה:

    #legacySQL
    SELECT COUNT(*) FROM [PROJECT_ID:DATASET.TABLE@time1-time2]