【BigQuery】GCSのCSVファイルを外部参照したテーブルを作成する

BQ_outsidetable BigQuery

概要

BigQueryで特大のデータを扱いたい、しかし、ストレージのコストがかかってしまうので、テーブルで持ちたくないという時があります。

そういった時には、外部テーブルを利用すると良いかと思います。

その方法をこちらで説明します。

作成方法

BigQueryのデータセットを作成する

まずは、BigQueryでデータセットを作成しておきます。3点リーダーから「データセットを作成」をクリックすれば簡単に作成できます。

GCSに対象のcsvをアップロードする

GCSにバケット「techblog_data」を作成して、テスト用のcsvをアップロードします。

実際にこのようなcsvを使いました。

ソースコードをアップロードする

下記のソースコード(create_table_outside.py)をCloud Shellの3点リーダーからアップロードします。

from google.cloud import bigquery

# BigQuery クライアントの初期化
client = bigquery.Client()

# データセット ID の設定
dataset_id = 'test_dataset'  # データセットIDを適切なものに設定してください。

# データセットの参照を取得
dataset_ref = client.dataset(dataset_id)

# テーブル ID の設定
table_id = "outside_data" # テーブルIDを適切なものに設定してください。

# テーブルスキーマの定義
schema = [
    bigquery.SchemaField("column1", "STRING"),
    bigquery.SchemaField("column2", "STRING"),
    bigquery.SchemaField("column3", "STRING"),
    bigquery.SchemaField("column4", "STRING"),
    bigquery.SchemaField("column5", "STRING"),
    bigquery.SchemaField("column6", "STRING"),
    bigquery.SchemaField("column7", "STRING"),
    bigquery.SchemaField("column8", "STRING"),
    bigquery.SchemaField("column9", "STRING"),
    bigquery.SchemaField("column10", "STRING"),
]

# 外部テーブルの設定
external_config = bigquery.ExternalConfig("CSV")
external_config.source_uris = [
    "gs://techblog_data/outside_table.csv"  # GCS 上のファイルパスを適切に設定してください。
]
external_config.schema = schema
external_config.options.skip_leading_rows = 1  # ヘッダー行がある場合はスキップ
external_config.autodetect = True  # スキーマの自動検出を有効にする場合

# テーブルの作成と外部データ構成の設定
table = bigquery.Table(dataset_ref.table(table_id))
table.external_data_configuration = external_config

# テーブルの作成
table = client.create_table(table)
print(f"Created table {table.table_id}")

ソースコードを実行する

Cloud Shellで、下記コマンドを実行します。

$ python create_table_outside.py

このようにテーブルが作られていれば、完了となります。

まとめ

今回は、外部テーブルの設定のしかたを実践してみました。

BigQueryで外部テーブルを作成することは往々にしてあります。

都度こちらを参考にしていただけると幸いです!

コメント

タイトルとURLをコピーしました