无法导出 Big Query 表
Posted
技术标签:
【中文标题】无法导出 Big Query 表【英文标题】:Not being able to export a Big Query table 【发布时间】:2018-05-24 12:48:45 【问题描述】:我正在尝试使用 NEWLINE_DELIMITED_JSON 作为目标格式将 Big Query 表导出到云存储中,但我不断收到以下错误: 错误运行作业:无法对嵌套架构执行操作。
如果您选择 json 格式,我知道 Big Query 允许导出嵌套表(正如 documentation 和此 question 中所述),所以我不明白我为什么会收到此错误... 我正在使用 php SDK,这是我一直在使用的代码:
extract_table($projectId, $datasetId, $tableId, $bucketName, $objectName);
function extract_table($projectId, $datasetId, $tableId, $bucketName, $objectName, $format = 'NEWLINE_DELIMITED_JSON')
$bigQuery = new BigQueryClient(['projectId' => $projectId,]);
$dataset = $bigQuery->dataset($datasetId);
$table = $dataset->table($tableId);
// load the storage object
$storage = new StorageClient([
'projectId' => $projectId,
]);
$destinationObject = $storage->bucket($bucketName)->object($objectName);
// create the extract job
$options = ['destinationFormat' => $format];
$extractConfig = $table->extract($destinationObject, $options);
$job = $table->runJob($extractConfig);
// poll the job until it is complete
$backoff = new ExponentialBackoff(10);
try
$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);
);
catch (Exception $e)
// check if the job has errors
if (isset($job->info()['status']['errorResult']))
$error = $job->info()['status']['errorResult']['message'];
printf('Error running job: %s' . PHP_EOL, $error);
else
print('Data extracted successfully' . PHP_EOL);
【问题讨论】:
【参考方案1】:您的问题是您使用了错误的options
字段配置。在PHP documentation on the Table.extract
method 之后,您将看到extract
方法中的options
字段必须是configuration
对象,例如BigQuery documentation 中的对象。
您将options
对象定义为:
$options = ['destinationFormat' => $format];
您应该使用以下格式:
$options = ['configuration' => ['extract' => ['destinationFormat' => $format]]];
这是因为destinationFormat
字段嵌套在configuration
和extract
下。
【讨论】:
您好 Dsesto,感谢您的回复。我将立即更改代码,如果它有效,我会告诉你。再次感谢。 成功了!非常感谢!这很奇怪,因为我使用了您可以在 php docs samples 官方 github 页面 (github.com/GoogleCloudPlatform/php-docs-samples/blob/master/…) 上找到的代码。 这对我来说不合适。如果这确实是一个错误,我将确保在内部报告并更正 GitHub 示例。感谢您指出!以上是关于无法导出 Big Query 表的主要内容,如果未能解决你的问题,请参考以下文章
如何从 Big Query cli 运行保存的查询并将结果导出到 CSV?
将 Firebase Analytics 链接到 Big Query 时,何时导出数据?
Python GAE - 如何以编程方式将数据从备份导出到 Big Query?
如何通过GCS将GA360表从Big query导出到雪花作为json文件而不丢失数据?