Аутентифицируйте и используйте Google BigQuery в моем php-коде - PullRequest
0 голосов
/ 02 мая 2019

Я настраиваю свое клиентское приложение, используя мои BigQuery Data, мне нужно собрать его с помощью php (что я не эксперт).

Я хочу аутентифицироваться и иметь возможность создавать запросы с использованием phpна моем сервере.

У меня проблемы с аутентификацией, так как я вижу разные решения, которые кажутся устаревшими или неполными.

У меня есть ключ JSON и проект, который я не хочу 'Не знаю, как правильно ждать аутентификации в BigQuery.

Может кто-нибудь сказать мне, как правильно это сделать?Если мне нужна другая библиотека (например, аутентификация Google Cloud?)

1 Ответ

2 голосов
/ 02 мая 2019

Вот фрагмент кода:

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"
    }
}
...