在我的PHP代码中验证并使用Google的BigQuery

时间:2019-05-02 10:22:31

标签: php google-cloud-platform google-bigquery google-authentication

我正在使用BigQuery数据设置客户端应用程序,我需要使用php来构建它(我不是专家)。

我想进行身份验证并能够在服务器中使用php建立查询。

我在进行身份验证时遇到了麻烦,因为我看到了不同的解决方案,这些解决方案似乎过时或不完整。

我已经有了JSON密钥和我想要的项目,但不知道向BigQuery进行身份验证的适当等待时间。

有人可以告诉我如何正确执行此操作吗?如果我需要其他图书馆(例如Google Cloud Auth?)

1 个答案:

答案 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"
    }
}