我正在使用BigQuery数据设置客户端应用程序,我需要使用php来构建它(我不是专家)。
我想进行身份验证并能够在服务器中使用php建立查询。
我在进行身份验证时遇到了麻烦,因为我看到了不同的解决方案,这些解决方案似乎过时或不完整。
我已经有了JSON密钥和我想要的项目,但不知道向BigQuery进行身份验证的适当等待时间。
有人可以告诉我如何正确执行此操作吗?如果我需要其他图书馆(例如Google Cloud Auth?)
答案 0 :(得分:2)
这是代码段:
public function getServiceBuilder() {
putenv('GOOGLE_APPLICATION_CREDENTIALS=path_to_service_account.json');
$builder = new ServiceBuilder(array(
'projectId' => PROJECT_ID
));
return $builder;
}
那么您可以像这样使用
$builder = $this->getServiceBuilder();
$bigQuery = $builder->bigQuery();
$job = $bigQuery->runQueryAsJob('SELECT .......');
$backoff = new ExponentialBackoff(8);
$backoff->execute(function () use ($job) {
$job->reload();
$this->e('reloading job');
if (!$job->isComplete()) {
throw new \Exception();
}
});
if (!$job->isComplete()) {
$this->e('Job failed to complete within the allotted time.');
return false;
}
$queryResults = $job->queryResults();
if ($queryResults->isComplete()) {
$i = 0;
$rows = $queryResults->rows();
foreach ($rows as $row) {
(已编辑)
您可能需要添加:
use Google\Cloud\BigQuery\BigQueryClient;
use Google\Cloud\ServiceBuilder;
use Google\Cloud\ExponentialBackoff;
和composer.json(这只是一个示例,可能与实际版本有所不同)
{
"require": {
"google/cloud": "^0.99.0"
}
}