Google bigquery 从java更新bigquery数据集访问

Google bigquery 从java更新bigquery数据集访问,google-bigquery,Google Bigquery,我们有一个需求,需要在包含由java代码创建的视图的bigquery数据集中授予对特定用户组的访问权。我发现datasets.patch方法可以帮助我这样做,但无法找到http请求中需要传递的内容的文档。您可以在链接的文档页面中找到上的完整文档。考虑到您已经以编程方式在数据集中创建视图,我建议您使用,这可能比执行对的API调用更方便。在任何情况下,如果您仍然对直接调用API感兴趣,那么应该在请求主体中提供API的相关部分 我共享的第一个链接提供了一个很好的示例,但简而言之,这是您应该做的: pu

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

您可以在链接的文档页面中找到上的完整文档。考虑到您已经以编程方式在数据集中创建视图,我建议您使用,这可能比执行对的API调用更方便。在任何情况下,如果您仍然对直接调用API感兴趣,那么应该在请求主体中提供API的相关部分

我共享的第一个链接提供了一个很好的示例,但简而言之,这是您应该做的:

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());
}

请注意,如果在构造客户端对象时未指定凭据,客户端库将在
GOOGLE\u APPLICATION\u credentials
环境变量中查找凭据。

您可以在链接的文档页面中找到上的完整文档。考虑到您已经以编程方式在数据集中创建视图,我建议您使用,这可能比执行对的API调用更方便。在任何情况下,如果您仍然对直接调用API感兴趣,那么应该在请求主体中提供API的相关部分

我共享的第一个链接提供了一个很好的示例,但简而言之,这是您应该做的:

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());
}

请注意,如果在构造客户端对象时未指定凭据,客户端库将在
GOOGLE\u APPLICATION\u credentials
环境变量中查找凭据。

Hi,感谢ypur响应。我尝试了上述步骤,但问题是datasetinfo对象总是返回null,这就是我无法继续执行此操作的原因。BigQuery BigQuery=BigQueryOptions.getDefaultInstance().getService();DatasetId DatasetId=数据集的日期(“fccr”);DatasetInfo DatasetInfo=Dataset.of(datasetId);您可能错误地实例化了
数据集
对象。请查看我的编辑,确保您使用了正确的凭据,并在
DatasetId.of(“您的数据集名称”)
中指定了有效的数据集名称。我很高兴能提供帮助!如果答案对你有用,请考虑我的回答,让社区看到它解决了你的问题。谢谢您好@dsesto如果您能帮忙,我还有一个问题,非常抱歉打扰您。您好,谢谢您的回复。我尝试了上述步骤,但问题是datasetinfo对象总是返回null,这就是我无法继续执行此操作的原因。BigQuery BigQuery=BigQueryOptions.getDefaultInstance().getService();DatasetId DatasetId=数据集的日期(“fccr”);DatasetInfo DatasetInfo=Dataset.of(datasetId);您可能错误地实例化了
数据集
对象。请查看我的编辑,确保您使用了正确的凭据,并在
DatasetId.of(“您的数据集名称”)
中指定了有效的数据集名称。我很高兴能提供帮助!如果答案对你有用,请考虑我的回答,让社区看到它解决了你的问题。谢谢您好@dsesto如果您能帮忙,我还有一个问题,非常抱歉给您带来麻烦。