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]
דוגמה לערך מוחלט
<time>לפני שעה:#legacySQL SELECT INTEGER(DATE_ADD(USEC_TO_TIMESTAMP(NOW()), -1, 'HOUR')/1000)אחר כך, מחליפים את
<time>בשאילתה הבאה:#legacySQL SELECT COUNT(*) FROM [PROJECT_ID:DATASET.TABLE@time]
מעצבי טווח
תחביר
@<time1>-<time2>
- נתונים בטבלת ההפניות שנוספו בין
<time1>לבין<time2>, באלפיות שנייה מאז ראשית זמן יוניקס (Unix epoch). <time1>ו-<time2>חייבים להיות בטווח של שבעת הימים האחרונים.- הערך
<time2>הוא אופציונלי, וערך ברירת המחדל שלו הוא 'now'.
דוגמאות
דוגמאות לערכים יחסיים
כדי לקבל נתונים מהטבלה שנוספו לפני שעה עד חצי שעה:
#legacySQL
SELECT COUNT(*) FROM [PROJECT_ID:DATASET.TABLE@-3600000--1800000]
כדי לקבל נתונים מ-10 הדקות האחרונות:
#legacySQL
SELECT COUNT(*) FROM [PROJECT_ID:DATASET.TABLE@-600000-]
דוגמה לערך מוחלט
כדי לקבל נתונים מהטבלה שנוספו לפני שעה עד חצי שעה:
<time1>לפני שעה:#legacySQL SELECT INTEGER(DATE_ADD(USEC_TO_TIMESTAMP(NOW()), -1, 'HOUR')/1000)קבלת
<time2>לפני חצי שעה:#legacySQL SELECT INTEGER(DATE_ADD(USEC_TO_TIMESTAMP(NOW()), -30, 'MINUTE')/1000)מחליפים את
<time1>ואת<time2>בשאילתה הבאה:#legacySQL SELECT COUNT(*) FROM [PROJECT_ID:DATASET.TABLE@time1-time2]