מבוא ל-SQL ב-BigQuery
במאמר הזה מפורטת סקירה כללית של המשפטים הנתמכים ושל דיאלקטים של SQL ב-BigQuery.
GoogleSQL היא שפת שאילתות מובְנית (SQL) שתואמת לתקן ANSI, וכוללת את סוגי ההצהרות הנתמכים הבאים:
- הצהרות של שאילתות, שנקראות גם הצהרות של שפת שאילתות נתונים (DQL), הן השיטה העיקרית לניתוח נתונים ב-BigQuery. הן סורקות טבלה אחת או יותר או ביטויים ומחזירות את שורות התוצאות המחושבות. הצהרות של שאילתות יכולות לכלול תחביר של צינורות.
- הצהרות בשפה פרוצדורלית הן הרחבות פרוצדורליות ל-GoogleSQL שמאפשרות להריץ כמה הצהרות SQL בבקשה אחת. בהצהרות פרוצדורליות אפשר להשתמש במשתנים ובהצהרות של זרימת בקרה, והן יכולות להוביל לתופעות לוואי.
הצהרות של שפת הגדרת נתונים (DDL) מאפשרות ליצור אובייקטים ולשנות אותם, כמו:
- מערכי נתונים
- טבלאות, כולל הסכימה וסוגי העמודות שלהן
- שיבוטים וצילומים של טבלאות
- תצוגות
- פונקציות
- אינדקסים
- התחייבויות לקיבולת, הזמנות והקצאות
- מדיניות גישה ברמת השורה
הצהרות של שפת טיפול בנתונים (DML) מאפשרות לעדכן, להוסיף ולמחוק נתונים מטבלאות BigQuery.
הצהרות של שפת בקרת נתונים (DCL) מאפשרות לכם לשלוט במשאבי המערכת של BigQuery, כמו גישה וקיבולת.
הצהרות של שפת בקרת עסקאות (TCL) מאפשרות לכם לנהל עסקאות לשינויים בנתונים.
טעינת דוחות וייצוא דוחות כדי לנהל את הנתונים שנכנסים ל-BigQuery ויוצאים ממנו.
דיאלקטים של BigQuery SQL
BigQuery תומך בדיאלקט GoogleSQL, שהוא הדיאלקט המומלץ לכל הפרויקטים החדשים. יש גם ניב SQL מדור קודם עם הגבלות מסוימות. מומלץ לעבור מ-SQL מדור קודם ל-GoogleSQL.
שינוי הניב שמוגדר כברירת מחדל
הממשק שבו אתם משתמשים כדי להריץ שאילתות על הנתונים קובע את דיאלקט השאילתות שמוגדר כברירת מחדל. כדי לעבור לדיאלקט אחר:
המסוף
ניב ברירת המחדל של Google Cloud המסוף הוא GoogleSQL. כדי לשנות את הדיאלקט ל-SQL מדור קודם:
במסוף Google Cloud , עוברים לדף BigQuery.
בעורך השאילתות, לוחצים על הלחצן More > Query settings (עוד > הגדרות השאילתה).
בקטע אפשרויות מתקדמות, בשדה ניב SQL, לוחצים על גרסה קודמת ואז על שמירה. האפשרות הזו מגדירה את האפשרות של SQL מדור קודם לשאילתה הזו. כשלוחצים על add_box SQL Query כדי ליצור שאילתה חדשה, צריך לבחור שוב באפשרות של SQL מדור קודם.
SQL
דיאלקט ברירת המחדל של SQL הוא GoogleSQL.
אפשר להגדיר את דיאלקט ה-SQL על ידי הוספת הקידומת #standardSQL או #legacySQL כחלק מהשאילתה.
קידומות השאילתות האלה לא תלויות באותיות רישיות, הן צריכות להופיע לפני השאילתה ולהיות מופרדות ממנה באמצעות תו מעבר שורה. בדוגמה הבאה, הדיאלקט מוגדר ל-SQL מדור קודם והשאילתה מופעלת על מערך הנתונים natality:
במסוף Google Cloud , עוברים לדף BigQuery.
מזינים את ההצהרה הבאה בעורך השאילתות:
#legacySQL SELECT weight_pounds, state, year, gestation_weeks FROM [bigquery-public-data:samples.natality] ORDER BY weight_pounds DESC LIMIT 10;
לוחצים על הפעלה.
מידע נוסף על הרצת שאילתות זמין במאמר הרצת שאילתה אינטראקטיבית.
BQ
דיאלקט ברירת המחדל של השאילתה בכלי שורת הפקודה bq הוא SQL מדור קודם. כדי לעבור לניב GoogleSQL, מוסיפים את הדגל --use_legacy_sql=false או --nouse_legacy_sql להצהרה בשורת הפקודה.
מעבר לניב GoogleSQL
כדי להשתמש בתחביר GoogleSQL בעבודת שאילתה, צריך להגדיר את הפרמטר use_legacy_sql לערך false.
bq query \
--use_legacy_sql=false \
'SELECT
word
FROM
`bigquery-public-data.samples.shakespeare`'
הגדרת GoogleSQL כניב ברירת המחדל
אפשר להגדיר את GoogleSQL כדיאלקט ברירת המחדל בכלי שורת הפקודה ובמעטפת האינטראקטיבית על ידי עריכת קובץ התצורה של כלי שורת הפקודה: .bigqueryrc.
מידע נוסף על .bigqueryrc זמין במאמר בנושא הגדרת ערכי ברירת מחדל לדגלים ספציפיים לפקודות.
כדי להגדיר את --use_legacy_sql=false ב-.bigqueryrc:
- פותחים את
.bigqueryrcבכלי לעריכת טקסט. כברירת מחדל,.bigqueryrcצריך להיות בספריית המשתמשים, לדוגמה,$HOME/.bigqueryrc. מוסיפים את הטקסט הבא לקובץ. בדוגמה הזו, GoogleSQL מוגדר כתחביר ברירת המחדל לשאילתות ולפקודה
mk(שמשמשת ליצירת תצוגה). אם כבר הגדרתם ערכי ברירת מחדל לדגלי הפקודותqueryאוmk, אתם לא צריכים להוסיף שוב את[query]או[mk].[query] --use_legacy_sql=false [mk] --use_legacy_sql=falseשומרים את הקובץ וסוגרים אותו.
אם אתם משתמשים במעטפת האינטראקטיבית, אתם צריכים לצאת ולהפעיל אותה מחדש כדי שהשינויים יחולו.
למידע על תגים זמינים בשורת הפקודה, ראו חומרי עזר לכלי שורת הפקודה של BigQuery.
C#
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי C#הוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery C# API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
כברירת מחדל, ספריית C# משתמשת ב-GoogleSQL.מעבר לניב SQL מדור קודם
כדי להשתמש בתחביר SQL מדור קודם בעבודת שאילתה, מגדירים את הפרמטר UseLegacySql לערך true.
Go
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Goהוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery Go API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
כברירת מחדל, ספריית הלקוח של Go משתמשת ב-GoogleSQL.מעבר לניב SQL מדור קודם
כדי להשתמש בתחביר SQL מדור קודם בעבודת שאילתה, מגדירים את המאפיין UseLegacySQL בהגדרת השאילתה לערך true.
Java
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Javaהוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery Java API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
כברירת מחדל, ספריית הלקוח של Java משתמשת ב-GoogleSQL.מעבר לניב SQL מדור קודם
כדי להשתמש בתחביר SQL מדור קודם בעבודת שאילתה, מגדירים את הפרמטר useLegacySql לערך true.
Node.js
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Node.jsהוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery Node.js API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
כברירת מחדל, ספריית הלקוח Node.js משתמשת ב-GoogleSQL.מעבר לניב SQL מדור קודם
כדי להשתמש בתחביר SQL מדור קודם בעבודת שאילתה, מגדירים את הפרמטר useLegacySql לערך true.
PHP
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי PHPהוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery PHP API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
כברירת מחדל, ספריית הלקוח של PHP משתמשת ב-GoogleSQL.מעבר לניב SQL מדור קודם
כדי להשתמש בתחביר SQL מדור קודם בעבודת שאילתה, מגדירים את הפרמטר useLegacySql לערך true.
Python
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Pythonהוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery Python API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
כברירת מחדל, ספריית הלקוח של Python משתמשת ב-GoogleSQL.מעבר לניב SQL מדור קודם
כדי להשתמש בתחביר SQL מדור קודם בעבודת שאילתה, מגדירים את הפרמטר use_legacy_sql לערך True.
Ruby
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Rubyהוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery Ruby API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
כברירת מחדל, ספריית הלקוח של Ruby משתמשת ב-GoogleSQL.מעבר לניב SQL מדור קודם
כדי להשתמש בתחביר SQL מדור קודם במשימת שאילתה, מעבירים את האפשרות legacy_sql: true עם השאילתה.
המאמרים הבאים
- מידע על הרצת שאילתת SQL ב-BigQuery זמין במאמר הרצת משימות של שאילתות אינטראקטיביות ושאילתות באצווה.
- מידע נוסף על אופטימיזציה של שאילתות באופן כללי זמין במאמר מבוא לאופטימיזציה של ביצועי שאילתות.
- מידע על תחביר GoogleSQL שמשמש לשאילתות נתונים ב-BigQuery זמין במאמר תחביר שאילתות.
- מידע נוסף על שימוש בתחביר של צינורות בשאילתות זמין במאמר בנושא תחביר של צינורות.