使用 BigQuery 用戶端程式庫查詢公開資料集

瞭解如何使用 BigQuery 用戶端程式庫查詢公開資料集。


如要直接在Google Cloud 控制台中按照逐步指南操作,請選取偏好的程式設計語言:


事前準備

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

    Go to project selector

  2. 選擇免費使用 BigQuery 沙箱,或是為 Google Cloud 專案啟用計費功能

    如果專案未啟用計費功能,會自動前往 BigQuery 沙箱讓您執行操作。沙箱可供您免付費使用部分 BigQuery 功能,藉此熟悉 BigQuery。如果您只打算將專案用於本文的練習,建議使用 BigQuery 沙箱。

  3. Enable the BigQuery API.

    Enable the API

    新專案會自動啟用 BigQuery API。

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

    Activate Cloud Shell

  5. 在 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.
    ...
    

    這個指令會建立名為 BigQueryCsharpDemo 的 C# 專案和 Program.cs 檔案。

  2. 開啟 Cloud Shell 編輯器:

    cloudshell workspace BigQueryCsharpDemo
  3. 如要在 Cloud Shell 編輯器中開啟終端機,請點選「Open Terminal」(開啟終端機)

  4. 開啟專案目錄:

    cd BigQueryCsharpDemo
  5. 安裝 C# 專用的 BigQuery 用戶端程式庫:

    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. 點選「Open Editor」(開啟編輯器)

  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 並同意條款,請按一下「授權」

    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

    這個指令會建立名為 bigquery-go-quickstart 的 Go 專案及名為 app.go 的檔案。

  2. 開啟 Cloud Shell 編輯器:

    cloudshell workspace bigquery-go-quickstart
  3. 如要在 Cloud Shell 編輯器中開啟終端機,請點選「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. 安裝 Go 專用的 BigQuery 用戶端程式庫:

    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. 點選「Open Editor」(開啟編輯器)

  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 並同意條款,請按一下「授權」

    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 中,使用 Apache Maven 建立新的 Java 專案:

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

    這個指令會建立名為 bigquery-java-quickstart 的 Maven 專案。

    輸出結果大致如下。為簡化輸出結果,這裡省略了幾行內容。

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

    除了 Maven,還有許多依附元件管理系統可以使用。詳情請參閱相關說明,瞭解如何設定 Java 開發環境,以便與用戶端程式庫搭配使用。

  2. 重新命名 Maven 預設建立的 App.java 檔案:

    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 編輯器:

    cloudshell workspace bigquery-java-quickstart
  4. 如果出現提示,詢問是否要同步處理 Java 類別路徑或設定,請點選「Always」(一律)

    若在本逐步操作說明課程中,未看到提示或未發生類別路徑相關錯誤,請按照下列步驟操作:

    1. 依序點選「File」>「Preferences」>「Open Settings (UI)」
    2. 依序點選「Extensions」>「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

    以下指令會建立名為 bigquery-node-quickstart 的 Node.js 專案和 app.js 檔案。

  2. 開啟 Cloud Shell 編輯器:

    cloudshell workspace bigquery-node-quickstart
  3. 如要在 Cloud Shell 編輯器中開啟終端機,請點選「Open Terminal」(開啟終端機)

  4. 開啟專案目錄:

    cd bigquery-node-quickstart
  5. 安裝 Node.js 專用的 BigQuery 用戶端程式庫:

    npm install @google-cloud/bigquery

    輸出結果會與下列內容相似:

    added 63 packages in 2s
    
  6. 點選「Open Editor」(開啟編輯器)

  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 並同意條款,請按一下「授權」

    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

    這個指令會建立名為 bigquery-php-quickstart 的 PHP 專案和 app.php 檔案。

  2. 開啟 Cloud Shell 編輯器:

    cloudshell workspace bigquery-php-quickstart
  3. 如要在 Cloud Shell 編輯器中開啟終端機,請點選「Open Terminal」(開啟終端機)

  4. 開啟專案目錄:

    cd bigquery-php-quickstart
  5. 安裝 PHP 專用的 BigQuery 用戶端程式庫:

    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. 點選「Open Editor」(開啟編輯器)

  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 並同意條款,請按一下「授權」

    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

    這個指令會建立名為 bigquery-python-quickstart 的 Python 專案和 app.py 檔案。

  2. 開啟 Cloud Shell 編輯器:

    cloudshell workspace bigquery-python-quickstart
  3. 如要在 Cloud Shell 編輯器中開啟終端機,請點選「Open Terminal」(開啟終端機)

  4. 開啟專案目錄:

    cd bigquery-python-quickstart
  5. 安裝 Python 專用的 BigQuery 用戶端程式庫:

    pip install --upgrade google-cloud-bigquery

    系統會輸出類似如下內容。為簡化輸出結果,這裡省略了幾行內容。

    Installing collected packages: google-cloud-bigquery
    ...
    Successfully installed google-cloud-bigquery-3.9.0
    ...
    
  6. 點選「Open Editor」(開啟編輯器)

  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 並同意條款,請按一下「授權」

    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

    這個指令會建立名為 bigquery-ruby-quickstart 的 Ruby 專案和 app.rb 檔案。

  2. 開啟 Cloud Shell 編輯器:

    cloudshell workspace bigquery-ruby-quickstart
  3. 如要在 Cloud Shell 編輯器中開啟終端機,請點選「Open Terminal」(開啟終端機)

  4. 開啟專案目錄:

    cd bigquery-ruby-quickstart
  5. 安裝 Ruby 專用的 BigQuery 用戶端程式庫:

    gem install google-cloud-bigquery

    輸出結果會與下列內容相似:為簡化輸出結果,這裡省略了幾行內容。

    23 gems installed
    
  6. 點選「Open Editor」(開啟編輯器)

  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 並同意條款,請按一下「授權」

    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 旗標會刪除資料夾中的所有資產。

後續步驟