Appearance
保存済クエリ
保存済クエリ(公開ドキュメントの表記は クエリ)は、コネクション単位で再利用する SQL を保存する機能です。複数のノートブックから参照したり、クエリ画面で直接実行したりできます。
専用のリソースロールはなく、操作可否は紐づくコネクションの権限に準じます。 そのため権限付与のイベントはありません。
AIエージェントや MCPクライアントからも作成・更新できます。 MCPクライアントの場合は saved-query:write スコープが必要です。 どの経路からの操作かは context に入ります。
保存済クエリを実行した記録は query_job.create に入ります。
イベント一覧
| イベント | リソース | 説明 |
|---|---|---|
saved_query.create | saved_query | 保存済クエリが作成された |
saved_query.rename | saved_query | 保存済クエリ名が変更された |
saved_query.update | saved_query | 保存済クエリが更新された |
saved_query.move | saved_query | 保存済クエリが移動された |
saved_query.delete | saved_query | 保存済クエリが削除された |
イベント詳細
saved_query.create 準備中
保存済クエリの作成を記録します。
| フィールド | 値 |
|---|---|
event.code | saved_query.create |
scope.type | workspace |
resource.type | saved_query |
references | (なし) |
query | (なし) |
outbound | (なし) |
change | 作成時の配置先 |
grant | (なし) |
extra | (なし) |
change
作成時の配置先フォルダパスが入ります。ルートに作成した場合は null です。
| 名前 | モード | 型 | 必須 | 説明 |
|---|---|---|---|---|
folder_path | 値 | string | 必須 | 作成時の配置先フォルダパス sensitivity: pii |
サンプル
ルートへの作成
json
{
"event": {
"code": "saved_query.create",
...
},
"scope": {
"type": "workspace",
...
},
"resource": {
"type": "saved_query",
"uid": "63e1be654aa70ad689601c50",
"name": "Monthly Active Users",
"path": "connection/63e1be654aa70ad689601bef/saved_query/63e1be654aa70ad689601c50",
"parts": [
{
"type": "connection",
"uid": "63e1be654aa70ad689601bef",
"name": "BigQuery Prod"
},
{
"type": "saved_query",
"uid": "63e1be654aa70ad689601c50",
"name": "Monthly Active Users"
}
],
...
},
"change": {
"fields": [
{
"name": "folder_path",
"new": null
}
]
},
...
}フォルダへの作成
json
{
"event": {
"code": "saved_query.create",
...
},
"scope": {
"type": "workspace",
...
},
"resource": {
"type": "saved_query",
"uid": "63e1be654aa70ad689601c50",
"name": "Monthly Active Users",
"path": "connection/63e1be654aa70ad689601bef/saved_query/63e1be654aa70ad689601c50",
"parts": [
{
"type": "connection",
"uid": "63e1be654aa70ad689601bef",
"name": "BigQuery Prod"
},
{
"type": "saved_query",
"uid": "63e1be654aa70ad689601c50",
"name": "Monthly Active Users"
}
],
...
},
"change": {
"fields": [
{
"name": "folder_path",
"new": "/kpi"
}
]
},
...
}MCPクライアントからの作成
どのMCPクライアントのどの接続からの作成かは context.mcp から辿れます。
json
{
"event": {
"code": "saved_query.create",
...
},
"scope": {
"type": "workspace",
...
},
"resource": {
"type": "saved_query",
"uid": "63e1be654aa70ad689601c50",
"name": "Monthly Active Users",
"path": "connection/63e1be654aa70ad689601bef/saved_query/63e1be654aa70ad689601c50",
"parts": [
{
"type": "connection",
"uid": "63e1be654aa70ad689601bef",
"name": "BigQuery Prod"
},
{
"type": "saved_query",
"uid": "63e1be654aa70ad689601c50",
"name": "Monthly Active Users"
}
],
...
},
"context": {
"mcp": {
"client": {
"type": "mcp_client",
"uid": "cursor-dcr-01",
"name": "Cursor"
},
"oauth_session": {
"type": "mcp_oauth_session",
"uid": "oauth_sess_01"
},
"scopes": [
"saved-query:write"
]
}
},
"change": {
"fields": [
{
"name": "folder_path",
"new": null
}
]
},
...
}saved_query.rename 準備中
保存済クエリの表示名の変更を記録します。
| フィールド | 値 |
|---|---|
event.code | saved_query.rename |
scope.type | workspace |
resource.type | saved_query |
references | (なし) |
query | (なし) |
outbound | (なし) |
change | name |
grant | (なし) |
extra | (なし) |
change
| 名前 | モード | 型 | 必須 | 説明 |
|---|---|---|---|---|
name | 値 | string | 必須 | 変更前後の表示名 sensitivity: pii |
サンプル
json
{
"event": {
"code": "saved_query.rename",
...
},
"scope": {
"type": "workspace",
...
},
"resource": {
"type": "saved_query",
"uid": "63e1be654aa70ad689601c50",
"name": "Monthly Active Users",
"path": "connection/63e1be654aa70ad689601bef/saved_query/63e1be654aa70ad689601c50",
"parts": [
{
"type": "connection",
"uid": "63e1be654aa70ad689601bef",
"name": "BigQuery Prod"
},
{
"type": "saved_query",
"uid": "63e1be654aa70ad689601c50",
"name": "Monthly Active Users"
}
],
...
},
"change": {
"fields": [
{
"name": "name",
"old": "MAU",
"new": "Monthly Active Users"
}
]
},
...
}saved_query.update 準備中
保存済クエリの SQL・説明・カラムスキーマの変更を記録します。個別の変更内容は記録しません。
| フィールド | 値 |
|---|---|
event.code | saved_query.update |
scope.type | workspace |
resource.type | saved_query |
references | (なし) |
query | (なし) |
outbound | (なし) |
change | 変更された項目 |
grant | (なし) |
extra | (なし) |
change
どの項目に変更があったかが入ります。SQL 本文などの値は記録しません。 表示名の変更は saved_query.rename、 配置先の変更は saved_query.move に記録されます。
| 名前 | モード | 型 | 必須 | 説明 |
|---|---|---|---|---|
sql | フラグ | — | 任意 | SQL に変更があったことを示す true |
description | フラグ | — | 任意 | 説明に変更があったことを示す true |
columns | フラグ | — | 任意 | カラムスキーマに変更があったことを示す true |
サンプル
SQL の変更
json
{
"event": {
"code": "saved_query.update",
...
},
"scope": {
"type": "workspace",
...
},
"resource": {
"type": "saved_query",
"uid": "63e1be654aa70ad689601c50",
"name": "Monthly Active Users",
"path": "connection/63e1be654aa70ad689601bef/saved_query/63e1be654aa70ad689601c50",
"parts": [
{
"type": "connection",
"uid": "63e1be654aa70ad689601bef",
"name": "BigQuery Prod"
},
{
"type": "saved_query",
"uid": "63e1be654aa70ad689601c50",
"name": "Monthly Active Users"
}
],
...
},
"change": {
"fields": [
{
"name": "sql",
"changed": true
},
{
"name": "columns",
"changed": true
}
]
},
...
}説明の変更
json
{
"event": {
"code": "saved_query.update",
...
},
"scope": {
"type": "workspace",
...
},
"resource": {
"type": "saved_query",
"uid": "63e1be654aa70ad689601c50",
"name": "Monthly Active Users",
"path": "connection/63e1be654aa70ad689601bef/saved_query/63e1be654aa70ad689601c50",
"parts": [
{
"type": "connection",
"uid": "63e1be654aa70ad689601bef",
"name": "BigQuery Prod"
},
{
"type": "saved_query",
"uid": "63e1be654aa70ad689601c50",
"name": "Monthly Active Users"
}
],
...
},
"change": {
"fields": [
{
"name": "description",
"changed": true
}
]
},
...
}saved_query.move 準備中
保存済クエリの配置先フォルダの変更を記録します。
| フィールド | 値 |
|---|---|
event.code | saved_query.move |
scope.type | workspace |
resource.type | saved_query |
references | (なし) |
query | (なし) |
outbound | (なし) |
change | folder_path |
grant | (なし) |
extra | (なし) |
change
| 名前 | モード | 型 | 必須 | 説明 |
|---|---|---|---|---|
folder_path | 値 | string | 必須 | 変更前後の配置先フォルダパス。ルートのときは null ですsensitivity: pii |
サンプル
json
{
"event": {
"code": "saved_query.move",
...
},
"scope": {
"type": "workspace",
...
},
"resource": {
"type": "saved_query",
"uid": "63e1be654aa70ad689601c50",
"name": "Monthly Active Users",
"path": "connection/63e1be654aa70ad689601bef/saved_query/63e1be654aa70ad689601c50",
"parts": [
{
"type": "connection",
"uid": "63e1be654aa70ad689601bef",
"name": "BigQuery Prod"
},
{
"type": "saved_query",
"uid": "63e1be654aa70ad689601c50",
"name": "Monthly Active Users"
}
],
...
},
"change": {
"fields": [
{
"name": "folder_path",
"old": null,
"new": "/kpi"
}
]
},
...
}saved_query.delete 準備中
保存済クエリの削除を記録します。
| フィールド | 値 |
|---|---|
event.code | saved_query.delete |
scope.type | workspace |
resource.type | saved_query |
references | (なし) |
query | (なし) |
outbound | (なし) |
change | (なし) |
grant | (なし) |
extra | (なし) |
サンプル
json
{
"event": {
"code": "saved_query.delete",
...
},
"scope": {
"type": "workspace",
...
},
"resource": {
"type": "saved_query",
"uid": "63e1be654aa70ad689601c50",
"name": "Monthly Active Users",
"path": "connection/63e1be654aa70ad689601bef/saved_query/63e1be654aa70ad689601c50",
"parts": [
{
"type": "connection",
"uid": "63e1be654aa70ad689601bef",
"name": "BigQuery Prod"
},
{
"type": "saved_query",
"uid": "63e1be654aa70ad689601c50",
"name": "Monthly Active Users"
}
],
...
},
...
}