Visual Basic サンプル集 |
Visual Basic 中学校 > Visual Basic サンプル集 > Visual Basic サンプル集目次 > GCP > BigQuery
BigQueryで行を削除する
2022/5/8
この記事は Google Cloud Platform(GCP) の BigQueryを対象にしています。
BigQuery: クラウド データ ウェアハウス | Google Cloud
- この記事の内容は Google.Cloud.BigQuery パッケージ バージョン 2.3.0 で確認しています。
指定した行を削除する
前提
- GCPのプロジェクトIDは myproject。
- BigQuery のデータセットは mydataset、テーブルは mytable。
- テーブル mytable には INTEGER型の id列 がある。
- BigQueryにアクセスできるロール(たとえばオーナー)をもったサービスアカウントがある。 → サービスアカウントの作成方法。
- サービスアカウントのキーファイルがC:\gcpfiles\myproject-3bb215c09061.jsonに存在する。→ キーの作成とダウンロード。
- NuGet で Google.Cloud.BigQuery.V2 パッケージをインストールしている。→ NuGetの使用方法
- Imports Google.Cloud.BigQuery.V2がソースコードの冒頭付近に記載されている。
Dim cred = Google.Apis.Auth.OAuth2.GoogleCredential.FromFile("C:\gcpfiles\myproject-3bb215c09061.json")
Using client = BigQueryClient.Create("myproject", cred)
'認証情報を環境変数 GOOGLE_APPLICATION_CREDENTIALS から読み取る場合は、次の1行だけでOK。
'参考 https://cloud.google.com/bigquery/docs/quickstarts/quickstart-client-libraries#before-you-begin
'Using client = BigQueryClient.Create("myproject")
Dim sql As String = "DELETE mydataset.mytable WHERE id = 123"
Dim result As BigQueryResults = client.ExecuteQuery(sql, Nothing)
Debug.WriteLine($"{result.NumDmlAffectedRows} row(s) are deleted.")
End Using
メモ:WHERE句は必須です。すべて削除したい場合は すべての行を削除する例 を参照してください。
メモ:ストリーミングバッファがある場合は削除できません。時間が経ってストリーミングがなくなれば削除できるようになります。「UPDATE or DELETE DML statements are not supported over table」というエラーが発生します。
すべての行を削除する
前提
- GCPのプロジェクトIDは myproject。
- BigQuery のデータセットは mydataset、テーブルは mytable。
- テーブル mytable には INTEGER型の id列 がある。
- BigQueryにアクセスできるロール(たとえばオーナー)をもったサービスアカウントがある。 → サービスアカウントの作成方法。
- サービスアカウントのキーファイルがC:\gcpfiles\myproject-3bb215c09061.jsonに存在する。→ キーの作成とダウンロード。
- NuGet で Google.Cloud.BigQuery.V2 パッケージをインストールしている。→ NuGetの使用方法
- Imports Google.Cloud.BigQuery.V2がソースコードの冒頭付近に記載されている。
Dim cred = Google.Apis.Auth.OAuth2.GoogleCredential.FromFile("C:\gcpfiles\myproject-3bb215c09061.json")
Using client = BigQueryClient.Create("myproject", cred)
'認証情報を環境変数 GOOGLE_APPLICATION_CREDENTIALS から読み取る場合は、次の1行だけでOK。
'参考 https://cloud.google.com/bigquery/docs/quickstarts/quickstart-client-libraries#before-you-begin
'Using client = BigQueryClient.Create("myproject")
Dim sql As String = "TRUNCATE TABLE mydataset.mytable"
Dim result As BigQueryResults = client.ExecuteQuery(sql, Nothing)
result.ThrowOnAnyError() 'BigQueryでエラーが発生した場合、VBでも例外を発生させます。
Debug.WriteLine("Truncate done.")
End Using
メモ:実行しても空のテーブルは残ります。テーブル自体は削除されません。
メモ:ストリーミングバッファがある場合は削除できません。時間が経ってストリーミングがなくなれば削除できるようになります。「UPDATE or DELETE DML statements are not supported over table」というエラーが発生します。
参考
BigQueryで使用できるSQLの構文
C#を使ってシンプルなBigQueryの検索を実行する手順。認証情報の設定などGCP側で必要なことも解説されています。
非推奨のやり方と、その代わりに採用すべきやり方。