שימוש בכלי bq

במדריך הזה תלמדו איך להשתמש ב-bq, כלי ממשק שורת הפקודה (CLI) מבוסס Python ל-BigQuery, כדי ליצור מערך נתונים, לטעון נתונים לדוגמה ולשאול שאילתות על טבלאות. אחרי שתשלימו את המדריך הזה, תכירו את bq ותדעו איך לעבוד עם BigQuery באמצעות CLI.

במאמרי העזרה של כלי שורת הפקודה של BigQuery יש רשימה מלאה של פקודות bq ודגלים.


לחצו על תראו לי איך כדי לקרוא הסבר מפורט על המשימה ישירות במסוף Google Cloud :

תראו לי איך


לפני שמתחילים

  1. נכנסים לחשבון Google Cloud . אם אתם משתמשים חדשים ב- Google Cloud, צרו חשבון כדי שתוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. If you're using an existing project for this guide, verify that you have the permissions required to complete this guide. If you created a new project, then you already have the required permissions.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  5. If you're using an existing project for this guide, verify that you have the permissions required to complete this guide. If you created a new project, then you already have the required permissions.

  6. מפעילים את BigQuery API.

    תפקידים שנדרשים להפעלת ממשקי API

    כדי להפעיל ממשקי API, צריך את תפקיד ה-IAM 'אדמין של Service Usage' (roles/serviceusage.serviceUsageAdmin), שכולל את ההרשאה serviceusage.services.enable. איך מקצים תפקידים

    להפעלת ה-API

    בפרויקטים חדשים, BigQuery API מופעל באופן אוטומטי.

  7. אופציונלי: מפעילים חיוב בפרויקט. גם אם אתם לא רוצים להפעיל חיוב או לספק כרטיס אשראי, השלבים שבמסמך הזה עדיין רלוונטיים. ‫BigQuery מספק לכם ארגז חול לביצוע השלבים. מידע נוסף זמין במאמר בנושא הפעלת ארגז החול של BigQuery.
  8. במסוף Google Cloud , מפעילים את Cloud Shell.

    הפעלת Cloud Shell

    בחלק התחתון של Google Cloud המסוף יתחיל סשן של Cloud Shell ותופיע הודעה של שורת הפקודה. Cloud Shell היא סביבת מעטפת שבה ה-CLI של Google Cloud מותקן ומוגדרים ערכים לפרויקט הקיים. הסשן יופעל תוך כמה שניות.

התפקידים הנדרשים

כדי לקבל את ההרשאות שדרושות ליצירת מערך נתונים, ליצירת טבלה, לטעינת נתונים ולשאילתת נתונים, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים בפרויקט:

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

יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.

הורדת הקובץ שמכיל את נתוני המקור

הקובץ שאתם מורידים מכיל כ-7 MB של נתונים על שמות פופולריים לתינוקות. הוא ניתן על ידי מינהל הביטוח הלאומי בארה"ב.

מידע נוסף על הנתונים זמין במאמר Background information for popular names (מידע כללי על שמות פופולריים) באתר של Social Security Administration (המינהל לביטוח לאומי).

  1. כדי להוריד את הנתונים של רשות הביטוח הלאומי בארה"ב, פותחים את כתובת ה-URL הבאה בכרטיסייה חדשה בדפדפן:

    https://www.ssa.gov/OACT/babynames/names.zip
    
  2. מחזירים את הקובץ למקומו.

    מידע נוסף על סכימת מערך הנתונים זמין בקובץ NationalReadMe.pdf שחולץ.

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

  4. מעבירים את הקובץ לספריית העבודה.

    • אם אתם עובדים ב-Cloud Shell, לוחצים על סמל האפשרויות הנוספות העלאה, לוחצים על בחירת קבצים, בוחרים את קובץ yob2024.txt ואז לוחצים על העלאה.

    • אם אתם עובדים במעטפת מקומית, מעתיקים או מעבירים את הקובץ yob2024.txt לספרייה שבה אתם מריצים את כלי ה-bq.

יצירת מערך נתונים

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

    gcloud config set project PROJECT_ID
    

    מחליפים את PROJECT_ID במזהה הפרויקט.

  1. מזינים את הפקודה הבאה כדי ליצור מערך נתונים בשם babynames:

    bq mk --dataset babynames
    

    הפלט אמור להיראות כך:

    Dataset 'babynames' successfully created.
    
  2. מוודאים שמערך הנתונים babynames מופיע עכשיו בפרויקט:

    bq ls --datasets=true
    

    הפלט אמור להיראות כך:

      datasetId
    -------------
      babynames
    

טעינת נתונים לטבלה

  1. במערך הנתונים babynames, טוענים את קובץ המקור yob2024.txt לטבלה חדשה בשם names2024:

    bq load babynames.names2024 yob2024.txt name:string,assigned_sex_at_birth:string,count:integer
    

    הפלט אמור להיראות כך:

    Upload complete.
    Waiting on bqjob_r3c045d7cbe5ca6d2_0000018292f0815f_1 ... (1s) Current status: DONE
    
  2. מוודאים שהטבלה names2024 מופיעה עכשיו במערך הנתונים babynames:

    bq ls --format=pretty babynames
    

    הפלט אמור להיראות כך: חלק מהעמודות מושמטות כדי לפשט את הפלט.

    +-----------+-------+
    |  tableId  | Type  |
    +-----------+-------+
    | names2024 | TABLE |
    +-----------+-------+
    
  3. מוודאים שסכימת הטבלה של הטבלה החדשה names2024 היא name: string, assigned_sex_at_birth: string ו-count: integer:

    bq show babynames.names2024
    

    הפלט אמור להיראות כך: חלק מהעמודות מושמטות כדי לפשט את הפלט.

      Last modified        Schema                      Total Rows   Total Bytes
    ----------------- ------------------------------- ------------ ------------
    14 Mar 17:16:45   |- name: string                    31904       607494
                      |- assigned_sex_at_birth: string
                      |- count: integer
    

שאילתות על נתונים בטבלה

  1. קביעת השמות הכי פופולריים של בנות בנתונים:

    bq query \
        'SELECT
          name,
          count
        FROM
          babynames.names2024
        WHERE
          assigned_sex_at_birth = "F"
        ORDER BY
          count DESC
        LIMIT 5'
    

    הפלט אמור להיראות כך:

    +-----------+-------+
    |   name    | count |
    +-----------+-------+
    | Olivia    | 14718 |
    | Emma      | 13485 |
    | Amelia    | 12740 |
    | Charlotte | 12552 |
    | Mia       | 12113 |
    +-----------+-------+
    
  2. קובעים את השמות הכי פחות פופולריים לבנים בנתונים:

    bq query \
        'SELECT
          name,
          count
        FROM
          babynames.names2024
        WHERE
          assigned_sex_at_birth = "M"
        ORDER BY
          count ASC
        LIMIT 5'
    

    הפלט אמור להיראות כך:

    +---------+-------+
    |  name   | count |
    +---------+-------+
    | Aaran   |     5 |
    | Aadiv   |     5 |
    | Aadarsh |     5 |
    | Aarash  |     5 |
    | Aadrik  |     5 |
    +---------+-------+
    

    המספר המינימלי הוא 5 כי בנתוני המקור לא מופיעים שמות שמופיעים פחות מ-5 פעמים.

הסרת המשאבים

כדי לא לצבור חיובים בחשבון על המשאבים שבהם השתמשתם בדף הזה, אתם צריכים למחוק את הפרויקט יחד עם המשאבים. Google Cloud Google Cloud

מחיקת הפרויקט

אם השתמשתם ב-Sandbox של BigQuery כדי להריץ שאילתות על מערך הנתונים הציבורי, החיוב לא מופעל בפרויקט שלכם, ולא צריך למחוק את הפרויקט.

הדרך הקלה ביותר לבטל את החיוב היא למחוק את הפרויקט שיצרתם בשביל המדריך.

כדי למחוק את הפרויקט:

  1. במסוף Google Cloud , נכנסים לדף Manage resources.

    כניסה לדף Manage resources

  2. ברשימת הפרויקטים, בוחרים את הפרויקט שרוצים למחוק ולוחצים על Delete.
  3. כדי למחוק את הפרויקט, כותבים את מזהה הפרויקט בתיבת הדו-שיח ולוחצים על Shut down.

מחיקת המשאבים

אם השתמשתם בפרויקט קיים, מוחקים את המשאבים שיצרתם:

  1. מחיקת מערך הנתונים babynames:

    bq rm --recursive=true babynames
    

    הדגל --recursive מוחק את כל הטבלאות במערך הנתונים, כולל הטבלה names2024.

    הפלט אמור להיראות כך:

    rm: remove dataset 'myproject:babynames'? (y/N)
    
  2. כדי לאשר את פקודת המחיקה, מזינים y.

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