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

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


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


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

  1. Create or select 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.
    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

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

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

  3. Grant roles to your user account. Run the following command once for each of the following IAM roles: roles/serviceusage.serviceUsageAdmin, roles/bigquery.jobUser

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

    Replace the following:

    • PROJECT_ID: Your project ID.
    • USER_IDENTIFIER: The identifier for your user account. For example, myemail@example.com.
    • ROLE: The IAM role that you grant to your user account.
  4. Enable the BigQuery API:

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    gcloud services enable bigquery

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

  5. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

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

    gcloud config set project PROJECT_ID
    

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

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

    Updated property [core/project].
    
  7. הרצת שאילתות במערך נתונים ציבורי

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

    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. לוחצים על Open Terminal (פתיחת הטרמינל).

    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#.

    Go

    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. לוחצים על Open Terminal (פתיחת הטרמינל).

    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. אם מוצגת בקשה לסנכרן את נתיב המחלקה או את ההגדרה של Java, לוחצים על תמיד.

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

      1. לוחצים על קובץ > העדפות > פתיחת הגדרות (ממשק משתמש).
      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. אם מתבקשים לאשר את 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. לוחצים על Open Terminal (פתיחת הטרמינל).

    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. לוחצים על Open Terminal (פתיחת הטרמינל).

    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.

    הסרת המשאבים

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

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

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

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

    1. In the Google Cloud console, go to the Manage resources page.

      Go to Manage resources

    2. In the project list, select the project that you want to delete, and then click Delete.
    3. In the dialog, type the project ID, and then click Shut down to delete the project.

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

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

    C#‎

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

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

      rm -R BigQueryCsharpDemo

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

    Go

    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 מוחק את כל הנכסים בתיקייה.

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