我使用谷歌云工作流,使用的是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
-
googleapis.bigquery.v2.jobs.query
端点不提供通过API/YAML语法创建目标表,但您可以编写查询来创建表create table mytable as (select ........)
-
要使用
destinationTable
API设置,您需要使用一个不同的端点: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