谷歌云bigquery php客户端库返回错误?

时间:2018-04-11 07:19:40

标签: php laravel-5.2 google-bigquery

  

RequestWrapper.php第257行中的ServiceException:   count():参数必须是数组或实现Countable

的对象

以下是我在laravel 5中编写的代码。

use Google\Cloud\BigQuery\BigQueryClient;
use Google\Cloud\Core\ServiceBuilder;

public function __construct()
{
    $this->getservicekey = env('GOOGLE_APPLICATION_CREDENTIALS');
}
//Function where i write code for getting data from gcloud bigquery
public function index()
{
    // Authenticate using Service Account Key
    $cloud = new ServiceBuilder([
        'keyFilePath' => $this->getservicekey
    ]);

    $bigQuery = $cloud->bigQuery();

    $query = 'SELECT * FROM [publicdata:wikipedia.samples] limit 10';

    $queryJobConfig = $bigQuery->query($query);
    $queryResults = $bigQuery->runQuery($queryJobConfig);
    foreach ($queryResults->rows() as $row) {
        print_r($row);
    }
}

下面是要详细显示错误的图像文件。

enter image description here

1 个答案:

答案 0 :(得分:1)

我运行了您提供的代码段,并且无法提出您看到的相同错误。您是否能够共享您的PHP版本以及您正在使用的BigQuery客户端库的版本?希望我可以从那里帮助调试,因为该错误并非非常有用。

然而,我在最后得到的错误是关于格式化的。

第一项注意事项是客户端库默认使用标准SQL格式,而您的查询使用旧版格式。此外,FROM子句需要以下格式:

[project_name:datasetId.tableId]

如果您将代码更新为:

$query = 'SELECT * FROM [publicdata:samples.wikipedia] limit 10';
$queryJobConfig = $bigQuery->query($query)
    ->useLegacySql(true);

我怀疑你应该开始得到一些结果。