はじめに
データアナリティクス事業本部のkobayashiです。
前回BigQueryの外部接続を使ってAmazon S3上のデータをBigQuery上にテーブルとして作成してみました。今回は前回の外部テーブルの環境を使ってS3をソースとする外部テーブルに対してクエリを実行して、その実行結果を再びS3にファイルとして作成したいと思います。
クエリ結果を Amazon S3 にエクスポートする | BigQuery | Google Cloud
前回の記事
外部テーブルへのクエリ結果を Amazon S3 にエクスポートする
S3をソースとする外部テーブルのクエリ結果はEXPORT DATA
ステートメントを使って簡単にS3上に出力することができます。
実行するには以下のリソースが必要ですが、外部接続を作成してあり外部テーブルを作成している状態でしたらすでに整っているはずです。
- Amazon S3 バケットにアクセスするための外部接続
- Amazon S3 BigLake テーブル
- 正しい Amazon Web Services(AWS)の Identity and Access Management(IAM)ポリシー
では早速以下のSQLを実行してエクスポートを試してみます。
export_s3.sql
EXPORT DATA WITH CONNECTION `aws-us-east-1`.ssd_s3_biglake
OPTIONS(uri="s3://{バケット名}/export/*",
format='CSV', -- ファイルフォーマットを指定。CSV, JSON, AVROが選択可能
overwrite=true, -- ファイルが存在していた場合の上書き有無。未指定の場合はfalse
header=true, -- ヘッダ行の有無。未指定の場合はfalse
field_delimiter=',' -- 区切り文字を文字列として指定
)
AS
SELECT
*
FROM
s3_biglake_test.major_results_2020
WHERE
pref_cd < 10;
上記のSQLを実行するとs3://{バケット名}/export/000000000000
にクエリ結果が出力されます。
上記のクエリですが、最初は外部接続のリージョンのaws-us-east-1
をバッククォートで囲わずに実行したためSyntax error: Expected keyword AS but got "-" at [1:32]
のエラーが出ました。必ずバッククォートで囲むようにしましょう。
まとめ
BigQueryの外部テーブルの環境を使ってS3をソースとする外部テーブルに対してクエリを実行して、その実行結果を再びS3にファイルとして作成しました。S3上のファイルを加工するだけにもBigQueryは使える便利なサービスです。
最後まで読んで頂いてありがとうございました。