Table decorators in legacy SQL

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

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

מעצבי זמן

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

תחביר

@<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> חייבים להיות מ-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]