英文:
Bigquery PHP - creating a new Dataset
问题
我正在尝试在我的项目中插入一个新的数据集:
$client = new Google_Client();
$client->setClientId("");
$client->setClientSecret("");
$client->setRedirectUri("");
$client->setAccessType("offline");
$client->setApprovalPrompt("force");
$client->setScopes(array(Google_Service_Bigquery::BIGQUERY, Google_Service_Bigquery::BIGQUERY_INSERTDATA, Google_Service_Oauth2::USERINFO_EMAIL));
$client->setState("offline");
$service = new Google_Service_Bigquery($client);
$service->datasets->insert("mynewdataset", null);
我收到以下异常信息:
Uncaught TypeError: Argument 2 passed to Google\Service\Bigquery\Resource\Datasets::insert() must be an instance of Google\Service\Bigquery\Dataset
如何创建一个数据集对象并如何配置它?这是正确的 API 文档吗?https://cloud.google.com/bigquery/docs/reference/rest/v2/datasets/insert
英文:
I am trying to insert a new Dataset in my project:
$client = new Google_Client();
$client->setClientId("");
$client->setClientSecret("");
$client->setRedirectUri("");
$client->setAccessType("offline");
$client->setApprovalPrompt("force");
$client->setScopes(array(Google_Service_Bigquery::BIGQUERY, Google_Service_Bigquery::BIGQUERY_INSERTDATA, Google_Service_Oauth2::USERINFO_EMAIL));
$client->setState("offline");
$service = new Google_Service_Bigquery($client);
$service->datasets->insert("mynewdataset", null);
And I'm getting this exception:
Uncaught TypeError: Argument 2 passed to Google\Service\Bigquery\Resource\Datasets::insert() must be an instance of Google\Service\Bigquery\Dataset
How to create a Dataset object and how to configure it? is this the correct API doc? https://cloud.google.com/bigquery/docs/reference/rest/v2/datasets/insert
答案1
得分: 0
这个链接对我的Java版本有帮助:https://stackoverflow.com/questions/19037703/missing-parameters-when-creating-new-table-in-google-bigquery-through-python-api
所以我的工作Java版本如下:
Dataset dataset = new Dataset();
dataset.setId("newdatasetid");
DatasetReference datasetReference = new DatasetReference();
datasetReference.setProjectId("bigquery-project-id");
datasetReference.setDatasetId("newdatasetid");
dataset.setDatasetReference(datasetReference);
com.google.api.services.bigquery.Bigquery.Datasets.Insert insertDataset = mBigquery.datasets().insert("bigquery-project-id", dataset);
insertDataset.execute();
根据这个,PHP中的第二个参数需要是一个带有数据集和项目ID的Dataset。
$datasetReference = new \Google\Service\Bigquery\DatasetReference();
$datasetReference->setDatasetId("datasetid");
$datasetReference->setProjectId("projectid");
$dataset = new \Google\Service\Bigquery\Dataset();
$dataset->setDatasetReference($datasetReference);
$this->mService->datasets->insert("projectid", $dataset);
至于如何避免这些问题,我看到这个文档版本中一些字段被标记为“required”:https://developers.google.com/resources/api-libraries/documentation/bigquery/v2/python/latest/
英文:
This helped with my Java version: https://stackoverflow.com/questions/19037703/missing-parameters-when-creating-new-table-in-google-bigquery-through-python-api
So my working Java version is this:
Dataset dataset = new Dataset();
dataset.setId("newdatasetid");
DatasetReference datasetReference = new DatasetReference();
datasetReference.setProjectId("bigquery-project-id");
datasetReference.setDatasetId("newdatasetid");
dataset.setDatasetReference(datasetReference);
com.google.api.services.bigquery.Bigquery.Datasets.Insert insertDataset = mBigquery.datasets().insert("bigquery-project-id", dataset);
insertDataset.execute();
Based on this, the second argument in PHP needs to be a Dataset that has a DatasetReference with the dataset and project IDs.
$datasetReference = new \Google\Service\Bigquery\DatasetReference();
$datasetReference->setDatasetId("datasetid");
$datasetReference->setProjectId("projectid");
$dataset = new \Google\Service\Bigquery\Dataset();
$dataset->setDatasetReference($datasetReference);
$this->mService->datasets->insert("projectid", $dataset);
As to how you would avoid these issues, I saw this doc version where some fields are marked as "required": https://developers.google.com/resources/api-libraries/documentation/bigquery/v2/python/latest/
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论