BigQuery クライアント ライブラリを使用して一般公開データセットに対してクエリを実行する

BigQuery クライアント ライブラリを使用して一般公開データセットに対してクエリを実行する方法を確認します。


このタスクをGoogle Cloud コンソールで直接行う手順のガイダンスを見ることができます。使用するプログラミング言語を選択してください。


始める前に

  1. Create or select a Google Cloud project.

    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

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

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  2. BigQuery サンドボックスを料金なしで使用するか、プロジェクトの課金を有効にする Google Cloud かを選択します。

    プロジェクトの課金を有効にしない場合は、BigQuery サンドボックス内で作業を行う状態に自動的に設定されます。BigQuery サンドボックスを使用すると、料金なしで一部の BigQuery 機能を試してみることができます。このドキュメントの対象範囲を超えてプロジェクトを使用する予定がない場合は、BigQuery サンドボックスを使用することをおすすめします。

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

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

    Replace the following:

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

    gcloud services enable bigquery

    新しいプロジェクトでは、BigQuery API が自動的に有効になります。

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

    Activate Cloud Shell

  6. Cloud Shell で Google Cloud プロジェクトを有効にします。

    gcloud config set project PROJECT_ID
    

    PROJECT_ID は、このチュートリアルで選択したプロジェクトに置き換えます。

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

    Updated property [core/project].
    
  7. 一般公開データセットに対してクエリを実行する

    次のいずれかの言語を選択します。

    C#

    1. Cloud Shell で、新しい C# プロジェクトとファイルを作成します。

      dotnet new console -n BigQueryCsharpDemo

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

      Welcome to .NET 6.0!
      ---------------------
      SDK Version: 6.0.407
      ...
      The template "Console App" was created successfully.
      ...
      

      このコマンドにより、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. [エクスプローラ] ペインで 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. [エクスプローラ] ペインで 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プロジェクトで 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());
          }
        }
      }

      このクエリは、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 @google-cloud/bigquery

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

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

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

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

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

    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. [エクスプローラ] ペインで 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 フラグを指定するとフォルダ内のすべてのアセットが削除されます。

    次のステップ