Bigquery PHP creates a table schema or creates a table from a query result

I want to create a BigQuery table from a query result or create a table with a schema in PHP. I am currently processing these sentences, but they make a table with empty noshemes:

$postBody = array(  'tableReference' =>
    array(
        'projectId' => $project_id,
        'datasetId' => $dataset,
        'tableId' => 'josetest'
    )
);

$table = $service->tables->insert($project_id, $dataset, new Google_Service_Bigquery_Table($postBody));

I probably found a python solution, but can anyone translate it into PHP? It:

"configuration": {
  "query": {
    "query": "select count(*) from foo.bar",
    "destinationTable": {
      "projectId": "my_project",
      "datasetId": "my_dataset",
      "tableId": "my_table"
    },
    "createDisposition": "CREATE_IF_NEEDED",
    "writeDisposition": "WRITE_APPEND",
  }
}
+4
source share
2 answers

.

/**
 * @param Google_Client $client 
 * @param string $project_id
 * @param string $dataset_id
 * @throws Google_Service_Exception
 * @return Google_Service_Bigquery_Table
 */
public function BQ_Tables_Insert($client, $project_id, $dataset_id) {
    $bq = new Google_Service_Bigquery($client);
    $table_reference = new Google_Service_Bigquery_TableReference();
    $table_reference->setProjectId($project_id);
    $table_reference->setDatasetId($dataset_id);
    $table_reference->setTableId(static::tableId());
    $schema = new Google_Service_Bigquery_TableSchema();
    $schema->setFields(static::fields());
    $table = new Google_Service_Bigquery_Table();
    $table->setTableReference($table_reference);
    $table->setSchema($schema);

    try {
        return $bq->tables->insert($project_id, $dataset_id, $table);
    } catch (Google_Service_Exception $e) {
        $this->setErrors($e->getErrors())->setErrorMessage($e->getMessage());
        throw $e;
    }
}

static::tableId() - , static::fields() -

/**
 * @see https://developers.google.com/bigquery/docs/reference/v2/tables/insert
 */
public static function fields() {
    return array(
        array('name' => 'user_id', 'type' => 'integer', 'mode' => 'required'),
        array('name' => 'order_id', 'type' => 'integer', 'mode' => 'required'),
        array('name' => 'status', 'type' => 'integer', 'mode' => 'nullable'),
        array('name' => 'timestamp', 'type' => 'timestamp', 'mode' => 'nullable')
    );
}
+4

, mi.

 $fields = array(
        array('name' => 'user_id', 'type' => 'integer', 'mode' => 'required'),
        array('name' => 'order_id', 'type' => 'integer', 'mode' => 'required'),
        array('name' => 'status', 'type' => 'integer', 'mode' => 'nullable'),
        array('name' => 'timestamp', 'type' => 'timestamp', 'mode' => 'nullable')
    );


    //$bq = $service
    $table_reference = new Google_Service_Bigquery_TableReference();
    $table_reference->setProjectId($project_id);
    $table_reference->setDatasetId($dataset);
    $table_reference->setTableId("testsales");
    $schema = new Google_Service_Bigquery_TableSchema();
    $schema->setFields($fields);
    $table = new Google_Service_Bigquery_Table();
    $table->setTableReference($table_reference);
    $table->setSchema($schema);

    try {
        return $service->tables->insert($project_id, $dataset, $table);
    } catch (Google_Service_Exception $e) {
        $this->setErrors($e->getErrors())->setErrorMessage($e->getMessage());
        throw $e;
    }

Bigquery . Bye!

+2

All Articles