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 エディタを開きます。

    cloudshell workspace BigQueryCsharpDemo
  3. Cloud Shell エディタでターミナルを開くには、[ターミナルを開く] をクリックします。

  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. [Explorer] ペインで BIGQUERYCSHARPDEMO プロジェクトを探します。

  9. Program.cs ファイルをクリックして開きます。

  10. Stack Overflow で閲覧回数が上位 10 件のページとそれらのページの閲覧数を返すクエリを bigquery-public-data.stackoverflow データセットに対して作成するには、ファイルの内容を次のコードに置き換えます。

    
    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 エディタを開きます。

    cloudshell workspace bigquery-go-quickstart
  3. Cloud Shell エディタでターミナルを開くには、[ターミナルを開く] をクリックします。

  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. [Explorer] ペインで BIGQUERY-GO-QUICKSTART プロジェクトを探します。

  9. app.go ファイルをクリックして開きます。

  10. Stack Overflow で閲覧回数が上位 10 件のページとそれらのページの閲覧数を返すクエリを bigquery-public-data.stackoverflow データセットに対して作成するには、次のコードを 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 エディタを開きます。

    cloudshell workspace bigquery-java-quickstart
  4. Java クラスパスまたは構成を同期するかどうかを確認するプロンプトが表示されたら、[Always] をクリックします。

    このチュートリアルでプロンプトが表示されず、クラスパスに関連するエラーが発生した場合は、次の操作を行います。

    1. [ファイル] > [設定] > [設定を開く](UI)をクリックします。
    2. [拡張機能] > [Java] をクリックします。
    3. [Configuration: Update Build Configuration] までスクロールし、[automatic] を選択します。
  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プロジェクト ソース > 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());
        }
      }
    }

    このクエリは、Stack Overflow で閲覧回数が上位 10 件のページとその閲覧数を返します。

  11. [SimpleApp.java] を右クリックして、[Run 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 エディタを開きます。

    cloudshell workspace bigquery-node-quickstart
  3. Cloud Shell エディタでターミナルを開くには、[ターミナルを開く] をクリックします。

  4. プロジェクト ディレクトリを開きます。

    cd bigquery-node-quickstart
  5. Node.js 用の BigQuery クライアント ライブラリをインストールします。

    npm install --save @google-cloud/bigquery

    出力は次のようになります。

    added 63 packages in 2s
    
  6. [エディタを開く] をクリックします。

  7. [Explorer] ペインで BIGQUERY-NODE-QUICKSTART プロジェクトを探します。

  8. app.js ファイルをクリックして開きます。

  9. Stack Overflow で閲覧回数が上位 10 件のページとそれらのページの閲覧数を返すクエリを bigquery-public-data.stackoverflow データセットに対して作成するには、次のコードを 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 エディタを開きます。

    cloudshell workspace bigquery-php-quickstart
  3. Cloud Shell エディタでターミナルを開くには、[ターミナルを開く] をクリックします。

  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. [Explorer] ペインで BIGQUERY-PHP-QUICKSTART プロジェクトを探します。

  8. app.php ファイルをクリックして開きます。

  9. Stack Overflow で閲覧回数が上位 10 件のページとそれらのページの閲覧数を返すクエリを bigquery-public-data.stackoverflow データセットに対して作成するには、次のコードを 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 エディタを開きます。

    cloudshell workspace bigquery-python-quickstart
  3. Cloud Shell エディタでターミナルを開くには、[ターミナルを開く] をクリックします。

  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. [Explorer] ペインで BIGQUERY-PYTHON-QUICKSTART プロジェクトを探します。

  8. app.py ファイルをクリックして開きます。

  9. Stack Overflow で閲覧回数が上位 10 件のページとそれらのページの閲覧数を返すクエリを bigquery-public-data.stackoverflow データセットに対して作成するには、次のコードを 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 エディタを開きます。

    cloudshell workspace bigquery-ruby-quickstart
  3. Cloud Shell エディタでターミナルを開くには、[ターミナルを開く] をクリックします。

  4. プロジェクト ディレクトリを開きます。

    cd bigquery-ruby-quickstart
  5. Ruby 用の BigQuery クライアント ライブラリをインストールします。

    gem install google-cloud-bigquery

    出力は次のようになります。出力を簡略化するためにいくつかの行を省略しています。

    23 gems installed
    
  6. [エディタを開く] をクリックします。

  7. [Explorer] ペインで BIGQUERY-RUBY-QUICKSTART プロジェクトを探します。

  8. app.rb ファイルをクリックして開きます。

  9. Stack Overflow で閲覧回数が上位 10 件のページとそれらのページの閲覧数を返すクエリを bigquery-public-data.stackoverflow データセットに対して作成するには、次のコードを 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 フラグを指定するとフォルダ内のすべてのアセットが削除されます。

次のステップ