Невозможность экспортировать таблицу Big Query - PullRequest
0 голосов
/ 24 мая 2018

Я пытаюсь экспортировать таблицу больших запросов в облачное хранилище, используя NEWLINE_DELIMITED_JSON в качестве формата назначения, но продолжаю получать следующую ошибку: Ошибка при выполнении задания: операция не может быть выполнена на вложенной схеме .

Я знаю, что Big Query позволяет экспортировать вложенные таблицы, если вы выбираете формат json (как указано в документации и в этом вопросе ), поэтому я неЯ не понимаю, почему я получаю эту ошибку ... Я использую 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 Ответ

0 голосов
/ 28 мая 2018

Ваша проблема в том, что вы используете неправильную options конфигурацию поля.Следуя документации PHP по методу Table.extract , вы увидите, что поле options в методе extract должно представлять собой объект configuration, такой как представлен в BigQuery.документация .

Вы определяете свой options объект как:

$options = ['destinationFormat' => $format];

Вместо этого вы должны использовать формат:

$options = ['configuration' => ['extract' => ['destinationFormat' => $format]]];

Это потому, чтополе destinationFormat вложено в configuration и extract.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...