用PHP从Bigquery获取数据

用PHP从Bigquery获取数据,php,google-cloud-platform,google-bigquery,Php,Google Cloud Platform,Google Bigquery,我是GCP的新手。我创建了一个Bigquery数据集,如下所示 现在,我正试图用PHP获取这些数据。为此我一直在跟踪 这是我的密码: <?php require_once __DIR__ . '/vendor/autoload.php'; use Google\Cloud\BigQuery\BigQueryClient; use venor\google\cloud\Core\src\ExponentialBackoff; $projectId = 'abcd'; $query =

我是GCP的新手。我创建了一个Bigquery数据集,如下所示

现在,我正试图用PHP获取这些数据。为此我一直在跟踪

这是我的密码:

<?php

require_once __DIR__ . '/vendor/autoload.php';
use Google\Cloud\BigQuery\BigQueryClient;
use venor\google\cloud\Core\src\ExponentialBackoff;

 $projectId = 'abcd';
 $query = 'SELECT * FROM `abcd.TestData.BigD2019` LIMIT 1000';

$bigQuery = new BigQueryClient([
    'projectId' => $projectId,
]);
$jobConfig = $bigQuery->query($query);
$job = $bigQuery->startQuery($jobConfig);

$backoff = new ExponentialBackoff(10);
$backoff->execute(function () use ($job) {
    print('Waiting for job to complete' . PHP_EOL);
    $job->reload();
    if (!$job->isComplete()) {
        throw new Exception('Job has not yet completed', 500);
    }
});
$queryResults = $job->queryResults();

$i = 0;
foreach ($queryResults as $row) {
    printf('--- Row %s ---' . PHP_EOL, ++$i);
    foreach ($row as $column => $value) {
        printf('%s: %s' . PHP_EOL, $column, json_encode($value));
    }
}
printf('Found %s row(s)' . PHP_EOL, $i);

?>
在尝试运行此程序时,我发现以下错误-

致命错误:未捕获异常“Google\Cloud\Core\exception\ServiceException”,消息“{错误:{错误:[{域:全局,原因:authError,消息:无效凭据,位置类型:标头,位置:授权}],代码:401,消息:无效凭据}”'在C:\xampp\htdocs\vendor\google\cloud\Core\src\RequestWrapper.php:336堆栈跟踪:0 C:\xampp\htdocs\vendor\google\cloud\Core\src\RequestWrapper.php189:google\cloud\Core\RequestWrapper->converttoogleeExceptionObjectGuzzleHTTP\Exception\ClientException 1 C:\xampp\htdocs\vendor\google\cloud\Core\Core\src\restrait.php96:Google\Cloud\Core\RequestWrapper->sendObjectGuzzleHttp\Psr7\Request,数组2 C:\xampp\htdocs\vendor\Google\Cloud\BigQuery\src\Connection\Rest.php218:Google\Cloud\BigQuery\Connection\Rest->发送“作业”,“插入”,数组3 C:\xampp\htdocs\vendor\google\cloud\BigQuery\src\BigQueryClient.php370:google\cloud\BigQuery\Connection\Rest->insertJobArray 4 C:在第336行的C:\xampp\htdocs\vendor\google\cloud\Core\src\RequestWrapper.php中

我想不出确切的问题。我猜这可能是由于身份验证

use venor\google\cloud\Core\src\ExponentialBackoff;

我注意到一件事是供应商写的不正确。

您在哪里运行此代码?我看不到您在创建客户端时指定凭据,因此这意味着应用程序默认凭据。将这些细节添加到您的问题中。如果您在计算引擎上运行,则需要在VM的访问范围中启用BigQuery API。关闭实例,然后编辑VM。查找分区标识和API访问。我是在本地主机上尝试的。下载了身份验证JSON文件。也作为环境变量添加,但不起作用。但是,我通过在PHP中添加一行代码修复了这个问题——putenv'GOOGLE_APPLICATION_CREDENTIALS=C:\xampp\htdocs\GOOGLE\DeployNETAppl-94021a420711.json';