Help us understand the problem. What is going on with this article?

GolangのBigQueryパッケージで外部データソースとしてCSVを指定するサンプル

BigQuery上で複数の異なるデータソース間でJOINとかしたいことがある。それをする方法。

以下のようなCSVがGCS上に用意されているとする。

people.csv
name,age
jessy,25
thomas,30
brian,34
tommy,33

このCSVのデータをBigQuery上でテーブルっぽく使うには以下のような実装をする。

// スキーマフィールドを定義
nameSchema := bigquery.FieldSchema{
    Name: "name", 
    Required: true, 
    Type: bigquery.StringFieldType,
}
ageSchema := bigquery.FieldSchema{
    Name: "age", 
    Required: true, 
    Type: bigquery.IntegerFieldType,
}

// GCSをBigQuery上で外部データソースとして使うための設定を定義
gcsSrcConfig := bigquery.ExternalDataConfig{
    SourceFormat: bigquery.CSV,
    SourceURIs:   []string{"gs://your-gcp-project/somewhere/somedirectory/people.csv"},
    Schema: []*bigquery.FieldSchema{
        &nameSchema,
        &ageSchema,
    },
}

// CSV上のデータをdataOnGcsとして指定しSQL文で使う
q := client.Query(`select * from dataOnGcs`)
q.TableDefinitions = map[string]bigquery.ExternalData{
    "dataOnGcs": &gcsSrcConfig,
}

ExternalDataConfigAutoDetectというオプションがあり、これをtrueにすると自動でCSVのデータ構造からスキーマを推測してくれると書いてあったのだが、これをtrueにしてもselect文とかで指定できなかった。やはりSchemaに自前でスキーマ定義を渡してやるのが必要そうだ。

GCS以外にもJSONやGoogleスプレッドシートをデータソースとして使えるらしい。ええやん。

IzumiSy
Elmエンジニャー
https://izumisy.work
fringe81
Fringeは、最新のテクノロジーとプロフェッショナルによるサービスにより、社会課題に仮説を立てて市場に広げていくことで、数十年という長期的なスパンで価値を生み出し続け、より良い世界を創る集団です。 既存の領域に限らず、時流を読み、仮説を生み出し、テクノロジーの力で優れたサービスを生み出し続けます。
https://www.fringe81.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした