1. מבוא
BigQuery הוא מסד נתונים מנוהל של Google, ללא תפעול ובעלות נמוכה לניתוח נתונים. באמצעות BigQuery, אתם יכולים לשלוח שאילתות על טרה-בייטים של נתונים ללא מנהל או תשתית של מסד נתונים. ב-BigQuery נעשה שימוש ב-SQL מוכר ובמודל חיוב לפי שימוש בלבד. ב-BigQuery אפשר להתמקד בניתוח נתונים כדי לקבל תובנות משמעותיות. ב-Codelab הזה משתמשים בכלי שורת הפקודה של BigQuery כדי לטעון קובץ CSV מקומי לטבלת BigQuery חדשה.
מה תלמדו
- איך משתמשים בכלי שורת הפקודה של bq ל-BigQuery
- איך לטעון קובצי נתונים מקומיים לטבלה ב-BigQuery
מה צריך להכין
- פרויקט ב-Google Cloud
- דפדפן, למשל Google Chrome
2. להגדרה
הפעלת BigQuery
אם עדיין אין לכם חשבון Google, עליכם ליצור חשבון.
- נכנסים אל מסוף Google Cloud ועוברים אל BigQuery. אפשר גם לפתוח ישירות את ממשק המשתמש של BigQuery באינטרנט על ידי הזנת כתובת ה-URL הבאה בדפדפן.
https://console.cloud.google.com/bigquery
- מאשרים את התנאים וההגבלות.
- כדי להשתמש ב-BigQuery צריך ליצור פרויקט. יוצרים את הפרויקט החדש לפי ההנחיות.
בוחרים שם לפרויקט ורושמים את מזהה הפרויקט.
מזהה הפרויקט הוא שם ייחודי בכל הפרויקטים ב-Google Cloud. בהמשך ב-Codelab הזה, היא תיקרא PROJECT_ID
.
ה-Codelab הזה משתמש במשאבי BigQuery שעומדים במגבלות של ה-Sandbox של BigQuery. לא נדרש חשבון לחיוב. אם בהמשך תרצו להסיר את המגבלות של Sandbox, תוכלו להוסיף חשבון לחיוב על ידי הרשמה לתקופת הניסיון בחינם ב-Google Cloud.
Cloud Shell
תשתמשו ב-Cloud Shell, סביבת שורת הפקודה שפועלת ב-Google Cloud.
הפעלת Cloud Shell
- במסוף Cloud, לוחצים על Activate Cloud Shell .
אם לא הפעלתם את Cloud Shell בעבר, יוצג לכם מסך ביניים (בחלק הנגלל) שמתאר מהו. במקרה כזה, לוחצים על המשך (וזה לא יקרה שוב). כך נראה המסך החד-פעמי:
ההקצאה וההתחברות ל-Cloud Shell נמשכת כמה דקות.
במכונה הווירטואלית הזו משולבת כל כלי הפיתוח שדרושים לכם. יש בה ספריית בית בנפח מתמיד של 5GB והיא פועלת ב-Google Cloud, מה שמשפר משמעותית את ביצועי הרשת והאימות. אם לא את כולן, ניתן לבצע חלק גדול מהעבודה ב-Codelab הזה באמצעות דפדפן או Chromebook.
אחרי ההתחברות ל-Cloud Shell, אתם אמורים לראות שכבר בוצע אימות ושהפרויקט כבר מוגדר למזהה הפרויקט שלכם.
- מריצים את הפקודה הבאה ב-Cloud Shell כדי לוודא שהאימות בוצע:
gcloud auth list
פלט הפקודה
Credentialed Accounts ACTIVE ACCOUNT * <my_account>@<my_domain.com> To set the active account, run: $ gcloud config set account `ACCOUNT`
- מריצים את הפקודה הבאה ב-Cloud Shell כדי לוודא שהפקודה ב-gcloud יודעת על הפרויקט שלכם:
gcloud config list project
פלט הפקודה
[core] project = <PROJECT_ID>
אם היא לא נמצאת שם, תוכלו להגדיר אותה באמצעות הפקודה הבאה:
gcloud config set project <PROJECT_ID>
פלט הפקודה
Updated property [core/project].
3. יצירת מערך נתונים
יוצרים מערך נתונים שיכלול את הטבלאות.
מה זה מערך נתונים?
מערך נתונים ב-BigQuery הוא אוסף של טבלאות. כל הטבלאות במערך הנתונים מאוחסנות באותו מיקום נתונים. אפשר גם לצרף בקרות גישה מותאמות אישית כדי להגביל את הגישה למערך נתונים ולטבלאות שלו.
יצירת מערך נתונים
ב-Cloud Shell, משתמשים בפקודה bq mk כדי ליצור מערך נתונים בשם 'bq_load_codelab
'.
bq mk bq_load_codelab
הצגת מאפיינים של מערך נתונים
כדי לוודא שיצרתם את מערך הנתונים, אתם יכולים לבדוק את המאפיינים של מערך הנתונים באמצעות הפקודה bq show.
bq show bq_load_codelab
הפלט אמור להיראות כך:
Dataset my-project:bq_load_codelab Last modified ACLs Labels ----------------- -------------------- -------- 15 Jun 14:12:49 Owners: projectOwners, your-email@example.com Writers: projectWriters Readers: projectReaders
4. יצירת קובץ הנתונים
מערכת BigQuery יכולה לטעון נתונים מכמה פורמטים של נתונים, כולל JSON מופרד בשורה חדשה, Avro ו-CSV. כדי לשמור על פשטות, צריך להשתמש בקובץ CSV.
יצירת קובץ CSV
יוצרים קובץ CSV ריק ב-Cloud Shell.
touch customer_transactions.csv
כדי לפתוח את קובץ ה-CSV בעורך הקוד ב-Cloud Shell, מריצים את פקודת העריכה cloudshell, שתפתח חלון דפדפן חדש עם עורך קוד וחלונית של Cloud Shell.
cloudshell edit customer_transactions.csv
בעורך הקוד, מזינים כמה ערכים מופרדים בפסיקים כדי לטעון אותם ב-BigQuery.
ID,Zipcode,Timestamp,Amount,Feedback,SKU c123,78757,2018-02-14 17:01:39Z,1.20,4.7,he4rt5 c456,10012,2018-03-14 15:09:26Z,53.60,3.1,ppiieee c123,78741,2018-04-01 05:59:47Z,5.98,2.0,ch0c0
שומרים את קובץ ה-CSV בלחיצה על File > (קובץ >). עריכה
5. טען נתונים
משתמשים בפקודה bq load כדי לטעון את קובץ ה-CSV לטבלה של BigQuery.
bq load \ --source_format=CSV \ --skip_leading_rows=1 \ bq_load_codelab.customer_transactions \ ./customer_transactions.csv \ id:string,zip:string,ttime:timestamp,amount:numeric,fdbk:float,sku:string
השתמשת באפשרויות הבאות:
--source_format=CSV
משתמש בפורמט הנתונים CSV כשמנתחים את קובץ הנתונים.--skip_leading_rows=1
מדלג על השורה הראשונה בקובץ ה-CSV כי זו שורת כותרת.Bq_load_codelab.customer_transactions—the first positional argument—
מגדיר לאיזו טבלה צריך לטעון את הנתונים../customer_transactions.csv
– הארגומנט השני תלוי המיקום – מגדיר איזה קובץ לטעון. בנוסף לקבצים מקומיים, הפקודה של טעינת bq יכולה לטעון קבצים מ-Cloud Storage באמצעותgs://my_bucket/path/to/file URIs
.- סכימה, שאותה אפשר להגדיר בקובץ סכימת JSON או כרשימה שמופרדת בפסיקים. (השתמשת ברשימה מופרדת בפסיקים כדי לשמור על פשטות).
השתמשתם בסכימה הבאה בטבלה customer_transactions:
Id:string
: מספר לקוחZip:string
: מיקוד בארה"בTtime:timestamp
: התאריך והשעה שבהם בוצעה העסקהAmount:numeric
: הסכום של עסקה (בעמודה מספרית הנתונים נשמרים בפורמט עשרוני), והיא שימושית לערכים כספיים.)Fdbk:float
: הדירוג מתוך סקר משוב על העסקהSku:string
: מזהה של הפריט שנרכש
קבלת פרטי הטבלה
כדי לוודא שהטבלה נטענה, צריך להציג את מאפייני הטבלה.
bq show bq_load_codelab.customer_transactions
פלט:
Table my-project:bq_load_codelab.customer_transactions Last modified Schema Total Rows Total Bytes ----------------- --------------------- ------------ ------------- 15 Jun 15:13:55 |- id: string 3 159 |- zip: string |- ttime: timestamp |- amount: numeric |- fdbk: float |- sku: string
6. הרצת שאילתות על הנתונים
עכשיו, לאחר שהנתונים נטענים, אפשר לשלוח שאילתות באמצעות ממשק המשתמש של BigQuery באינטרנט, פקודת bq או ה-API. השאילתות יכולות לאחד את הנתונים שלכם מול כל מערך נתונים (או מערכי נתונים, כל עוד הם נמצאים באותו מיקום) שיש לכם הרשאה לקרוא אותם.
מריצים שאילתת SQL רגילה שמאחדת את מערך הנתונים עם מערך הנתונים של המיקודים בארה"ב ומסכמת את הטרנזקציות לפי מדינה בארה"ב. משתמשים בפקודה של שאילתת bq כדי להריץ את השאילתה.
bq query --nouse_legacy_sql ' SELECT SUM(c.amount) AS amount_total, z.state_code AS state_code FROM `bq_load_codelab.customer_transactions` c JOIN `bigquery-public-data.utility_us.zipcode_area` z ON c.zip = z.zipcode GROUP BY state_code '
הפלט של הפקודה הזו אמור להיראות כך:
Waiting on bqjob_r26...05a15b38_1 ... (1s) Current status: DONE +--------------+------------+ | amount_total | state_code | +--------------+------------+ | 53.6 | NY | | 7.18 | TX | +--------------+------------+
השאילתה שהרצתם השתמשה במערך נתונים ציבורי ובמערך הנתונים הפרטי שלכם. כדי לקבל מידע נוסף, אפשר לעיין בגרסה הזו של התגובה לאותה שאילתה:
#standardSQL SELECT /* Total of all transactions in the state. */ SUM(c.amount) AS amount_total, /* State corresponding to the transaction's zipcode. */ z.state_code AS state_code /* Query the table you just constructed. * Note: If you omit the project from the table ID, * the dataset is read from your project. */ FROM `bq_load_codelab.customer_transactions` c /* Join the table to the zipcode public dataset. */ JOIN `bigquery-public-data.utility_us.zipcode_area` z /* Find the state corresponding to the transaction's zipcode. */ ON c.zip = z.zipcode /* Group over all transactions by state. */ GROUP BY state_code
7. הסרת המשאבים
מוחקים את מערך הנתונים שיצרתם באמצעות הפקודה bq rm. משתמשים בדגל -r כדי להסיר את הטבלאות שהוא מכיל.
bq rm -r bq_load_codelab
8. מעולה!
העליתם טבלה ל-BigQuery והרצתם שאילתות לגביה.
מה נכלל?
- שימוש בכלי שורת הפקודה
bq
לאינטראקציה עם BigQuery. - צירוף הנתונים שלכם ומערך נתונים ציבורי לשאילתת BigQuery.
המאמרים הבאים
למידע נוסף על:
- כלי שורת הפקודה
bq
- דרכים אחרות לטעינת נתונים ל-BigQuery.
- מערכי נתונים ציבוריים אחרים שזמינים דרך BigQuery.
- מזג אוויר, פשע וסוגים אחרים של נתונים ב-TIL עם BigQuery.