BigQuery 클라이언트 라이브러리로 공개 데이터 세트 쿼리

BigQuery 클라이언트 라이브러리를 사용하여 공개 데이터 세트를 쿼리하는 방법을 알아봅니다.


Google Cloud 콘솔에서 이 태스크에 대한 단계별 안내를 직접 수행하려면 원하는 프로그래밍 언어를 선택합니다.

C# 둘러보기 Go 둘러보기 자바 둘러보기 Node.js 둘러보기

PHP 둘러보기 Python 둘러보기 Ruby 둘러보기


시작하기 전에

  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. 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 편집기에서 터미널을 열려면 터미널 > 새 터미널을 클릭합니다.

  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 클라이언트 라이브러리를 사용하여 공개 데이터 세트를 쿼리했습니다.

자바

  1. Cloud Shell에서 Apache Maven을 사용하여 새 자바 프로젝트를 만듭니다.

    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 외에 사용할 수 있는 많은 종속 항목 관리 시스템이 있습니다. 자세한 내용은 클라이언트 라이브러리와 함께 사용할 자바 개발 환경 설정 방법을 알아보세요.

  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. 자바 클래스 경로 또는 구성을 동기화할지 묻는 메시지가 표시되면 항상을 클릭합니다.

    메시지가 표시되지 않고 이 둘러보기 중 클래스 경로와 관련된 오류가 발생하면 다음을 수행합니다.

    1. 파일 > 환경설정 > 설정 열기(UI)를 클릭합니다.
    2. 확장 프로그램 > 자바를 클릭합니다.
    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. Explorer 창의 BIGQUERY-JAVA-QUICKSTART 프로젝트에서 src > main/java/com/google/app > SimpleApp.java를 클릭합니다. 파일이 열립니다.

  10. bigquery-public-data.stackoverflow 데이터 세트에 대한 쿼리를 만들려면 파일의 첫 번째 줄(package com.google.app;)을 그대로 두고 파일의 나머지 콘텐츠를 다음 코드로 바꿉니다.

    
    import com.google.cloud.bigquery.BigQuery;
    import com.google.cloud.bigquery.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를 마우스 오른쪽 버튼으로 클릭하고 자바 실행을 클릭합니다. 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 자바 클라이언트 라이브러리를 사용하여 공개 데이터 세트를 쿼리했습니다.

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. 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 편집기에서 터미널을 열려면 터미널 > 새 터미널을 클릭합니다.

  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 편집기에서 터미널을 열려면 터미널 > 새 터미널을 클릭합니다.

  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 편집기에서 터미널을 열려면 터미널 > 새 터미널을 클릭합니다.

  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. 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 플래그는 폴더의 모든 에셋을 삭제합니다.

자바

  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 플래그는 폴더의 모든 에셋을 삭제합니다.

다음 단계