開発環境
- GCP BigQuery
- Laravel 9
- PHP 8.1
概要
LaravelでGCPのBigQueryを実装することになりました。
そもそもGCP自体よくわかっていない状態から、BigQueryの実装に入ったためかなり苦しみました。
目的はBigQueryのDBにデータを挿入・削除することです。
認証やSQLなど躓いたポイントを備忘録で残します。
BigQueryの実装
LaravelでBigQueryを実装するためにはまず、ライブラリをインストールする必要があります
composer require google/cloud-bigquery
次にBigQuery専用の関数を使えるようにするために、BigQueryのClientインスタンスを作成する必要があります。
use
でBigQueryClient
をインポートします。
use Google\Cloud\BigQuery\BigQueryClient
クライアントに必要なものは2つです
- Project Id → プロジェクトを作成したときに設定したID
- クレデンシャル情報(OAuth認証)のjsonファイル
BigQueryClientの作成
方法は2パターンです
PATH を指定する方法
new BigQueryClient([
'projectId' => プロジェクトID,
'keyFilePath' => './credential.json'
]);
jsonのKey・valueを取り出して設定する方法
new BigQueryClient([
'projectId' => プロジェクトID,
'keyFile' => [
'type' => env('GCP_TYPE'),
'project_id' => env('GCP_PROJECT_ID'),
'private_key_id' => env('GCP_PRIVATE_KEY_ID'),
'private_key' => env('GCP_PRIVAATE_KEY'),
〜 以下省略 〜
]
]);
※.envファイルに記述する場合、private_key
の記述方法には注意が必要です
INSERTとDELETE
BigQueryのDBを操作するためにはquery()
とrunQuery()
を使います
$query = 'INSERT or DELETEのSQL';
$jobConfig = $bigQuery->query($query);
$job = $bigQuery->startQuery($jobConfig);
※DELETEで全件削除するときには注意が必要です
公式 を見るのが一番正確ですが、
少し読み解くのに時間がかかったため、重要な処理をまとめてみました。