Table decorators in legacy SQL

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

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

מעצבי זמן

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

תחביר

@<time>
  • הפונקציה מפנה לנתונים היסטוריים של טבלה ב-<time>, במילישניות מאז ראשית התקופה.
  • <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>, באלפיות השנייה מאז תקופת האפוק.
  • <time1> ו-<time2> צריכים להיות מ-7 הימים האחרונים.
  • הערך <time2> הוא אופציונלי, וברירת המחדל שלו היא 'now'.

דוגמאות

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

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

#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]