我正在尝试在GoogleBigQuery
中创建一个作业,在JobId
继续运行时立即返回Job
,而不会让用户等待。
通过阅读文档runQuery
表明这应该是可行的。 maxRetries
已被设置为timeoutMs
。
我们的想法是,用户将收到JobId
并发出警告,通知他们Job
正在处理中,并且在完成后会收到进一步的通知。
通过Composer版本安装:google/cloud: ^0.53.0
下面包含示例代码。
runQuery
以同步方式运行BigQuery SQL查询。
除非指定了$ options.maxRetries,否则此方法将阻塞,直到查询完成,此时将返回结果集。
$client = new BigQueryClient([
'projectId' => 'XXXX',
]);
$client->dataset('XXXX');
if (!$dataset->exists()) {
throw new \Exception(sprintf('Dataset does not exist'));
}
$options = [
'timeoutMs' => 1000,
'maxRetries' => 2,
];
$queryJob = $client->queryConfig($sql, $options); //tried options here
$queryResult = $client->runQuery($queryJob,$options); //and tried options here together and individually
echo $queryResult->job()->id();