Java 以编程方式列出已授予访问权限的Bigquery数据集,而不事先知道项目ID

Java 以编程方式列出已授予访问权限的Bigquery数据集,而不事先知道项目ID,java,google-bigquery,google-cloud-platform,Java,Google Bigquery,Google Cloud Platform,是否有一种方法(使用BigQuery API)以编程方式列出帐户被授予访问权限的所有数据集,而不提前知道包含这些数据集的项目的名称?我感觉API可能不会公开这些信息 我希望获得类似于BigQueryWeb控制台左侧显示的数据集列表的内容 我所指的数据集,我无权访问包含这些数据集的项目,并且仅被授予访问特定数据集的权限。否则,我们可以简单地使用API列出项目,然后查询每个项目的数据集列表 大概这将不得不排除公共数据集(太多),只包括那些我的帐户已被明确授予访问权限的数据集。谷歌的大多数工具都有AP

是否有一种方法(使用BigQuery API)以编程方式列出帐户被授予访问权限的所有数据集,而不提前知道包含这些数据集的项目的名称?我感觉API可能不会公开这些信息

我希望获得类似于BigQueryWeb控制台左侧显示的数据集列表的内容

我所指的数据集,我无权访问包含这些数据集的项目,并且仅被授予访问特定数据集的权限。否则,我们可以简单地使用API列出项目,然后查询每个项目的数据集列表


大概这将不得不排除公共数据集(太多),只包括那些我的帐户已被明确授予访问权限的数据集。

谷歌的大多数工具都有API探索者。每当你有这样一个问题,我建议你查一下浏览器,因为它会告诉你哪些是必须的,哪些是可以做的,哪些是不能做的

如果您查找API资源管理器(从官方文档中的“数据集->列表”),您会看到只有一个必填字段:projectID。因此,您的问题的答案是否定的,您确实需要项目名称,使用:

这将返回一个JSON格式,如下所示:

[
    {
        "datasetId": "wr_1"
    },
    {
        "datasetId": "wr_2"
    },
    {
        "datasetId": "wr_3"
    },
    {
        "datasetId": "wr_4"
    }
]
您也可以通过API执行此操作,但需要执行多个调用

  • 首先获得项目:
  • 然后从项目中获取数据集

目前在BigQuery API中无法做到这一点。正如您所说,您可以获得您所属项目的列表,然后列出这些项目中的数据集,但无法获得与您共享的所有数据集的完整列表


我们希望在将来提供更好的搜索和发现功能,但不幸的是现在不可能做到。

(顺便说一句,花了一秒钟时间编辑了您文章中的感谢。虽然这确实是一个很好的想法,但它被认为是堆栈上的噪音:)您通过发布高质量的帖子并根据质量进行投票来表示尊重和赞赏:)。欢迎来到这个网站!)你自己尝试过什么吗?我尝试过探索API,但我找不到任何看起来会起作用的东西。projects().list()仅返回您具有项目级访问权限的项目。和datasets().list()需要projectId作为参数。如果您已经知道包含您有权访问的数据集的项目的名称,则可以使用datasets()列出您有权访问的数据集。list(projectId)(即使您没有项目级访问权).我正要对API缺乏这样做的方法发表评论。狡猾的编辑先生!:P如果没有双API调用,我看不到另一种方法(除了CLI之外,但是如果需要基于API…对于OP可能不可行),据我所知,projects->list只返回您已被授予项目级访问权限的项目。我正在尝试获取一个已被授予访问权限(但我没有项目级访问权限)的单个数据集的列表。谢谢。我已经检查了API浏览器,这就是我问这个问题的原因。还有project->list,但它只返回您具有项目级访问权限的项目(而不是仅授予您对某些数据集的访问权限的项目)。也许我应该在我最初的问题中注意到这一点,但我试图将其细化,避免添加任何内容fluff@JasonDavey包括您尝试过的内容和更多详细信息,这并不容易:)。无论如何,如果没有CLI(我认为CLI与“projects->list”有相同的问题),我看不到一种直接实现它的方法:SYeah-这似乎是不可能的。这可能是因为理论上这会返回世界上所有公共数据集的列表,因此会有太多的结果。我真正想要的是一种只列出那些我被明确授予访问权限的内容的方法。@JasonDavey bingo。我不知道到底有多少公共数据集,但它肯定会抓住它们。您正在查找“我可以查询的任何数据集”,所有公共数据集都遵循该条件。我不确定这里有没有解决办法。也许我可以请求谷歌实现一个“我可以查询的所有数据集,不包括公共数据集”=P。我认为目前唯一的“解决办法”是手动创建此类项目的列表,并将其存储在config中的某个位置
[
    {
        "datasetId": "wr_1"
    },
    {
        "datasetId": "wr_2"
    },
    {
        "datasetId": "wr_3"
    },
    {
        "datasetId": "wr_4"
    }
]