Skip to main content

BigQuery

ShanoneのBigQuery連携では、Googleのデータウェアハウスに関する40個のツールをエージェントに提供します — クエリの実行、データセット/テーブル/モデルの管理、データのロード・エクスポート、IAMアクセス制御をカバーしています。

はじめに

1

サービスアカウントを作成する

Google Cloud Consoleで、Shanoneに持たせたいBigQuery権限(例:BigQuery Data Editor、BigQuery Job User)を付与したサービスアカウントを作成し、JSONキーを発行します。
2

Shanoneで接続する

エージェントにBigQueryへのクエリを依頼するか、ShanoneダッシュボードのインテグレーションにサービスアカウントキーのJSONを事前に貼り付けます。
3

リクエストを再試行する

キーが保存されると、bigquery_*ツールに対するshanone_execute_toolの呼び出しが成功するようになります。
BigQueryはOAuthや単純なAPIキーではなく、サービスアカウントキー(JSON)を使用します。Shanoneは内部でこのキーを短命なアクセストークンに交換します。

利用可能なツール

Shanoneは BigQuery向けに40個のツールを提供しており、以下のカテゴリに分類されています。
bigquery_query, bigquery_query_and_wait
bigquery_list_tables, bigquery_get_table, bigquery_list_partitions, bigquery_schema_to_json, bigquery_update_table, bigquery_create_table, bigquery_delete_table, bigquery_list_rows, bigquery_preview_table
bigquery_list_datasets, bigquery_get_dataset, bigquery_list_projects, bigquery_get_service_account_email, bigquery_update_dataset, bigquery_create_dataset, bigquery_delete_dataset
bigquery_list_jobs, bigquery_get_job, bigquery_cancel_job, bigquery_delete_job_metadata
bigquery_load_table_from_uri, bigquery_load_table_from_json, bigquery_copy_table, bigquery_extract_table, bigquery_insert_rows, bigquery_insert_rows_json
bigquery_list_models, bigquery_get_model, bigquery_update_model, bigquery_delete_model
bigquery_list_routines, bigquery_get_routine, bigquery_create_routine, bigquery_update_routine, bigquery_delete_routine
bigquery_get_iam_policy, bigquery_set_iam_policy, bigquery_test_iam_permissions

よくある使い方

アドホックなデータ分析

データセットに対してSQLクエリを実行し、結果を平易な言葉でまとめる

データパイプライン運用

GCSのURIからテーブルにデータをロードし、ロードジョブの完了まで監視する

スキーマ & アクセスの点検

新しいチームにデータセットへのアクセスを許可する前に、テーブルスキーマとIAMポリシーを確認する

MLモデルの管理

レポーティングパイプラインで使われているBigQuery MLモデルを一覧・確認する

トラブルシューティング

bigquery_test_iam_permissionsでサービスアカウントのIAMロールを確認してください — ほとんどの読み取り操作には、対象データセットへのbigquery.jobs.createとbigquery.tables.getDataが最低限必要です。
長時間実行されるクエリはブロッキングせず、ジョブ参照を返します。短いクエリでブロッキングが問題ない場合はbigquery_query_and_waitを使い、それ以外はstatus.stateがDONEになるまでbigquery_get_jobをポーリングしてください。
ロードジョブのerrorResultとerrorsフィールドをbigquery_get_jobで確認してください — スキーマの不一致やソースファイル内の不正な行が最も多い原因です。