0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

[GCP] BigQueryの機能x実装

Last updated at Posted at 2023-07-25

GCPのBigQueryの概要と機能

概要

Google Cloud Platform(GCP)のBigQueryは、大規模なデータセットを効率的に保存し、クエリを実行するためのデータウェアハウスサービス。BigQueryは、高速でスケーラブルなデータ分析を実現し、ビジネスインテリジェンス(BI)や機械学習などの応用に利用される。また、クエリの実行結果のリアルタイムダッシュボードの作成や、ストリーミングデータの分析もサポートしている。

主な機能

1. ペタバイト規模のデータセットの格納

BigQueryは非常に大容量のデータセットを処理できる。データは、自動的に分散され、複数のサーバーで並列に処理されるため、スループットとパフォーマンスが最適化される。データの格納や管理についても、ユーザーが意識する必要はない。

2. スキーマレスなデータベース

BigQueryは、スキーマレスなデータベースとして機能する。データを格納する際、スキーマを事前に定義する必要はない。そのため、異様な形式のデータでも簡単に格納でき、また、JSONやAvro、Parquetなど、さまざまな形式のデータのインポートとエクスポートにも対応している。

3. クエリの高速実行

BigQueryは、列志向型ストレージエンジンを使用してクエリを高速に実行している。また、自動的にデータの圧縮やパーティショニングを行い、パフォーマンスを最適化している。また、並列クエリの実行や、普段使い慣れたSQLを使用してクエリを実行可能である。

4. ライブリアルタイムデータ分析

BigQueryは、ストリーミングデータの分析をリアルタイムでサポートしている。Pub/SubやDataflowと組み合わせることで、リアルタイムでデータを解析し、ダッシュボードに表示することが可能。

5. 組み込み機械学習

BigQueryには、機械学習モデルをトレーニングし、推論を実行する機能も搭載されている。エンドツーエンドの機械学習ワークフローをBigQuery上で実行することができ、データエンジニアリングからモデル評価まで、すべてのタスクを一元管理することができる。

サンプルコード

Java

import com.google.cloud.bigquery.BigQuery;
import com.google.cloud.bigquery.BigQueryOptions;
import com.google.cloud.bigquery.QueryJobConfiguration;
import com.google.cloud.bigquery.Job;
import com.google.cloud.bigquery.JobId;
import com.google.cloud.bigquery.JobInfo;
import com.google.cloud.bigquery.QueryResponse;

public class BigQuerySample {
    public static void main(String[] args) throws InterruptedException {
        BigQuery bigquery = BigQueryOptions.getDefaultInstance().getService();

        String query = "SELECT * FROM `project.dataset.table` LIMIT 10;";

        QueryJobConfiguration queryConfig =
            QueryJobConfiguration.newBuilder(query)
                .setUseLegacySql(false)
                .build();

        JobId jobId = JobId.newBuilder().build();
        Job queryJob = bigquery.create(JobInfo.newBuilder(queryConfig).setJobId(jobId).build());

        queryJob = queryJob.waitFor();

        QueryResponse response = bigquery.getQueryResults(jobId);

        System.out.println("Query Results:");
        response.getResult().forEach(System.out::println);
    }
}

Go

package main

import (
    "context"
    "fmt"

    "cloud.google.com/go/bigquery"
)

func main() {
    ctx := context.Background()

    client, err := bigquery.NewClient(ctx, "project-id")
    if err != nil {
        // エラーハンドリング
    }
    defer client.Close()

    query := "SELECT * FROM `project.dataset.table` LIMIT 10;"

    q := client.Query(query)
    job, err := q.Run(ctx)
    if err != nil {
        // エラーハンドリング
    }

    job = job.LastStatus()

    it, err := job.Read(ctx)
    if err != nil {
        // エラーハンドリング
    }

    var row []bigquery.Value
    for {
        err := it.Next(&row)
        if err == iterator.Done {
            break
        }
        if err != nil {
            // エラーハンドリング
        }

        fmt.Println(row)
    }
}

C#

using Google.Cloud.BigQuery.V2;
using System;

namespace BigQuerySample
{
    class Program
    {
        static void Main(string[] args)
        {
            string projectId = "project-id";
            string query = "SELECT * FROM `project.dataset.table` LIMIT 10";

            var client = BigQueryClient.Create(projectId);
            var result = client.ExecuteQuery(query, null);

            foreach (BigQueryRow row in result)
            {
                foreach (var cell in row)
                {
                    Console.WriteLine($"{cell.Name}: {cell.Value}");
                }
            }
        }
    }
}

以上がGCPのBigQueryについての詳細とJava、Go、C#のサンプルコードです。このサービスは非常に強力で、大規模なデータセットの保存と分析を簡単に行うことができる。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?