使用 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。 如果您不打算在本文档之外使用您的项目,我们建议您使用 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 Editor:

    cloudshell workspace BigQueryCsharpDemo
  3. 如需在 Cloud Shell Editor 中打开终端,请点击打开终端

  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. 点击打开编辑器

  8. 探索器窗格中,找到您的 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 并同意相应条款,请点击授权

    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 Editor:

    cloudshell workspace bigquery-go-quickstart
  3. 如需在 Cloud Shell Editor 中打开终端,请点击打开终端

  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. 点击打开编辑器

  8. 探索器窗格中,找到您的 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 并同意相应条款,请点击授权

    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 Editor:

    cloudshell workspace bigquery-java-quickstart
  4. 如果系统提示您是否同步 Java 类路径或配置,请点击始终

    如果系统未提示您并且在本演示中遇到与类路径相关的错误,请执行以下操作:

    1. 依次点击文件 > 偏好设置 > Open Settings (UI)(打开设置[界面])
    2. 依次点击扩展程序 > Java
    3. 滚动到 Configuration: Update Build Configuration(配置:更新构建配置),然后选择自动
  5. 探索器窗格中,找到您的 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. 探索器窗格中的 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().getError() != null) {
            // You can also look at queryJob.getStatus().getExecutionErrors() for all
            // errors, not just the latest one.
            throw new RuntimeException(queryJob.getStatus().getError().toString());
          }
    
          // 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 并同意相应条款,请点击授权

    结果类似于以下内容:

    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 Editor:

    cloudshell workspace bigquery-node-quickstart
  3. 如需在 Cloud Shell Editor 中打开终端,请点击打开终端

  4. 打开项目目录:

    cd bigquery-node-quickstart
  5. 安装 Node.js 版 BigQuery 客户端库:

    npm install --save @google-cloud/bigquery

    输出类似于以下内容:

    added 63 packages in 2s
    
  6. 点击打开编辑器

  7. 探索器窗格中,找到您的 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. 点击打开终端

  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 Editor:

    cloudshell workspace bigquery-php-quickstart
  3. 如需在 Cloud Shell Editor 中打开终端,请点击打开终端

  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. 点击打开编辑器

  7. 探索器窗格中,找到您的 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. 点击打开终端

  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 Editor:

    cloudshell workspace bigquery-python-quickstart
  3. 如需在 Cloud Shell Editor 中打开终端,请点击打开终端

  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. 点击打开编辑器

  7. 探索器窗格中,找到您的 BIGQUERY-PYTHON-QUICKSTART 项目。

  8. 点击 app.py 文件以将其打开。

  9. 如需针对 bigquery-public-data.stackoverflow 数据集创建查询以返回用户查看最多的前 10 个 Stack Overflow 页面及其查看次数,请将以下代码复制到 app.py 文件中:

    from google.cloud import bigquery
    
    
    
    def query_stackoverflow():
        client = bigquery.Client()
        query_job = 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"""
        )
    
        results = query_job.result()  # 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 并同意相应条款,请点击授权

    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 Editor:

    cloudshell workspace bigquery-ruby-quickstart
  3. 如需在 Cloud Shell Editor 中打开终端,请点击打开终端

  4. 打开项目目录:

    cd bigquery-ruby-quickstart
  5. 安装 Ruby 版 BigQuery 客户端库:

    gem install google-cloud-bigquery

    输出类似于以下内容:这里为了简化输出,省略了数行代码。

    23 gems installed
    
  6. 点击打开编辑器

  7. 探索器窗格中,找到您的 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 并同意相应条款,请点击授权

    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 标志会删除文件夹中的所有资产。

后续步骤