מבוא ל-SQL ב-BigQuery
בעזרת GoogleSQL ב-BigQuery אתם יכולים לנתח מערכי נתונים עצומים, לנהל אובייקטים של מסדי נתונים ולשלוט בגישה למחסן הנתונים. סוגי ההצהרות והניבים של SQL שנתמכים מאפשרים לכם ליצור ביעילות שאילתות מורכבות, ולהשתמש בכל חבילת התכונות של ניהול ושינוי נתונים ב-BigQuery.
GoogleSQL היא שפת שאילתות מובנית (SQL) תואמת ANSI, שתומכת בסוגי ההצהרות הבאים:
- הצהרות של שאילתות, שנקראות גם הצהרות של שפת שאילתות נתונים (DQL), הן השיטה העיקרית לניתוח נתונים ב-BigQuery. הן סורקות טבלה אחת או יותר או ביטויים, ומחזירות את שורות התוצאות המחושבות. הצהרות של שאילתות יכולות לכלול תחביר צינור עיבוד נתונים.
- הצהרות בשפה פרוצדורלית הן תוספים פרוצדורליים ל-GoogleSQL, שמאפשרים להריץ כמה הצהרות SQL בבקשה אחת. בהצהרות פרוצדורליות אפשר להשתמש במשתנים ובהצהרות של בקרת זרימה, ויכולות להיות להן תופעות לוואי.
הצהרות של שפת הגדרת נתונים (DDL) מאפשרות ליצור ולשנות אובייקטים כמו:
- מערכי נתונים
- טבלאות, כולל הסכימה וסוגי העמודות שלהן
- שכפולים ו-snapshots של טבלאות
- תצוגות
- פונקציות
- אינדקסים
- התחייבויות, הזמנות והקצאות של קיבולת
- כללי מדיניות גישה ברמת השורה
פקודות של שפת הטיפול בנתונים (DML) מאפשרות לעדכן, להוסיף ולמחוק נתונים מטבלאות BigQuery.
הצהרות בשפת בקרת הנתונים (DCL) מאפשרות לשלוט במשאבי המערכת של BigQuery, כמו גישה וקיבולת.
הצהרות של שפת בקרת טרנזקציות (TCL) מאפשרות לנהל טרנזקציות לשינויי נתונים.
הצהרות טעינה והצהרות ייצוא מאפשרות לכם לנהל את הנתונים שנכנסים ל-BigQuery ויוצאים ממנו.
דיאלקטים של SQL ב-BigQuery
BigQuery תומך בדיאלקט GoogleSQL, שהוא הדיאלקט המומלץ לכל הפרויקטים החדשים. אפשר גם להשתמש בניב SQL מדור קודם, עם כמה מגבלות. מומלץ לעבור מ-SQL מדור קודם ל-GoogleSQL.
שינוי הניב שמוגדר כברירת מחדל
הממשק שבו אתם משתמשים כדי לשלוח שאילתות לנתונים קובע את שפת השאילתה שמוגדרת כברירת מחדל. כדי לעבור לניב אחר:
המסוף
ניב ברירת המחדל של מסוף Google Cloud הוא GoogleSQL. כדי לשנות את הניב ל-SQL מדור קודם:
נכנסים לדף BigQuery במסוף Google Cloud .
בעורך השאילתות, לוחצים על Edit > Query settings.
בקטע Advanced options, בשדה SQL dialect לוחצים על Legacy ואז על Save. ההגדרה הזו קובעת את האפשרות של SQL מדור קודם בשאילתה הזו. כשלוחצים על add_box שאילתת SQL כדי ליצור שאילתה חדשה, צריך לבחור שוב באפשרות של SQL מדור קודם.
SQL
דיאלקט ברירת המחדל של SQL הוא GoogleSQL.
כדי להגדיר את ניב ה-SQL, אפשר לכלול את הקידומת #standardSQL או #legacySQL כחלק מהשאילתה.
הקידומות האלה לא תלויות אותיות רישיות, הן חייבות להופיע לפני השאילתה וצריך להפריד ביניהן לבין השאילתה באמצעות תו של מעבר שורה. בדוגמה הבאה, הדיאלקט מוגדר ל-SQL מדור קודם והשאילתה מורצת על מערך הנתונים natality:
נכנסים לדף BigQuery במסוף Google Cloud .
בעורך השאילתות, מזינים את ההצהרה הבאה:
#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 במדריך למתחילים של 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.
- מידע נוסף על השימוש בתחביר צינור עיבוד נתונים בשאילתות זמין במאמר תחביר צינור עיבוד נתונים.