הרצת שאילתות במערך נתונים ציבורי באמצעות ספריות הלקוח של BigQuery

איך שולחים שאילתות למערך נתונים ציבורי באמצעות ספריות הלקוח של BigQuery.


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


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

  1. יוצרים או בוחרים פרויקט ב- Google Cloud .

    תפקידים שנדרשים כדי לבחור או ליצור פרויקט

    • בחירת פרויקט: כדי לבחור פרויקט לא נדרש תפקיד IAM ספציפי – אתם יכולים לבחור כל פרויקט שקיבלתם בו תפקיד.
    • יצירת פרויקט: כדי ליצור פרויקט, צריך את התפקיד "יצירת פרויקטים" (roles/resourcemanager.projectCreator), שכולל את ההרשאה resourcemanager.projects.create. איך מקצים תפקידים?
    • יוצרים פרויקט ב- Google Cloud :

      gcloud projects create PROJECT_ID

      מחליפים את PROJECT_ID בשם של הפרויקט ב- Google Cloud שאתם יוצרים.

    • בוחרים את הפרויקט שיצרתם ב- Google Cloud :

      gcloud config set project PROJECT_ID

      מחליפים את PROJECT_ID בשם הפרויקט ב- Google Cloud .

  2. בוחרים אם להשתמש ב-BigQuery Sandbox בחינם או להפעיל חיוב בפרויקט ב- Google Cloud .

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

  3. נותנים תפקידים לחשבון המשתמש. מריצים את הפקודה הבאה לכל אחד מהתפקידים הבאים ב-IAM: roles/serviceusage.serviceUsageAdmin, roles/bigquery.jobUser

    gcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE

    מחליפים את מה שכתוב בשדות הבאים:

    • ‫PROJECT_ID: מזהה הפרויקט.
    • ‫USER_IDENTIFIER: המזהה של חשבון המשתמש . לדוגמה, myemail@example.com.
    • ‫ROLE: תפקיד ה-IAM שאתם מקצים לחשבון המשתמש.
  4. מפעילים את BigQuery API, אם הוא עדיין לא מופעל:

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

    כדי להפעיל ממשקי API, צריך את ההרשאה serviceusage.services.enable. אם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד "בעלים" (roles/owner). אחרת, תוכלו לקבל את ההרשאה הזו דרך התפקיד "אדמין בממשק 'שימוש בשירות'" (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידים

    gcloud services enable bigquery

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

  5. מפעילים את Cloud Shell במסוף Google Cloud .

    הפעלת Cloud Shell

  6. מפעילים את Google Cloud הפרויקט ב-Cloud Shell:

    gcloud config set project PROJECT_ID
    

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

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

    Updated property [core/project].
    

הרצת שאילתות במערך נתונים ציבורי

בוחרים אחת מהשפות הבאות:

C#‎

  1. ב-Cloud Shell, יוצרים פרויקט וקובץ חדשים ב-C#:

    dotnet new console -n BigQueryCsharpDemo

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

    Welcome to .NET 6.0!
    ---------------------
    SDK Version: 6.0.407
    ...
    The template "Console App" was created successfully.
    ...
    

    הפקודה הזו יוצרת פרויקט C# בשם BigQueryCsharpDemo וקובץ בשם Program.cs.

  2. פותחים את Cloud Shell Editor:

    cloudshell workspace BigQueryCsharpDemo
  3. כדי לפתוח טרמינל ב-Cloud Shell Editor, לוחצים על Open Terminal.

  4. פותחים את ספריית הפרויקט:

    cd BigQueryCsharpDemo
  5. מתקינים את ספריית הלקוח של BigQuery ל-C#:

    dotnet add package Google.Cloud.BigQuery.V2

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

    Determining projects to restore...
    Writing /tmp/tmpF7EKSd.tmp
    ...
    info : Writing assets file to disk.
    ...
    
  6. מגדירים את המשתנה GOOGLE_PROJECT_ID לערך GOOGLE_CLOUD_PROJECT ומייצאים את המשתנה:

    export GOOGLE_PROJECT_ID=$GOOGLE_CLOUD_PROJECT
  7. לוחצים על פתיחת הכלי לעריכת סרטונים.

  8. בחלונית Explorer, מאתרים את הפרויקט BIGQUERYCSHARPDEMO.

  9. לוחצים על הקובץ Program.cs כדי לפתוח אותו.

  10. כדי ליצור שאילתה על קבוצת הנתונים bigquery-public-data.stackoverflow שתחזיר את 10 הדפים הנצפים ביותר ב-Stack Overflow ואת מספר הצפיות שלהם, מחליפים את תוכן הקובץ בקוד הבא:

    
    using System;
    using Google.Cloud.BigQuery.V2;
    
    namespace GoogleCloudSamples
    {
        public class Program
        {
            public static void Main(string[] args)
            {
                string projectId = Environment.GetEnvironmentVariable("GOOGLE_PROJECT_ID");
                var client = BigQueryClient.Create(projectId);
                string query = @"SELECT
                    CONCAT(
                        'https://stackoverflow.com/questions/',
                        CAST(id as STRING)) as url, view_count
                    FROM `bigquery-public-data.stackoverflow.posts_questions`
                    WHERE tags like '%google-bigquery%'
                    ORDER BY view_count DESC
                    LIMIT 10";
                var result = client.ExecuteQuery(query, parameters: null);
                Console.Write("\nQuery Results:\n------------\n");
                foreach (var row in result)
                {
                    Console.WriteLine($"{row["url"]}: {row["view_count"]} views");
                }
            }
        }
    }
    

  11. לוחצים על פתיחת הטרמינל.

  12. במסוף, מריצים את הסקריפט Program.cs. אם מתבקשים לאשר את Cloud Shell ולהסכים לתנאים, לוחצים על Authorize.

    dotnet run

    התוצאה אמורה להיראות כך:

    Query Results:
    ------------
    https://stackoverflow.com/questions/35159967: 170023 views
    https://stackoverflow.com/questions/22879669: 142581 views
    https://stackoverflow.com/questions/10604135: 132406 views
    https://stackoverflow.com/questions/44564887: 128781 views
    https://stackoverflow.com/questions/27060396: 127008 views
    https://stackoverflow.com/questions/12482637: 120766 views
    https://stackoverflow.com/questions/20673986: 115720 views
    https://stackoverflow.com/questions/39109817: 108368 views
    https://stackoverflow.com/questions/11057219: 105175 views
    https://stackoverflow.com/questions/43195143: 101878 views
    

הצלחתם להריץ שאילתה במערך נתונים ציבורי באמצעות ספריית הלקוח של BigQuery ב-#C.

המשך

  1. ב-Cloud Shell, יוצרים פרויקט וקובץ חדשים של Go:

    mkdir bigquery-go-quickstart \
        && touch \
        bigquery-go-quickstart/app.go

    הפקודה הזו יוצרת פרויקט Go בשם bigquery-go-quickstart וקובץ בשם app.go.

  2. פותחים את Cloud Shell Editor:

    cloudshell workspace bigquery-go-quickstart
  3. כדי לפתוח טרמינל ב-Cloud Shell Editor, לוחצים על Open Terminal.

  4. פותחים את ספריית הפרויקט:

    cd bigquery-go-quickstart
  5. יוצרים קובץ go.mod:

    go mod init quickstart

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

    go: creating new go.mod: module quickstart
    go: to add module requirements and sums:
            go mod tidy
    
  6. מתקינים את ספריית הלקוח של BigQuery ל-Go:

    go get cloud.google.com/go/bigquery

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

    go: downloading cloud.google.com/go/bigquery v1.49.0
    go: downloading cloud.google.com/go v0.110.0
    ...
    go: added cloud.google.com/go/bigquery v1.49.0
    go: added cloud.google.com/go v0.110.0
    
  7. לוחצים על פתיחת הכלי לעריכה.

  8. בחלונית Explorer, מאתרים את הפרויקט BIGQUERY-GO-QUICKSTART.

  9. לוחצים על הקובץ app.go כדי לפתוח אותו.

  10. כדי ליצור שאילתה במערך הנתונים bigquery-public-data.stackoverflow שמחזירה את 10 הדפים הנצפים ביותר ב-Stack Overflow ואת מספר הצפיות שלהם, מעתיקים את הקוד הבא לקובץ app.go:

    
    // Command simpleapp queries the Stack Overflow public dataset in Google BigQuery.
    package main
    
    import (
    	"context"
    	"fmt"
    	"io"
    	"log"
    	"os"
    
    	"cloud.google.com/go/bigquery"
    	"google.golang.org/api/iterator"
    )
    
    
    func main() {
    	projectID := os.Getenv("GOOGLE_CLOUD_PROJECT")
    	if projectID == "" {
    		fmt.Println("GOOGLE_CLOUD_PROJECT environment variable must be set.")
    		os.Exit(1)
    	}
    
    	ctx := context.Background()
    
    	client, err := bigquery.NewClient(ctx, projectID)
    	if err != nil {
    		log.Fatalf("bigquery.NewClient: %v", err)
    	}
    	defer client.Close()
    
    	rows, err := query(ctx, client)
    	if err != nil {
    		log.Fatal(err)
    	}
    	if err := printResults(os.Stdout, rows); err != nil {
    		log.Fatal(err)
    	}
    }
    
    // query returns a row iterator suitable for reading query results.
    func query(ctx context.Context, client *bigquery.Client) (*bigquery.RowIterator, error) {
    
    	query := client.Query(
    		`SELECT
    			CONCAT(
    				'https://stackoverflow.com/questions/',
    				CAST(id as STRING)) as url,
    			view_count
    		FROM ` + "`bigquery-public-data.stackoverflow.posts_questions`" + `
    		WHERE tags like '%google-bigquery%'
    		ORDER BY view_count DESC
    		LIMIT 10;`)
    	return query.Read(ctx)
    }
    
    type StackOverflowRow struct {
    	URL       string `bigquery:"url"`
    	ViewCount int64  `bigquery:"view_count"`
    }
    
    // printResults prints results from a query to the Stack Overflow public dataset.
    func printResults(w io.Writer, iter *bigquery.RowIterator) error {
    	for {
    		var row StackOverflowRow
    		err := iter.Next(&row)
    		if err == iterator.Done {
    			return nil
    		}
    		if err != nil {
    			return fmt.Errorf("error iterating through results: %w", err)
    		}
    
    		fmt.Fprintf(w, "url: %s views: %d\n", row.URL, row.ViewCount)
    	}
    }
    

  11. לוחצים על פתיחת הטרמינל.

  12. במסוף, מריצים את הסקריפט app.go. אם מתבקשים לאשר את Cloud Shell ולהסכים לתנאים, לוחצים על Authorize.

    go run app.go

    התוצאה אמורה להיראות כך:

    https://stackoverflow.com/questions/35159967 : 170023 views
    https://stackoverflow.com/questions/22879669 : 142581 views
    https://stackoverflow.com/questions/10604135 : 132406 views
    https://stackoverflow.com/questions/44564887 : 128781 views
    https://stackoverflow.com/questions/27060396 : 127008 views
    https://stackoverflow.com/questions/12482637 : 120766 views
    https://stackoverflow.com/questions/20673986 : 115720 views
    https://stackoverflow.com/questions/39109817 : 108368 views
    https://stackoverflow.com/questions/11057219 : 105175 views
    https://stackoverflow.com/questions/43195143 : 101878 views
    

הרצתם בהצלחה שאילתה במערך נתונים ציבורי באמצעות ספריית הלקוח BigQuery Go.

Java

  1. ב-Cloud Shell, יוצרים פרויקט Java חדש באמצעות Apache Maven:

    mvn archetype:generate \
        -DgroupId=com.google.app \
        -DartifactId=bigquery-java-quickstart \
        -DinteractiveMode=false

    הפקודה הזו יוצרת פרויקט Maven בשם bigquery-java-quickstart.

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

    [INFO] Scanning for projects...
    ...
    [INFO] Building Maven Stub Project (No POM) 1
    ...
    [INFO] BUILD SUCCESS
    ...
    

    יש הרבה מערכות לניהול יחסי תלות שאפשר להשתמש בהן במקום Maven. מידע נוסף על הגדרת סביבת פיתוח בשפת Java לשימוש בספריות לקוח

  2. משנים את השם של הקובץ App.java שנוצר כברירת מחדל על ידי Maven:

    mv \
        bigquery-java-quickstart/src/main/java/com/google/app/App.java \
        bigquery-java-quickstart/src/main/java/com/google/app/SimpleApp.java
  3. פותחים את Cloud Shell Editor:

    cloudshell workspace bigquery-java-quickstart
  4. אם מוצגת בקשה לסנכרן את ה-classpath או את ההגדרות האישיות של Java, לוחצים על Always.

    אם לא מופיעה בקשה ומופיעה שגיאה שקשורה ל-classpath במהלך ההדרכה, צריך לבצע את הפעולות הבאות:

    1. לוחצים על File > Preferences > Settings (UI).
    2. לוחצים על תוספים > Java.
    3. גוללים אל Configuration: Update Build Configuration ובוחרים באפשרות automatic.
  5. בחלונית Explorer, מאתרים את הפרויקט BIGQUERY-JAVA-QUICKSTART.

  6. לוחצים על הקובץ pom.xml כדי לפתוח אותו.

  7. בתוך התג <dependencies>, מוסיפים את התלות הבאה אחרי כל התלויות הקיימות. לא להחליף תלות קיימת.

    <dependency>
      <groupId>com.google.cloud</groupId>
      <artifactId>google-cloud-bigquery</artifactId>
    </dependency>
    
  8. בשורה שאחרי תג הסגירה (</dependencies>), מוסיפים את הקוד הבא:

    <dependencyManagement>
      <dependencies>
        <dependency>
          <groupId>com.google.cloud</groupId>
          <artifactId>libraries-bom</artifactId>
          <version>26.1.5</version>
          <type>pom</type>
          <scope>import</scope>
        </dependency>
      </dependencies>
    </dependencyManagement>
    
  9. בחלונית Explorer, בפרויקט BIGQUERY-JAVA-QUICKSTART, לוחצים על src > main/java/com/google/app > SimpleApp.java. הקובץ נפתח.

  10. כדי ליצור שאילתה על קבוצת הנתונים bigquery-public-data.stackoverflow, משאירים את השורה הראשונה בקובץ (package com.google.app;) ומחליפים את שאר התוכן בקובץ בקוד הבא:

    
    import com.google.cloud.bigquery.BigQuery;
    import com.google.cloud.bigquery.BigQueryException;
    import com.google.cloud.bigquery.BigQueryOptions;
    import com.google.cloud.bigquery.FieldValueList;
    import com.google.cloud.bigquery.Job;
    import com.google.cloud.bigquery.JobId;
    import com.google.cloud.bigquery.JobInfo;
    import com.google.cloud.bigquery.QueryJobConfiguration;
    import com.google.cloud.bigquery.TableResult;
    
    
    public class SimpleApp {
    
      public static void main(String... args) throws Exception {
        // TODO(developer): Replace these variables before running the app.
        String projectId = "MY_PROJECT_ID";
        simpleApp(projectId);
      }
    
      public static void simpleApp(String projectId) {
        try {
          BigQuery bigquery = BigQueryOptions.getDefaultInstance().getService();
          QueryJobConfiguration queryConfig =
              QueryJobConfiguration.newBuilder(
                      "SELECT CONCAT('https://stackoverflow.com/questions/', "
                          + "CAST(id as STRING)) as url, view_count "
                          + "FROM `bigquery-public-data.stackoverflow.posts_questions` "
                          + "WHERE tags like '%google-bigquery%' "
                          + "ORDER BY view_count DESC "
                          + "LIMIT 10")
                  // Use standard SQL syntax for queries.
                  // See: https://cloud.google.com/bigquery/sql-reference/
                  .setUseLegacySql(false)
                  .build();
    
          JobId jobId = JobId.newBuilder().setProject(projectId).build();
          Job queryJob = bigquery.create(JobInfo.newBuilder(queryConfig).setJobId(jobId).build());
    
          // Wait for the query to complete.
          queryJob = queryJob.waitFor();
    
          // Check for errors
          if (queryJob == null) {
            throw new RuntimeException("Job no longer exists");
          } else if (queryJob.getStatus().getExecutionErrors() != null
              && queryJob.getStatus().getExecutionErrors().size() > 0) {
            // TODO(developer): Handle errors here. An error here do not necessarily mean that the job
            // has completed or was unsuccessful.
            // For more details: https://cloud.google.com/bigquery/troubleshooting-errors
            throw new RuntimeException("An unhandled error has occurred");
          }
    
          // Get the results.
          TableResult result = queryJob.getQueryResults();
    
          // Print all pages of the results.
          for (FieldValueList row : result.iterateAll()) {
            // String type
            String url = row.get("url").getStringValue();
            String viewCount = row.get("view_count").getStringValue();
            System.out.printf("%s : %s views\n", url, viewCount);
          }
        } catch (BigQueryException | InterruptedException e) {
          System.out.println("Simple App failed due to error: \n" + e.toString());
        }
      }
    }

    השאילתה מחזירה את 10 הדפים הנצפים ביותר ב-Stack Overflow ואת מספר הצפיות שלהם.

  11. לוחצים לחיצה ימנית על SimpleApp.java ואז על Run Java (הפעלת Java). אם מתבקשים לאשר את Cloud Shell ולהסכים לתנאים, לוחצים על Authorize.

    התוצאה אמורה להיראות כך:

    https://stackoverflow.com/questions/35159967 : 170023 views
    https://stackoverflow.com/questions/22879669 : 142581 views
    https://stackoverflow.com/questions/10604135 : 132406 views
    https://stackoverflow.com/questions/44564887 : 128781 views
    https://stackoverflow.com/questions/27060396 : 127008 views
    https://stackoverflow.com/questions/12482637 : 120766 views
    https://stackoverflow.com/questions/20673986 : 115720 views
    https://stackoverflow.com/questions/39109817 : 108368 views
    https://stackoverflow.com/questions/11057219 : 105175 views
    https://stackoverflow.com/questions/43195143 : 101878 views
    

הצלחתם להריץ שאילתה במערך נתונים ציבורי באמצעות ספריית הלקוח של BigQuery Java.

Node.js

  1. ב-Cloud Shell, יוצרים פרויקט וקובץ חדשים של Node.js:

    mkdir bigquery-node-quickstart \
        && touch \
        bigquery-node-quickstart/app.js

    הפקודה הזו יוצרת פרויקט Node.js בשם bigquery-node-quickstart וקובץ בשם app.js.

  2. פותחים את Cloud Shell Editor:

    cloudshell workspace bigquery-node-quickstart
  3. כדי לפתוח טרמינל ב-Cloud Shell Editor, לוחצים על Open Terminal.

  4. פותחים את ספריית הפרויקט:

    cd bigquery-node-quickstart
  5. מתקינים את ספריית הלקוח של BigQuery עבור Node.js:

    npm install @google-cloud/bigquery

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

    added 63 packages in 2s
    
  6. לוחצים על פתיחת הכלי לעריכה.

  7. בחלונית Explorer, מאתרים את הפרויקט BIGQUERY-NODE-QUICKSTART.

  8. לוחצים על הקובץ app.js כדי לפתוח אותו.

  9. כדי ליצור שאילתה במערך הנתונים bigquery-public-data.stackoverflow שמחזירה את 10 הדפים הנצפים ביותר ב-Stack Overflow ואת מספר הצפיות שלהם, מעתיקים את הקוד הבא לקובץ app.js:

    // Import the Google Cloud client library
    const {BigQuery} = require('@google-cloud/bigquery');
    
    async function queryStackOverflow() {
      // Queries a public Stack Overflow dataset.
    
      // Create a client
      const bigqueryClient = new BigQuery();
    
      // The SQL query to run
      const sqlQuery = `SELECT
        CONCAT(
          'https://stackoverflow.com/questions/',
          CAST(id as STRING)) as url,
        view_count
        FROM \`bigquery-public-data.stackoverflow.posts_questions\`
        WHERE tags like '%google-bigquery%'
        ORDER BY view_count DESC
        LIMIT 10`;
    
      const options = {
        query: sqlQuery,
        // Location must match that of the dataset(s) referenced in the query.
        location: 'US',
      };
    
      // Run the query
      const [rows] = await bigqueryClient.query(options);
    
      console.log('Query Results:');
      rows.forEach(row => {
        const url = row['url'];
        const viewCount = row['view_count'];
        console.log(`url: ${url}, ${viewCount} views`);
      });
    }
    queryStackOverflow();

  10. לוחצים על Open Terminal (פתיחת הטרמינל).

  11. במסוף, מריצים את הסקריפט app.js. אם מתבקשים לאשר את Cloud Shell ולהסכים לתנאים, לוחצים על Authorize.

    node app.js

    התוצאה אמורה להיראות כך:

    Query Results:
    url: https://stackoverflow.com/questions/35159967, 170023 views
    url: https://stackoverflow.com/questions/22879669, 142581 views
    url: https://stackoverflow.com/questions/10604135, 132406 views
    url: https://stackoverflow.com/questions/44564887, 128781 views
    url: https://stackoverflow.com/questions/27060396, 127008 views
    url: https://stackoverflow.com/questions/12482637, 120766 views
    url: https://stackoverflow.com/questions/20673986, 115720 views
    url: https://stackoverflow.com/questions/39109817, 108368 views
    url: https://stackoverflow.com/questions/11057219, 105175 views
    url: https://stackoverflow.com/questions/43195143, 101878 views
    

הצלחתם להריץ שאילתה במערך נתונים ציבורי באמצעות ספריית הלקוח BigQuery Node.js.

PHP

  1. ב-Cloud Shell, יוצרים פרויקט וקובץ PHP חדשים:

    mkdir bigquery-php-quickstart \
        && touch \
        bigquery-php-quickstart/app.php

    הפקודה הזו יוצרת פרויקט PHP בשם bigquery-php-quickstart וקובץ בשם app.php.

  2. פותחים את Cloud Shell Editor:

    cloudshell workspace bigquery-php-quickstart
  3. כדי לפתוח טרמינל ב-Cloud Shell Editor, לוחצים על Open Terminal.

  4. פותחים את ספריית הפרויקט:

    cd bigquery-php-quickstart
  5. מתקינים את ספריית הלקוח של BigQuery ל-PHP:

    composer require google/cloud-bigquery

    הפלט אמור להיראות כך: כדי לפשט את הפלט, השמטנו כמה שורות.

    Running composer update google/cloud-bigquery
    Loading composer repositories with package information
    Updating dependencies
    ...
    No security vulnerability advisories found
    Using version ^1.24 for google/cloud-bigquery
    
  6. לוחצים על פתיחת הכלי לעריכת סרטונים.

  7. בחלונית Explorer, מאתרים את הפרויקט BIGQUERY-PHP-QUICKSTART.

  8. לוחצים על הקובץ app.php כדי לפתוח אותו.

  9. כדי ליצור שאילתה במערך הנתונים bigquery-public-data.stackoverflow שמחזירה את 10 הדפים הנצפים ביותר ב-Stack Overflow ואת מספר הצפיות שלהם, מעתיקים את הקוד הבא לקובץ app.php:

    <?php
    # ...
    
    require __DIR__ . '/vendor/autoload.php';
    
    use Google\Cloud\BigQuery\BigQueryClient;
    
    
    $bigQuery = new BigQueryClient();
    $query = <<<ENDSQL
    SELECT
      CONCAT(
        'https://stackoverflow.com/questions/',
        CAST(id as STRING)) as url,
      view_count
    FROM `bigquery-public-data.stackoverflow.posts_questions`
    WHERE tags like '%google-bigquery%'
    ORDER BY view_count DESC
    LIMIT 10;
    ENDSQL;
    $queryJobConfig = $bigQuery->query($query);
    $queryResults = $bigQuery->runQuery($queryJobConfig);
    
    if ($queryResults->isComplete()) {
        $i = 0;
        $rows = $queryResults->rows();
        foreach ($rows as $row) {
            printf('--- Row %s ---' . PHP_EOL, ++$i);
            printf('url: %s, %s views' . PHP_EOL, $row['url'], $row['view_count']);
        }
        printf('Found %s row(s)' . PHP_EOL, $i);
    } else {
        throw new Exception('The query failed to complete');
    }

  10. לוחצים על Open Terminal (פתיחת הטרמינל).

  11. במסוף, מריצים את הסקריפט app.php. אם מתבקשים לאשר את Cloud Shell ולהסכים לתנאים, לוחצים על Authorize.

    php app.php

    התוצאה אמורה להיראות כך:

    --- Row 1 ---
    url: https://stackoverflow.com/questions/35159967, 170023 views
    --- Row 2 ---
    url: https://stackoverflow.com/questions/22879669, 142581 views
    --- Row 3 ---
    url: https://stackoverflow.com/questions/10604135, 132406 views
    --- Row 4 ---
    url: https://stackoverflow.com/questions/44564887, 128781 views
    --- Row 5 ---
    url: https://stackoverflow.com/questions/27060396, 127008 views
    --- Row 6 ---
    url: https://stackoverflow.com/questions/12482637, 120766 views
    --- Row 7 ---
    url: https://stackoverflow.com/questions/20673986, 115720 views
    --- Row 8 ---
    url: https://stackoverflow.com/questions/39109817, 108368 views
    --- Row 9 ---
    url: https://stackoverflow.com/questions/11057219, 105175 views
    --- Row 10 ---
    url: https://stackoverflow.com/questions/43195143, 101878 views
    Found 10 row(s)
    

הצלחתם להריץ שאילתות במערך נתונים ציבורי באמצעות ספריית הלקוח של BigQuery PHP.

Python

  1. ב-Cloud Shell, יוצרים פרויקט וקובץ חדשים ב-Python:

    mkdir bigquery-python-quickstart \
        && touch \
        bigquery-python-quickstart/app.py

    הפקודה הזו יוצרת פרויקט Python בשם bigquery-python-quickstart וקובץ בשם app.py.

  2. פותחים את Cloud Shell Editor:

    cloudshell workspace bigquery-python-quickstart
  3. כדי לפתוח טרמינל ב-Cloud Shell Editor, לוחצים על Open Terminal.

  4. פותחים את ספריית הפרויקט:

    cd bigquery-python-quickstart
  5. מתקינים את ספריית הלקוח של BigQuery ל-Python:

    pip install --upgrade google-cloud-bigquery

    הפלט אמור להיראות כך: כדי לפשט את הפלט, השמטנו כמה שורות.

    Installing collected packages: google-cloud-bigquery
    ...
    Successfully installed google-cloud-bigquery-3.9.0
    ...
    
  6. לוחצים על פתיחת הכלי לעריכת סרטונים.

  7. בחלונית Explorer, מאתרים את הפרויקט BIGQUERY-PYTHON-QUICKSTART.

  8. לוחצים על הקובץ app.py כדי לפתוח אותו.

  9. כדי ליצור שאילתה במערך הנתונים bigquery-public-data.stackoverflow שמחזירה את 10 הדפים הנצפים ביותר ב-Stack Overflow ואת מספר הצפיות שלהם, מעתיקים את הקוד הבא לקובץ app.py:

    from google.cloud import bigquery
    
    
    
    def query_stackoverflow() -> None:
        client = bigquery.Client()
        results = client.query_and_wait(
            """
            SELECT
              CONCAT(
                'https://stackoverflow.com/questions/',
                CAST(id as STRING)) as url,
              view_count
            FROM `bigquery-public-data.stackoverflow.posts_questions`
            WHERE tags like '%google-bigquery%'
            ORDER BY view_count DESC
            LIMIT 10"""
        )  # Waits for job to complete.
    
        for row in results:
            print("{} : {} views".format(row.url, row.view_count))
    
    
    if __name__ == "__main__":
        query_stackoverflow()

  10. לוחצים על פתיחת הטרמינל.

  11. במסוף, מריצים את הסקריפט app.py. אם מתבקשים לאשר את Cloud Shell ולהסכים לתנאים, לוחצים על Authorize.

    python app.py

    התוצאה אמורה להיראות כך:

    https://stackoverflow.com/questions/35159967 : 170023 views
    https://stackoverflow.com/questions/22879669 : 142581 views
    https://stackoverflow.com/questions/10604135 : 132406 views
    https://stackoverflow.com/questions/44564887 : 128781 views
    https://stackoverflow.com/questions/27060396 : 127008 views
    https://stackoverflow.com/questions/12482637 : 120766 views
    https://stackoverflow.com/questions/20673986 : 115720 views
    https://stackoverflow.com/questions/39109817 : 108368 views
    https://stackoverflow.com/questions/11057219 : 105175 views
    https://stackoverflow.com/questions/43195143 : 101878 views
    

הרצתם בהצלחה שאילתה על מערך נתונים ציבורי באמצעות ספריית הלקוח של BigQuery ב-Python.

Ruby

  1. ב-Cloud Shell, יוצרים פרויקט וקובץ חדשים של Ruby:

    mkdir bigquery-ruby-quickstart \
        && touch \
        bigquery-ruby-quickstart/app.rb

    הפקודה הזו יוצרת פרויקט Ruby בשם bigquery-ruby-quickstart וקובץ בשם app.rb.

  2. פותחים את Cloud Shell Editor:

    cloudshell workspace bigquery-ruby-quickstart
  3. כדי לפתוח טרמינל ב-Cloud Shell Editor, לוחצים על Open Terminal.

  4. פותחים את ספריית הפרויקט:

    cd bigquery-ruby-quickstart
  5. מתקינים את ספריית הלקוח של BigQuery ל-Ruby:

    gem install google-cloud-bigquery

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

    23 gems installed
    
  6. לוחצים על פתיחת הכלי לעריכת סרטונים.

  7. בחלונית Explorer, מאתרים את הפרויקט BIGQUERY-RUBY-QUICKSTART.

  8. לוחצים על הקובץ app.rb כדי לפתוח אותו.

  9. כדי ליצור שאילתה במערך הנתונים bigquery-public-data.stackoverflow שמחזירה את 10 הדפים הנצפים ביותר ב-Stack Overflow ואת מספר הצפיות שלהם, מעתיקים את הקוד הבא לקובץ app.rb:

    require "google/cloud/bigquery"
    
    # This uses Application Default Credentials to authenticate.
    # @see https://cloud.google.com/bigquery/docs/authentication/getting-started
    bigquery = Google::Cloud::Bigquery.new
    
    sql     = "SELECT " \
              "CONCAT('https://stackoverflow.com/questions/', CAST(id as STRING)) as url, view_count " \
              "FROM `bigquery-public-data.stackoverflow.posts_questions` " \
              "WHERE tags like '%google-bigquery%' " \
              "ORDER BY view_count DESC LIMIT 10"
    results = bigquery.query sql
    
    results.each do |row|
      puts "#{row[:url]}: #{row[:view_count]} views"
    end

  10. לוחצים על פתיחת הטרמינל.

  11. במסוף, מריצים את הסקריפט app.rb. אם מתבקשים לאשר את Cloud Shell ולהסכים לתנאים, לוחצים על Authorize.

    ruby app.rb

    התוצאה אמורה להיראות כך:

    https://stackoverflow.com/questions/35159967: 170023 views
    https://stackoverflow.com/questions/22879669: 142581 views
    https://stackoverflow.com/questions/10604135: 132406 views
    https://stackoverflow.com/questions/44564887: 128781 views
    https://stackoverflow.com/questions/27060396: 127008 views
    https://stackoverflow.com/questions/12482637: 120766 views
    https://stackoverflow.com/questions/20673986: 115720 views
    https://stackoverflow.com/questions/39109817: 108368 views
    https://stackoverflow.com/questions/11057219: 105175 views
    https://stackoverflow.com/questions/43195143: 101878 views
    

הצלחתם להריץ שאילתות במערך נתונים ציבורי באמצעות ספריית הלקוח BigQuery Ruby.

Rust

  1. ב-Cloud Shell, יוצרים פרויקט Rust חדש:

    cargo new bigquery-rust-quickstart --bin

    הפקודה הזו יוצרת פרויקט Rust בשם bigquery-rust-quickstart ומבנה ספרייה עם src/main.rs.

  2. פותחים את Cloud Shell Editor:

    cloudshell workspace bigquery-rust-quickstart
  3. כדי לפתוח טרמינל ב-Cloud Shell Editor, לוחצים על Open Terminal.

  4. פותחים את ספריית הפרויקט:

    cd bigquery-rust-quickstart
  5. מתקינים את ספריית הלקוח של BigQuery ואת זמן הריצה של Tokio עבור Rust:

    cargo add google-cloud-bigquery
    cargo add tokio --features macros
  6. לוחצים על פתיחת הכלי לעריכת סרטונים.

  7. בחלונית Explorer, מאתרים את הפרויקט BIGQUERY-RUST-QUICKSTART.

  8. לוחצים על הקובץ src/main.rs כדי לפתוח אותו.

  9. כדי ליצור שאילתה מול קבוצת הנתונים bigquery-public-data.stackoverflow שמחזירה את 10 הדפים הנצפים ביותר ב-Stack Overflow ואת מספר הצפיות שלהם, מחליפים את התוכן של הקובץ src/main.rs בקוד הבא:

    use google_cloud_bigquery::client::BigQuery;
    use google_cloud_bigquery::query::FromRow;
    
    pub async fn sample(project_id: &str) -> anyhow::Result<()> {
        let client = BigQuery::builder().build().await?;
    
        let query = r#"
    SELECT
        CONCAT('https://stackoverflow.com/questions/', CAST(id as STRING)) as url,
        view_count
    FROM `bigquery-public-data.stackoverflow.posts_questions`
    WHERE tags like '%google-bigquery%'
    ORDER BY view_count DESC
    LIMIT 10;
    "#;
        let mut rows = client
            .query(query)
            .with_project_id(project_id)
            .until_done()
            .await?
            .read();
    
        #[derive(FromRow, Debug)]
        struct StackOverflowRow {
            url: String,
            view_count: i64,
        }
    
        while let Some(row) = rows.next().await.transpose()? {
            let row: StackOverflowRow = row.try_into()?;
            println!("url: {} views: {}", row.url, row.view_count);
        }
    
        Ok(())
    }

  10. לוחצים על פתיחת הטרמינל.

  11. מריצים את התוכנה בטרמינל. אם מתבקשים לאשר את Cloud Shell ולהסכים לתנאים, לוחצים על Authorize.

    cargo run

    התוצאה אמורה להיראות כך:

    Query Results:
    ------------
    https://stackoverflow.com/questions/35159967: 170023 views
    https://stackoverflow.com/questions/22879669: 142581 views
    https://stackoverflow.com/questions/10604135: 132406 views
    https://stackoverflow.com/questions/44564887: 128781 views
    https://stackoverflow.com/questions/27060396: 127008 views
    https://stackoverflow.com/questions/12482637: 120766 views
    https://stackoverflow.com/questions/20673986: 115720 views
    https://stackoverflow.com/questions/39109817: 108368 views
    https://stackoverflow.com/questions/11057219: 105175 views
    https://stackoverflow.com/questions/43195143: 101878 views
    

הצלחתם להריץ שאילתה על מערך נתונים ציבורי באמצעות ספריית הלקוח של BigQuery ב-Rust.

הסרת המשאבים

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

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

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

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

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

    כניסה לדף Manage resources

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

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

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

C#‎

  1. ב-Cloud Shell, עוברים לספרייה ברמה גבוהה יותר:

    cd ..
  2. מוחקים את התיקייה BigQueryCsharpDemo שיצרתם:

    rm -R BigQueryCsharpDemo

    הדגל -R מוחק את כל הנכסים בתיקייה.

המשך

  1. ב-Cloud Shell, עוברים לספרייה ברמה גבוהה יותר:

    cd ..
  2. מוחקים את התיקייה bigquery-go-quickstart שיצרתם:

    rm -R bigquery-go-quickstart

    הדגל -R מוחק את כל הנכסים בתיקייה.

Java

  1. ב-Cloud Shell, עוברים לספרייה ברמה גבוהה יותר:

    cd ..
  2. מוחקים את התיקייה bigquery-java-quickstart שיצרתם:

    rm -R bigquery-java-quickstart

    הדגל -R מוחק את כל הנכסים בתיקייה.

Node.js

  1. ב-Cloud Shell, עוברים לספרייה ברמה גבוהה יותר:

    cd ..
  2. מוחקים את התיקייה bigquery-node-quickstart שיצרתם:

    rm -R bigquery-node-quickstart

    הדגל -R מוחק את כל הנכסים בתיקייה.

PHP

  1. ב-Cloud Shell, עוברים לספרייה אחת למעלה:

    cd ..
  2. מוחקים את התיקייה bigquery-php-quickstart שיצרתם:

    rm -R bigquery-php-quickstart

    הדגל -R מוחק את כל הנכסים בתיקייה.

Python

  1. ב-Cloud Shell, עוברים לספרייה ברמה גבוהה יותר:

    cd ..
  2. מוחקים את התיקייה bigquery-python-quickstart שיצרתם:

    rm -R bigquery-python-quickstart

    הדגל -R מוחק את כל הנכסים בתיקייה.

Ruby

  1. ב-Cloud Shell, עוברים לספרייה ברמה גבוהה יותר:

    cd ..
  2. מוחקים את התיקייה bigquery-ruby-quickstart שיצרתם:

    rm -R bigquery-ruby-quickstart

    הדגל -R מוחק את כל הנכסים בתיקייה.

חלודה

  1. ב-Cloud Shell, עוברים לספרייה אחת למעלה:

    cd ..
  2. מוחקים את התיקייה bigquery-rust-quickstart שיצרתם:

    rm -R bigquery-rust-quickstart

    הדגל -R מוחק את כל הנכסים בתיקייה.

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