זמינות התכונות של SQL מדור קודם

במסמך הזה מתוארות הגבלות עתידיות על הזמינות של BigQuery SQL מדור קודם, שמבוססות על השימוש במהלך תקופת הערכה ויחולו אחרי 1 ביוני 2026. השינויים האלה הם חלק מהמעבר של BigQuery מ-SQL מדור קודם ל-GoogleSQL, הדיאלקט המומלץ, שתואם ל-ANSI, עבור BigQuery.

למעבר ל-GoogleSQL יש יתרונות בהשוואה ל-SQL מדור קודם:

איך עובדת הזמינות של התכונות

מערכת BigQuery עוקבת אחרי השימוש בתכונות של SQL מדור קודם במהלך תקופת הערכה. בארגונים ובפרויקטים שלא משתמשים ב-SQL מדור קודם בין 1 בנובמבר 2025 ל-1 ביוני 2026,‏ SQL מדור קודם לא יהיה זמין אחרי שתקופת ההערכה תסתיים. בארגונים ובפרויקטים שמשתמשים ב-SQL מדור קודם במהלך תקופת ההערכה, אפשר להמשיך להריץ שאילתות באמצעות קבוצת התכונות הספציפית של SQL מדור קודם שבה אתם משתמשים.

השימוש בתכונות נצבר ברמת הארגון. אם פרויקט כלשהו בארגון משתמש בתכונה מסוימת, התכונה הזו תמשיך להיות זמינה לכל שאר הפרויקטים בארגון. בפרויקטים שלא משויכים לארגון, הזמינות של התכונות מנוהלת ברמת הפרויקט.

קבוצות התכונות של SQL מדור קודם

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

יכולות שפה בסיסיות

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

קטגוריה תכונות
תחביר של שאילתות
  • SELECT
  • FROM
  • JOIN
  • WHERE
  • GROUP BY
  • HAVING
  • ORDER BY
  • LIMIT
לוגיקה של ביטויים Literals:
  • TRUE
  • FALSE
  • NULL

אופרטורים לוגיים:
  • AND
  • OR
  • NOT

פונקציות השוואה:
  • =
  • !=
  • <>
  • <
  • <=
  • >
  • >=
  • IN
  • IS NULL
  • IS NOT NULL
  • IS_EXPLICITLY_DEFINED
  • IS_INF
  • IS_NAN
  • ... BETWEEN ... AND ...

הוראות בקרה על זרימת נתונים:
  • IF
  • IFNULL
  • CASE WHEN … THEN …
פעולות בסיסיות אופרטורים אריתמטיים:
  • +
  • -
  • *
  • /
  • %

פונקציות צבירה בסיסיות:
  • AVG
  • COUNT
  • FIRST
  • LAST
  • MAX
  • MIN
  • NTH
  • SUM
רכיבי נתונים סוגי נתונים בסיסיים:
  • BYTES
  • BOOLEAN
  • FLOAT
  • INTEGER
  • STRING
  • TIMESTAMP

סוגי נתונים מובְנים שנתמכים באופן חלקי:
  • מספר מדויק: NUMERIC, BIGNUMERIC
  • זמן אזרחי:DATE, TIME, DATETIME
  • שדות מובנים: שדות בתוך שדות, שדות חוזרים

פונקציות של Cast:
  • CAST(expr AS type)
  • BOOLEAN
  • BYTES
  • FLOAT
  • INTEGER
  • STRING

המרה כפויה: כל ההמרות הכפויות האוטומטיות של סוגי נתונים כלולות.

יכולות שפה מורחבות

הקטגוריה הזו כוללת תכונות ספציפיות של SQL מדור קודם, שהן מעבר לסט הבסיסי. בניגוד ליכולות בסיסיות או לקבוצות של פונקציות, כל תכונה בקטגוריה הזו מתועדת בנפרד. כדי שהתכונה תמשיך להיות זמינה, צריך להשתמש בה באופן מפורש במהלך תקופת ההערכה.

קטגוריה תכונות
תכונות מתקדמות

קיבוצים של פונקציות

הפונקציות המובנות מאורגנות בקטגוריות קשורות. אם משתמשים בפונקציה אחת בתוך קבוצה במהלך תקופת ההערכה, כל הפונקציות בקבוצה הזו יהיו זמינות.

קיבוץ פונקציות פונקציות
פונקציות מתקדמות (window functions)
  • CUME_DIST
  • DENSE_RANK
  • FIRST_VALUE
  • LAG
  • LAST_VALUE
  • LEAD
  • NTH_VALUE
  • NTILE
  • PERCENT_RANK
  • PERCENTILE_CONT
  • PERCENTILE_DISC
  • RANK
  • RATIO_TO_REPORT
  • ROW_NUMBER
פונקציות צבירה לנתונים סטטיסטיים
  • CORR
  • COVAR_POP
  • COVAR_SAMP
  • STDDEV
  • STDDEV_POP
  • STDDEV_SAMP
  • VARIANCE
  • VAR_POP
  • VAR_SAMP
פונקציות צבירה שמחזירות שדה חוזר
  • NEST
  • QUANTILES
  • UNIQUE
פונקציות צבירה עם פעולות על ביטים
  • BIT_AND
  • BIT_OR
  • BIT_XOR
פונקציות צבירה עם שרשור
  • GROUP_CONCAT
  • GROUP_CONCAT_UNQUOTED
פונקציות צבירה עם מיון
  • COUNT([DISTINCT])
  • EXACT_COUNT_DISTINCT
  • TOP ... COUNT(*)
פונקציות בסיסיות (window functions)
  • AVG
  • COUNT(*)
  • COUNT([DISTINCT])
  • MAX
  • MIN
  • STDDEV
  • SUM
פונקציות לביצוע פעולות ברמת הביטים
  • &
  • |
  • ^
  • <<
  • >>
  • ~
  • BIT_COUNT
ביטויים מותנים
  • COALESCE
  • EVERY
  • GREATEST
  • LEAST
  • NVL
  • SOME
פונקציות המרה
  • FROM_BASE64
  • HEX_STRING
  • TO_BASE64
פונקציות של השעה הנוכחית
  • NOW
  • CURRENT_DATE
  • CURRENT_TIME
  • CURRENT_TIMESTAMP
פונקציות של המשתמש הנוכחי
  • CURRENT_USER
פונקציות של תאריך ושעה
  • DATE
  • DATE_ADD
  • DATEDIFF
  • TIME
  • TIMESTAMP
הפונקציה RAND
  • RAND
פונקציות שמחזירות שדה חוזר
  • POSITION
  • SPLIT
פונקציות גיבוב (hashing)
  • HASH
  • SHA1
  • FARM_FINGERPRINT
פונקציות IP
  • FORMAT_IP
  • FORMAT_PACKED_IP
  • PARSE_IP
  • PARSE_PACKED_IP
פונקציות JSON
  • JSON_EXTRACT
  • JSON_EXTRACT_SCALAR
פונקציות מתמטיות
  • ABS
  • ACOS
  • ASIN
  • ATAN
  • ATAN2
  • CEIL
  • COS
  • DEGREES
  • EXP
  • FLOOR
  • LN
  • LOG
  • LOG10
  • LOG2
  • PI
  • POW
  • RADIANS
  • ROUND
  • SIN
  • SQRT
  • TAN
פונקציות מתמטיות היפרבוליות
  • ACOSH
  • ASINH
  • ATANH
  • COSH
  • SINH
  • TANH
חלק מפונקציות של חותמות זמן
  • DAY
  • DAYOFWEEK
  • DAYOFYEAR
  • HOUR
  • MINUTE
  • MONTH
  • QUARTER
  • SECOND
  • WEEK
  • YEAR
פונקציות של ביטויים רגולריים
  • REGEXP_MATCH
  • REGEXP_EXTRACT
  • REGEXP_REPLACE
פונקציות מחרוזת
  • CONTAINS
  • CONCAT
  • INSTR
  • LEFT
  • LENGTH
  • LOWER
  • LPAD
  • LTRIM
  • REPLACE
  • RIGHT
  • RPAD
  • RTRIM
  • SUBSTR
  • UPPER
פונקציות של כתובות URL
  • HOST
  • DOMAIN
  • TLD
פונקציות של חותמת זמן ב-UNIX
  • FORMAT_UTC_USEC
  • MSEC_TO_TIMESTAMP
  • PARSE_UTC_USEC
  • SEC_TO_TIMESTAMP
  • STRFTIME_UTC_USEC
  • TIMESTAMP_TO_SEC
  • TIMESTAMP_TO_MSEC
  • TIMESTAMP_TO_USEC
  • USEC_TO_TIMESTAMP
  • UTC_USEC_TO_DAY
  • UTC_USEC_TO_HOUR
  • UTC_USEC_TO_MONTH
  • UTC_USEC_TO_WEEK
  • UTC_USEC_TO_YEAR

דוגמאות לזמינות של תכונות

בדוגמאות הבאות מוסבר איך עובדת הזמינות של התכונות.

דוגמה: גישה ליכולות שפה בסיסיות

פרויקט מריץ שאילתת SQL מדור קודם במהלך תקופת ההערכה. נניח שהטבלה T מכילה עמודה X מסוג INTEGER.

#legacySQL
SELECT X FROM T

השימוש הזה מבטיח שכל הפרויקטים בארגון יוכלו להריץ שאילתות שמשתמשות בכל תכונה מתוך קבוצת היכולות הבסיסיות של השפה. לדוגמה, השאילתה הבאה ממשיכה לפעול:

#legacySQL
SELECT X FROM T WHERE X > 10

דוגמה: שימוש בקבוצות של פונקציות

פרויקט משתמש בפונקציה אחת מתוך קבוצת פונקציות ספציפית. נניח שהטבלה T מכילה עמודה X מסוג FLOAT.

#legacySQL
SELECT SIN(X) FROM T

השימוש בפונקציה SIN() מאפשר להשתמש בכל הפונקציות המתמטיות. לכן, כל הפרויקטים בארגון יכולים להשתמש בכל פונקציה אחרת מהקיבוץ הזה, כמו COS().

#legacySQL
SELECT COS(X) FROM T

לעומת זאת, השאילתה הבאה תיכשל אחרי תקופת ההערכה אם אף פרויקט בארגון לא משתמש בפונקציה כלשהי מתוך פונקציות הצבירה לקיבוץ נתונים סטטיסטיים.

#legacySQL
SELECT STDDEV(X) FROM T

דוגמה: שמירת תכונות בטבלאות שונות

נניח שלטבלה X יש עמודה A (INTEGER) ולטבלה Y יש עמודה B (FLOAT). פרויקט מריץ את השאילתה הבאה במהלך תקופת ההערכה:

#legacySQL
SELECT SIN(A) FROM X

הארגון יכול להריץ את השאילתה הבאה אחרי תקופת ההערכה. השאילתה פועלת כי התכונה של פונקציות מתמטיות נשמרה על ידי השאילתה הראשונה. השמירה לא תלויה בטבלה הספציפית, בשם העמודה או בסוג הנתונים שבהם נעשה שימוש, כי גם INTEGER וגם FLOAT הם חלק מהיכולות הבסיסיות של השפה.

#legacySQL
SELECT COS(B) FROM Y

דוגמה: שאילתה מורכבת

נניח שהטבלה T מכילה עמודה X מסוג STRING. במהלך תקופת ההערכה, הפרויקט מריץ את השאילתה הבאה:

#legacySQL
SELECT value, AVG(FLOAT(value)) OVER (ORDER BY value) AS avg
 FROM (
  SELECT LENGTH(SPLIT(X, ',')) AS value
    FROM T
)

השאילתה הזו משתמשת בתכונות של יכולות השפה הבסיסיות ובשלוש קבוצות של פונקציות: פונקציות חלון בסיסיות, פונקציות מחרוזת ופונקציות שמחזירות ערכים חוזרים. כל הפרויקטים בארגון ימשיכו לכלול את התכונות האלה. לכן, שאילתה חדשה שמשתמשת בשילוב אחר של פונקציות מאותן קבוצות תכונות שנשמרו תצליח.

#legacySQL
SELECT value, COUNT(STRING(value)) OVER (ORDER BY value) as count
 FROM (
  SELECT CONCAT(SPLIT(X, ','), '123') AS value
    FROM T
)

שאלות נפוצות

האם ארגון חדש יכול להשתמש ב-SQL מדור קודם?

אחרי תקופת ההערכה, SQL מדור קודם לא זמין לארגונים או לפרויקטים חדשים. במקרים מיוחדים, אפשר לבקש פטור. אם אין לכם גישה ל-Google Forms, אתם יכולים לשלוח אימייל לכתובת bq-legacysql-support@google.com עם מזהה הארגון, רמות השימוש הנוכחיות, תאריך השימוש האחרון, אתגרים בהעברה וציר זמן משוער למעבר ל-GoogleSQL.

האם שאילתות קיימות של SQL מדור קודם יפסיקו לפעול?

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

האם ארגון קיים שמשתמש ב-SQL מדור קודם יכול ליצור פרויקטים חדשים שמשתמשים גם הם ב-SQL מדור קודם?

כן. כל התכונות שפרויקט כלשהו בארגון שלכם ניגש אליהן במהלך תקופת ההערכה ממשיכות להיות זמינות לכל הפרויקטים בארגון, ישנים וחדשים.

האם יש כלי לבדיקה של תכונות SQL מדור קודם שבהן הארגון שלי משתמש?

אין כלי לביקורת של שימוש בתכונות ספציפיות. אפשר לעקוב אחרי השימוש ב-SQL מדור קודם באמצעות שאילתות בתצוגות INFORMATION_SCHEMA.JOBS, כמו שמתואר במאמר ספירת משימות של שאילתות SQL מדור קודם לכל פרויקט. אפשר גם לבדוק את יומני השאילתות ב-Cloud Logging כדי לראות איך נעשה שימוש בתחביר ספציפי.

האם צריך לעבור ל-GoogleSQL?

ההעברה לא נדרשת, אבל מומלצת. ‫GoogleSQL הוא הניב המודרני, המומלץ והמלא.

מה קורה אם שאילתת SQL מדור קודם שלא נמצאת בשימוש לעיתים קרובות לא מופעלת במהלך תקופת ההערכה?

כדי לוודא ששאילתה ממשיכה לפעול, מריצים אותה פעם אחת במהלך תקופת ההערכה. אם לא תוכלו להפעיל אותו בזמן הזה, תוכלו לבקש פטור. אם אין לכם גישה ל-Google Forms, אפשר לשלוח אימייל לכתובת bq-legacysql-support@google.com עם מזהה הארגון, רמות השימוש הנוכחיות, תאריך השימוש האחרון, אתגרים בהעברה וציר זמן משוער למעבר ל-GoogleSQL.

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