【发布时间】:2018-06-12 10:12:50
【问题描述】:
我们有一个要求,我们需要在包含由 java 代码创建的视图的 bigquery 数据集中授予对特定用户组的访问权限。我发现 datasets.patch 方法可以帮助我做到这一点,但无法找到需要在 http 请求中传递的文档。
【问题讨论】:
标签: google-bigquery
我们有一个要求,我们需要在包含由 java 代码创建的视图的 bigquery 数据集中授予对特定用户组的访问权限。我发现 datasets.patch 方法可以帮助我做到这一点,但无法找到需要在 http 请求中传递的文档。
【问题讨论】:
标签: google-bigquery
您可以在链接的文档页面中找到有关 how to update BigQuery dataset access controls 的完整文档。鉴于您已经以编程方式在数据集中创建视图,我建议您使用BigQuery client library,这可能比对datasets.patch method 执行API 调用更方便。无论如何,如果您仍然对直接调用 API 感兴趣,您应该在请求正文中提供 dataset resource 的相关部分。
我分享的第一个链接提供了updating dataset access using the Java client libraries 的一个很好的例子,但简而言之,这是你应该做的:
public List<Acl> updateDatasetAccess(DatasetInfo dataset) {
// Make a copy of the ACLs in order to modify them (adding the required group)
List<Acl> previousACLs = dataset.getAcl();
ArrayList<Acl> ACLs = new ArrayList<>(previousACLs);
ACLs.add(Acl.of(new Acl.User("your_group@gmail.com"), Acl.Role.READER));
DatasetInfo.Builder builder = dataset.toBuilder();
builder.setAcl(ACLs);
bigquery.update(builder.build());
}
编辑:
dataset对象的定义方式如下:
BigQuery bigquery = BigQueryOptions.getDefaultInstance().getService();
Dataset dataset = bigquery.getDataset(DatasetId.of("YOUR_DATASET_NAME"));
请注意,如果在构造客户端对象bigquery 时未指定凭据,客户端库将在GOOGLE_APPLICATION_CREDENTIALS 环境变量中查找凭据。
【讨论】:
dataset 对象。请查看我的编辑并确保您使用正确的凭据并在 DatasetId.of("YOUR_DATASET_NAME") 中指定有效的数据集名称。