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

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


Google Cloud コンソールで直接このタスクを行う、順を追ったガイダンスについては、次のプログラミング言語を選択してください。

C# ツアーを見る Go ツアーを見る Java ツアーを見る Node.js ツアーを見る

PHP ツアーを見る Python ツアーを見る Ruby ツアーを見る


始める前に

  1. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタに移動

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

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

  3. BigQuery API を有効にします。

    API を有効にする

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

  4. Google Cloud コンソールで、「Cloud Shell をアクティブにする」をクリックします。

    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 エディタでターミナルを開くには、[Terminal] > [New Terminal] をクリックします。

  4. C# 用の BigQuery クライアント ライブラリをインストールします。

    dotnet add package Google.Cloud.BigQuery.V2
    

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

    Determining projects to restore...
    Writing /tmp/tmpF7EKSd.tmp
    ...
    info : Writing assets file to disk.
    ...
    
  5. 変数 GOOGLE_PROJECT_ID を値 GOOGLE_CLOUD_PROJECT に設定し、変数をエクスポートします。

    export GOOGLE_PROJECT_ID=$GOOGLE_CLOUD_PROJECT
    
  6. [エクスプローラ] ペインで、BIGQUERYCSHARPDEMO プロジェクトを見つけます。

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

  8. 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");
                }
            }
        }
    }
    

  9. ターミナルで、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 エディタでターミナルを開くには、[Terminal] > [New Terminal] をクリックします。

  4. go.mod ファイルを作成します。

    go mod init quickstart
    

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

    go: creating new go.mod: module quickstart
    go: to add module requirements and sums:
            go mod tidy
    
  5. 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
    
  6. [エクスプローラ] ペインで、BIGQUERY-GO-QUICKSTART プロジェクトを見つけます。

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

  8. 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)
    	}
    }
    

  9. ターミナルで、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. [構成: ビルド構成を更新] までスクロールし、[自動] を選択します。
  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.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;
    import java.util.UUID;
    
    public class SimpleApp {
      public static void main(String... args) throws Exception {
        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();
    
        // Create a job ID so that we can safely retry.
        JobId jobId = JobId.of(UUID.randomUUID().toString());
        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);
        }
      }
    }

    クエリは、最も閲覧されている Stack Overflow ページ(上位 10 件)と閲覧数を返します。

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

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

  4. Node.js 用 BigQuery クライアント ライブラリをインストールします。

    npm install --save @google-cloud/bigquery
    

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

    added 63 packages in 2s
    
  5. [エクスプローラ] ペインで、BIGQUERY-NODE-QUICKSTART プロジェクトを見つけます。

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

  7. 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();

  8. ターミナルで、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 エディタでターミナルを開くには、[Terminal] > [New Terminal] をクリックします。

  4. 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
    
  5. [エクスプローラ] ペインで、BIGQUERY-PHP-QUICKSTART プロジェクトを見つけます。

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

  7. 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');
    }

  8. ターミナルで、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 エディタでターミナルを開くには、[Terminal] > [New Terminal] をクリックします。

  4. Python 用の BigQuery クライアント ライブラリをインストールします。

    pip install --upgrade google-cloud-bigquery
    

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

    Installing collected packages: google-cloud-bigquery
    ...
    Successfully installed google-cloud-bigquery-3.9.0
    ...
    
  5. [エクスプローラ] ペインで、BIGQUERY-PYTHON-QUICKSTART プロジェクトを見つけます。

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

  7. 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()

  8. ターミナルで、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 エディタでターミナルを開くには、[Terminal] > [New Terminal] をクリックします。

  4. Ruby 用 BigQuery クライアント ライブラリをインストールします。

    gem install google-cloud-bigquery
    

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

    23 gems installed
    
  5. [エクスプローラ] ペインで、BIGQUERY-RUBY-QUICKSTART プロジェクトを見つけます。

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

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

  8. ターミナルで、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. Google Cloud コンソールで、[リソースの管理] ページに移動します。

    [リソースの管理] に移動

  2. プロジェクト リストで、削除するプロジェクトを選択し、[削除] をクリックします。
  3. ダイアログでプロジェクト ID を入力し、[シャットダウン] をクリックしてプロジェクトを削除します。

リソースを削除する

既存のプロジェクトを使用した場合は、作成したリソースを削除します。

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 フラグは、フォルダ内のすべてのアセットを削除します。

次のステップ