GCP工作流-是否设置目标表



我使用谷歌云工作流,使用的是googleapis.bigquery.v2。jobs.query在BigQuery上转换数据。我能够正确运行我的工作流并对给定的表执行查询,但我现在要做的是将查询的结果存储在不同的数据集和表上。googleapis.bigquery.v2.jobs.query文档中没有任何关于目标表的内容。基于这个SO问题,我发现可以设置目标数据集和表,但如果我能在.yaml上做类似的事情,我会感到困惑

我在SO上找到的示例

"configuration": {
"query": {
"query": "select count(*) from foo.bar",
"destinationTable": {
"projectId": "my_project",
"datasetId": "my_dataset",
"tableId": "my_table"
},
"createDisposition": "CREATE_IF_NEEDED",
"writeDisposition": "WRITE_APPEND",
}
}

我的工作流:Workflows-1.yaml

- getCurrentTime:
call: googleapis.bigquery.v2.jobs.query
args:
projectId: survivor-316012
body:
connectionProperties: 
createSession: false
defaultDataset:
datasetId: europe
projectId: survivor-316012
dryRun: false
kind: ...
location: ...
maxResults: 32
preserveNulls: false
query: "SELECT * FROM `survivor-316012.europe.france`"
queryParameters: []
timeoutMs: 10000
useLegacySql: false
useQueryCache: false
result: currentDateTime
  1. googleapis.bigquery.v2.jobs.query端点不提供通过API/YAML语法创建目标表,但您可以编写查询来创建表

    create table mytable as (select ........)

  2. 要使用destinationTableAPI设置,您需要使用一个不同的端点:googleapis.bigquery.v2.jobs.insert,它需要配置更多内容,这篇链接文章中有一个完整的示例。

重要的是,您需要它的query部分。

- insert:
call: googleapis.bigquery.v2.jobs.insert
args:
projectId: ...
body:
configuration:
query:
allowLargeResults: ...
clustering:
connectionProperties: ...
createDisposition: ...
createSession: ...
defaultDataset:
datasetId: ...
projectId: ...
destinationEncryptionConfiguration:
destinationTable: <YOUR SECTION> 
flattenResults: ...
maximumBillingTier: ...
maximumBytesBilled: ...
parameterMode: ...
preserveNulls: ...
priority: ...
query: ...
queryParameters: ...
rangePartitioning:
schemaUpdateOptions: ...
tableDefinitions: ...
timePartitioning:
useLegacySql: ...
useQueryCache: ...
userDefinedFunctionResources: ...
writeDisposition: ...
result: insertResult

最新更新