Google bigquery 将数据从bigquery导出到云存储-php客户端库-在云存储文件中有一个额外的空新行

Google bigquery 将数据从bigquery导出到云存储-php客户端库-在云存储文件中有一个额外的空新行,google-bigquery,google-cloud-storage,Google Bigquery,Google Cloud Storage,我跟踪了这个样本 公共函数exportDailRecordsToCloudStorage($date,$tableId) { $validTableIds=['table1','table2']; if(!in_数组($tableId,$validTableId)) { die(“错误的TableId”); } $date=日期(“Ymd”,日期(标准时间($date)); $datasetId=$date; $dataset=$this->bigQuery->dataset($dataset

我跟踪了这个样本

公共函数exportDailRecordsToCloudStorage($date,$tableId)
{
$validTableIds=['table1','table2'];
if(!in_数组($tableId,$validTableId))
{
die(“错误的TableId”);
}
$date=日期(“Ymd”,日期(标准时间($date));
$datasetId=$date;
$dataset=$this->bigQuery->dataset($datasetId);
$table=$dataset->table($tableId);
//加载存储对象
$storage=$this->storage;
$bucketName='mybucket';
$objectName=“daily_records/{$tableId}}$$date;
$destinationObject=$storage->bucket($bucketName)->object($objectName);
//创建导入作业
$format='NEWLINE_DELIMITED_JSON';
$options=['jobConfig'=>['destinationFormat'=>$format]];
$job=$table->export($destinationObject,$options);
//轮询作业,直到作业完成
$backoff=新的指数backoff(10);
$backoff->execute(函数()使用($job){
打印(‘等待作业完成’.PHP\u EOL);
$job->reload();
如果(!$job->isComplete()){
//抛出新异常('作业尚未完成',500);
}
});
//检查作业是否有错误
如果(设置($job->info()['status']['errorResult'])){
$error=$job->info()['status']['errorResult']['message'];
printf('运行作业时出错:%s'.PHP\u EOL,$Error);
}否则{
打印('Data exported successfully'.PHP\u EOL);
}
我的表1中有37670行,云存储文件有37671行

我的table2有388065行,云存储文件有388066行

两个云存储文件中的最后一行都是空行


这是Google BigQuery功能改进请求吗?还是我在上面的代码中出错了?

您所描述的结果似乎出乎意料。输出文件的行数通常应与源表的行数相同

您的PHP代码看起来不错,不应该是问题的原因

我正在尝试复制它,但无法复制。您能否再次检查最后一个空行是否是由其他工具(如文本编辑器或其他工具)添加的?您如何计算结果输出的行数


如果您已经排除并确定新行确实是由BigQuestExchange特性添加的,请考虑使用薛健建议的BigQu疑问发行跟踪器打开一个bug,并包含您的作业ID,以便我们可以进一步调查。

我是来自BigQuQuy的,并且我为这个问题创建了一个标记。但是将来,您也可以使用R。报告此类问题。