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

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


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


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

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

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

    • Select a project: כדי לבחור פרויקט לא צריך תפקיד IAM ספציפי – אפשר לבחור כל פרויקט שקיבלתם בו תפקיד.
    • יצירת פרויקט: כדי ליצור פרויקט, צריך את התפקיד Project Creator (יצירת פרויקטים) (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. בוחרים אם להשתמש ב-Sandbox של BigQuery ללא תשלום או להפעיל חיוב עבור הפרויקט Google Cloud .

    אם לא מפעילים חיוב בפרויקט, המערכת מעבירה אתכם אוטומטית ל-Sandbox של BigQuery. ארגז החול של BigQuery מאפשר לכם ללמוד על BigQuery באמצעות קבוצה מוגבלת של תכונות BigQuery ללא תשלום. אם אתם לא מתכננים להשתמש בפרויקט מעבר למה שמתואר במסמך הזה, מומלץ להשתמש ב-Sandbox של 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, צריך את תפקיד ה-IAM 'אדמין של Service Usage' (roles/serviceusage.serviceUsageAdmin), שכולל את ההרשאה serviceusage.services.enable. איך מקצים תפקידים

    gcloud services enable bigquery

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

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

    הפעלת Cloud Shell

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

    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. לוחצים על 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#.

המשך

  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. במסוף Google Cloud , נכנסים לדף Manage resources.

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

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