工具:create_compilation_result
在给定的 Google Cloud 云项目和位置中创建新的 Dataform 编译结果。
此工具可将 .sqlx 文件编译为可执行的 SQL。代理需要知道,除非触发新的编译,否则后续的代码更改不会反映在此结果中。
parent 参数值必须采用 projects/{project_id}/locations/{location}/repositories/{repository} 格式。
代理可以通过检查 CompilationResultAction 资源来验证编译后的 SQL,还可以使用 BigQuery 工具进行试运行。
必须先获得有效的编译结果,然后才能使用 create_workflow_invocation 工具触发手动工作流调用。
前提条件:在调用 create_compilation_result 工具之前,使用 create_repository 工具创建代码库。
以下代码示例展示了如何使用 curl 调用 create_compilation_result MCP 工具。
| Curl 请求 |
|---|
curl --location 'https://dataform.googleapis.com/mcp' \ --header 'content-type: application/json' \ --header 'accept: application/json, text/event-stream' \ --data '{ "method": "tools/call", "params": { "name": "create_compilation_result", "arguments": { // Provide these details according to the MCP tool specification. } }, "jsonrpc": "2.0", "id": 1 }' |
输入架构
CreateCompilationResult 请求消息。
CreateCompilationResultRequest
| JSON 表示法 |
|---|
{
"parent": string,
"compilationResult": {
object ( |
| 字段 | |
|---|---|
parent |
必需。要在其中创建编译结果的代码库。必须采用 |
compilationResult |
必需。要创建的编译结果。 |
CompilationResult
| JSON 表示法 |
|---|
{ "name": string, "codeCompilationConfig": { object ( |
| 字段 | |
|---|---|
name |
仅限输出。编译结果的名称。 |
codeCompilationConfig |
不可变。如果设置了 |
resolvedGitCommitSha |
仅限输出。已编译代码的完全解析的 Git 提交 SHA。未针对来源为工作区的编译结果进行设置。 |
dataformCoreVersion |
仅限输出。用于编译的 |
compilationErrors[] |
仅限输出。项目编译期间遇到的错误。 |
dataEncryptionState |
仅限输出。仅当代码库具有 KMS 密钥时才设置。 |
createTime |
仅限输出。编译结果的创建时间戳。 采用 RFC 3339 标准,生成的输出将始终进行 Z 规范化(即转换为 UTC 零时区格式并在末尾附加 Z),并使用 0、3、6 或 9 个小数位。不带“Z”的偏差时间也是可以接受的。示例: |
privateResourceMetadata |
仅限输出。表示相应资源是否为用户级范围的元数据。 |
gcsRepositorySnapshotMetadata |
仅限输出。有关由已安排的笔记本使用的代码库快照的元数据。 |
联合字段 source。编译结果的来源。source 只能是下列其中一项: |
|
gitCommitish |
不可变。应编译代码库的 Git 提交/标记/分支名称。必须存在于远程代码库中。示例:- 提交 SHA: |
workspace |
不可变。要编译的工作区的名称。必须采用 |
releaseConfig |
不可变。要编译的发布配置的名称。必须采用 |
联合字段
|
|
internalMetadata |
仅限输出。用于在内部提供资源的所有元数据信息。例如:时间戳、标志、状态字段等。此字段的格式为 JSON 字符串。 |
CodeCompilationConfig
| JSON 表示法 |
|---|
{ "defaultDatabase": string, "defaultSchema": string, "defaultLocation": string, "assertionSchema": string, "vars": { string: string, ... }, "databaseSuffix": string, "schemaSuffix": string, "tablePrefix": string, "builtinAssertionNamePrefix": string, "defaultNotebookRuntimeOptions": { object ( |
| 字段 | |
|---|---|
defaultDatabase |
可选。默认数据库(Google Cloud 项目 ID)。 |
defaultSchema |
可选。默认架构(BigQuery 数据集 ID)。 |
defaultLocation |
可选。要使用的默认 BigQuery 位置。默认值为“US”。如需查看位置的完整列表,请参阅 BigQuery 文档:https://cloud.google.com/bigquery/docs/locations。 |
assertionSchema |
可选。断言的默认架构(BigQuery 数据集 ID)。 |
vars |
可选。在编译期间可供项目代码使用的用户定义变量。 包含一系列 |
databaseSuffix |
可选。应附加到所有数据库(Google Cloud 项目 ID)名称的后缀。 |
schemaSuffix |
可选。应附加到所有架构(BigQuery 数据集 ID)名称的后缀。 |
tablePrefix |
可选。应附加到所有表名称的前缀。 |
builtinAssertionNamePrefix |
可选。要附加到内置断言名称的前缀。 |
defaultNotebookRuntimeOptions |
可选。默认笔记本运行时选项。 |
pipelineConfig |
可选。用于定义流水线类型和 Git 代码库中路径的流水线选项。 |
VarsEntry
| JSON 表示法 |
|---|
{ "key": string, "value": string } |
| 字段 | |
|---|---|
key |
|
value |
|
NotebookRuntimeOptions
| JSON 表示法 |
|---|
{ "aiPlatformNotebookRuntimeTemplate": string, // Union field |
| 字段 | |
|---|---|
aiPlatformNotebookRuntimeTemplate |
可选。Colab 运行时模板的资源名称,运行时是从该模板创建的,用于执行笔记本。如果未指定,系统会使用 Colab 的默认规范创建运行时。 |
联合字段 execution_sink。用于存储笔记本执行结果的位置。execution_sink 只能是下列其中一项: |
|
gcsOutputBucket |
可选。用于上传结果的 Google Cloud Storage 位置。格式: |
联合字段 repository_snapshot_storage。代码库文件快照的目标位置(可在笔记本运行时 repository_snapshot_storage 内以只读方式访问)只能是下列其中一项: |
|
gcsRepositorySnapshotDestination |
可选。要将快照上传到的 Google Cloud Storage 目标位置。对于空 URI,它会默认使用提供的 gcs_output_bucket。格式: |
GcsRepositorySnapshotDestination
| JSON 表示法 |
|---|
{ "repositorySnapshotUri": string } |
| 字段 | |
|---|---|
repositorySnapshotUri |
可选。用于上传代码库快照的 Google Cloud Storage 目标位置。格式: |
PipelineConfig
| JSON 表示法 |
|---|
{
"pipelineType": enum ( |
| 字段 | |
|---|---|
pipelineType |
必需。流水线的类型。 |
path |
必需。Git 代码库中定义流水线的相对路径。例如,对于 Dataform 流水线,它是 |
CompilationError
| JSON 表示法 |
|---|
{
"message": string,
"stack": string,
"path": string,
"actionTarget": {
object ( |
| 字段 | |
|---|---|
message |
仅限输出。错误的顶级消息。 |
stack |
仅限输出。错误的完整堆栈轨迹。 |
path |
仅限输出。发生此错误的文件(如果有)的路径(相对于项目根目录)。 |
actionTarget |
仅限输出。发生相应错误的 action 的标识符(如果有)。 |
目标
| JSON 表示法 |
|---|
{ "database": string, "schema": string, "name": string } |
| 字段 | |
|---|---|
database |
可选。操作的数据库(Google Cloud 项目 ID)。 |
schema |
可选。 |
name |
可选。操作的名称,位于 |
DataEncryptionState
| JSON 表示法 |
|---|
{ "kmsKeyVersionName": string } |
| 字段 | |
|---|---|
kmsKeyVersionName |
必需。用于加密资源数据的 KMS 密钥版本名称。 |
时间戳
| JSON 表示法 |
|---|
{ "seconds": string, "nanos": integer } |
| 字段 | |
|---|---|
seconds |
表示世界协调时间 (UTC) 的秒数(从 Unix 纪元 1970-01-01T00:00:00Z 开始算起)。必须介于 -62135596800 到 253402300799 之间(含边界值),对应于 0001-01-01T00:00:00Z 到 9999-12-31T23:59:59Z。 |
nanos |
秒数的非负小数部分(以纳秒为单位)。此字段是时长的纳秒部分,而不是秒的替代项。对于含小数部分的负秒数,仍必须包含按时间递升的非负纳秒值。必须在 0 到 999,999,999 之间(含边界值)。 |
PrivateResourceMetadata
| JSON 表示法 |
|---|
{ "userScoped": boolean } |
| 字段 | |
|---|---|
userScoped |
仅限输出。如果为 true,则表示相应资源是用户级范围的,即属于工作区或源自工作区。 |
GcsRepositorySnapshotMetadata
| JSON 表示法 |
|---|
{ "repositorySnapshotUri": string, "crc32cChecksum": string, "generation": string } |
| 字段 | |
|---|---|
repositorySnapshotUri |
仅限输出。代码库快照的 Google Cloud Storage URI。 |
crc32cChecksum |
仅限输出。代码库快照的 crc32c 校验和,以大端序 base64 编码。 |
generation |
仅限输出。Cloud Storage 对象的世代编号。请参阅 https://cloud.google.com/storage/docs/metadata#generation-number。 |
PipelineType
流水线的类型。未来可能会延长。如果为 UNSPECIFIED,则会抛出错误。
| 枚举 | |
|---|---|
PIPELINE_TYPE_UNSPECIFIED |
默认值。此值未使用。 |
DATAFORM |
常规 Dataform 流水线。 |
SQL |
SQL 单个文件资产。 |
NOTEBOOK |
笔记本单一文件资产。 |
输出架构
表示编译 Dataform 项目的结果。
CompilationResult
| JSON 表示法 |
|---|
{ "name": string, "codeCompilationConfig": { object ( |
| 字段 | |
|---|---|
name |
仅限输出。编译结果的名称。 |
codeCompilationConfig |
不可变。如果设置了 |
resolvedGitCommitSha |
仅限输出。已编译代码的完全解析的 Git 提交 SHA。未针对来源为工作区的编译结果进行设置。 |
dataformCoreVersion |
仅限输出。用于编译的 |
compilationErrors[] |
仅限输出。项目编译期间遇到的错误。 |
dataEncryptionState |
仅限输出。仅当代码库具有 KMS 密钥时才设置。 |
createTime |
仅限输出。编译结果的创建时间戳。 采用 RFC 3339 标准,生成的输出将始终进行 Z 规范化(即转换为 UTC 零时区格式并在末尾附加 Z),并使用 0、3、6 或 9 个小数位。不带“Z”的偏差时间也是可以接受的。示例: |
privateResourceMetadata |
仅限输出。表示相应资源是否为用户级范围的元数据。 |
gcsRepositorySnapshotMetadata |
仅限输出。有关由已安排的笔记本使用的代码库快照的元数据。 |
联合字段 source。编译结果的来源。source 只能是下列其中一项: |
|
gitCommitish |
不可变。应编译代码库的 Git 提交/标记/分支名称。必须存在于远程代码库中。示例:- 提交 SHA: |
workspace |
不可变。要编译的工作区的名称。必须采用 |
releaseConfig |
不可变。要编译的发布配置的名称。必须采用 |
联合字段
|
|
internalMetadata |
仅限输出。用于在内部提供资源的所有元数据信息。例如:时间戳、标志、状态字段等。此字段的格式为 JSON 字符串。 |
CodeCompilationConfig
| JSON 表示法 |
|---|
{ "defaultDatabase": string, "defaultSchema": string, "defaultLocation": string, "assertionSchema": string, "vars": { string: string, ... }, "databaseSuffix": string, "schemaSuffix": string, "tablePrefix": string, "builtinAssertionNamePrefix": string, "defaultNotebookRuntimeOptions": { object ( |
| 字段 | |
|---|---|
defaultDatabase |
可选。默认数据库(Google Cloud 项目 ID)。 |
defaultSchema |
可选。默认架构(BigQuery 数据集 ID)。 |
defaultLocation |
可选。要使用的默认 BigQuery 位置。默认值为“US”。如需查看位置的完整列表,请参阅 BigQuery 文档:https://cloud.google.com/bigquery/docs/locations。 |
assertionSchema |
可选。断言的默认架构(BigQuery 数据集 ID)。 |
vars |
可选。在编译期间可供项目代码使用的用户定义变量。 包含一系列 |
databaseSuffix |
可选。应附加到所有数据库(Google Cloud 项目 ID)名称的后缀。 |
schemaSuffix |
可选。应附加到所有架构(BigQuery 数据集 ID)名称的后缀。 |
tablePrefix |
可选。应附加到所有表名称的前缀。 |
builtinAssertionNamePrefix |
可选。要附加到内置断言名称的前缀。 |
defaultNotebookRuntimeOptions |
可选。默认笔记本运行时选项。 |
pipelineConfig |
可选。用于定义流水线类型和 Git 代码库中路径的流水线选项。 |
VarsEntry
| JSON 表示法 |
|---|
{ "key": string, "value": string } |
| 字段 | |
|---|---|
key |
|
value |
|
NotebookRuntimeOptions
| JSON 表示法 |
|---|
{ "aiPlatformNotebookRuntimeTemplate": string, // Union field |
| 字段 | |
|---|---|
aiPlatformNotebookRuntimeTemplate |
可选。Colab 运行时模板的资源名称,运行时是从该模板创建的,用于执行笔记本。如果未指定,系统会使用 Colab 的默认规范创建运行时。 |
联合字段 execution_sink。用于存储笔记本执行结果的位置。execution_sink 只能是下列其中一项: |
|
gcsOutputBucket |
可选。用于上传结果的 Google Cloud Storage 位置。格式: |
联合字段 repository_snapshot_storage。代码库文件快照的目标位置(可在笔记本运行时 repository_snapshot_storage 内以只读方式访问)只能是下列其中一项: |
|
gcsRepositorySnapshotDestination |
可选。要将快照上传到的 Google Cloud Storage 目标位置。对于空 URI,它会默认使用提供的 gcs_output_bucket。格式: |
GcsRepositorySnapshotDestination
| JSON 表示法 |
|---|
{ "repositorySnapshotUri": string } |
| 字段 | |
|---|---|
repositorySnapshotUri |
可选。用于上传代码库快照的 Google Cloud Storage 目标位置。格式: |
PipelineConfig
| JSON 表示法 |
|---|
{
"pipelineType": enum ( |
| 字段 | |
|---|---|
pipelineType |
必需。流水线的类型。 |
path |
必需。Git 代码库中定义流水线的相对路径。例如,对于 Dataform 流水线,它是 |
CompilationError
| JSON 表示法 |
|---|
{
"message": string,
"stack": string,
"path": string,
"actionTarget": {
object ( |
| 字段 | |
|---|---|
message |
仅限输出。错误的顶级消息。 |
stack |
仅限输出。错误的完整堆栈轨迹。 |
path |
仅限输出。发生此错误的文件(如果有)的路径(相对于项目根目录)。 |
actionTarget |
仅限输出。发生相应错误的 action 的标识符(如果有)。 |
目标
| JSON 表示法 |
|---|
{ "database": string, "schema": string, "name": string } |
| 字段 | |
|---|---|
database |
可选。操作的数据库(Google Cloud 项目 ID)。 |
schema |
可选。 |
name |
可选。操作的名称,位于 |
DataEncryptionState
| JSON 表示法 |
|---|
{ "kmsKeyVersionName": string } |
| 字段 | |
|---|---|
kmsKeyVersionName |
必需。用于加密资源数据的 KMS 密钥版本名称。 |
时间戳
| JSON 表示法 |
|---|
{ "seconds": string, "nanos": integer } |
| 字段 | |
|---|---|
seconds |
表示世界协调时间 (UTC) 的秒数(从 Unix 纪元 1970-01-01T00:00:00Z 开始算起)。必须介于 -62135596800 到 253402300799 之间(含边界值),对应于 0001-01-01T00:00:00Z 到 9999-12-31T23:59:59Z。 |
nanos |
秒数的非负小数部分(以纳秒为单位)。此字段是时长的纳秒部分,而不是秒的替代项。对于含小数部分的负秒数,仍必须包含按时间递升的非负纳秒值。必须在 0 到 999,999,999 之间(含边界值)。 |
PrivateResourceMetadata
| JSON 表示法 |
|---|
{ "userScoped": boolean } |
| 字段 | |
|---|---|
userScoped |
仅限输出。如果为 true,则表示相应资源是用户级范围的,即属于工作区或源自工作区。 |
GcsRepositorySnapshotMetadata
| JSON 表示法 |
|---|
{ "repositorySnapshotUri": string, "crc32cChecksum": string, "generation": string } |
| 字段 | |
|---|---|
repositorySnapshotUri |
仅限输出。代码库快照的 Google Cloud Storage URI。 |
crc32cChecksum |
仅限输出。代码库快照的 crc32c 校验和,以大端序 base64 编码。 |
generation |
仅限输出。Cloud Storage 对象的世代编号。请参阅 https://cloud.google.com/storage/docs/metadata#generation-number。 |
PipelineType
流水线的类型。未来可能会延长。如果为 UNSPECIFIED,则会抛出错误。
| 枚举 | |
|---|---|
PIPELINE_TYPE_UNSPECIFIED |
默认值。此值未使用。 |
DATAFORM |
常规 Dataform 流水线。 |
SQL |
SQL 单个文件资产。 |
NOTEBOOK |
笔记本单一文件资产。 |
工具注释
工具注释会发送给 MCP 客户端,用于描述指定工具的基本风险。大多数客户端会将这些提示视为不受信任的,但它们可用于确定何时向用户发送确认提示。
除了标题字符串之外,还定义了以下布尔值提示:
readOnlyHint:如果为 true,则工具不会修改其环境。默认值:false。destructiveHint:如果为 true,则工具可以执行破坏性操作。如果为 false,则该工具只能执行添加操作。默认值:true。idempotentHint:如果为 true,则使用相同实参重复调用该工具不会对其环境产生任何额外影响。默认值:false。openWorldHint:如果为 true,则工具可以与外部实体的“开放世界”进行交互。如果为 false,则该工具只能与内部实体互动。例如,网络搜索工具是开放世界工具,而内存工具不是开放世界工具。
破坏性提示:❌ | 等幂性提示:❌ | 只读提示:❌ | 开放世界提示:❌