从java更新bigquery数据集访问

时间:2018-06-12 10:12:51

标签: google-bigquery

我们需要在包含java代码创建的视图的bigquery数据集中授予对特定用户组的访问权限。我发现datasets.patch方法可以帮助我做到这一点,但无法找到需要在http请求中传递的内容的文档。

1 个答案:

答案 0 :(得分:1)

您可以在链接的文档页面中找到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环境变量中查找凭据。