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);
}
}
下面是要详细显示错误的图像文件。
答案 0 :(得分:1)
我运行了您提供的代码段,并且无法提出您看到的相同错误。您是否能够共享您的PHP版本以及您正在使用的BigQuery客户端库的版本?希望我可以从那里帮助调试,因为该错误并非非常有用。
然而,我在最后得到的错误是关于格式化的。
第一项注意事项是客户端库默认使用标准SQL格式,而您的查询使用旧版格式。此外,FROM子句需要以下格式:
[project_name:datasetId.tableId]
如果您将代码更新为:
$query = 'SELECT * FROM [publicdata:samples.wikipedia] limit 10';
$queryJobConfig = $bigQuery->query($query)
->useLegacySql(true);
我怀疑你应该开始得到一些结果。