Google bigquery 来自动态项目+数据集+表名Google BigQuery的查询

Google bigquery 来自动态项目+数据集+表名Google BigQuery的查询,google-bigquery,bigquery-standard-sql,Google Bigquery,Bigquery Standard Sql,我需要对BigQuery中的所有项目执行一个查询。项目列表可能每天都在增加,所以我需要动态地完成这项工作。我需要查询的所有表都共享相同的模式,但每个表位于具有不同数据集名称的不同项目中 我想创建一个表来保存我需要查询的所有project.dataset.table。然后我可以执行一个查询,从中我可以从提到的表中获取位置 但实际上我不知道怎么做。或者,如果我可以实现另一个解决方案…如果您在多个帐户上运行查询,那么您必须以某种方式明确指定这些帐户及其在某个集中位置的凭据 假设您可以为这些帐户中的每一

我需要对BigQuery中的所有项目执行一个查询。项目列表可能每天都在增加,所以我需要动态地完成这项工作。我需要查询的所有表都共享相同的模式,但每个表位于具有不同数据集名称的不同项目中

我想创建一个表来保存我需要查询的所有project.dataset.table。然后我可以执行一个查询,从中我可以从提到的表中获取位置


但实际上我不知道怎么做。或者,如果我可以实现另一个解决方案…

如果您在多个帐户上运行查询,那么您必须以某种方式明确指定这些帐户及其在某个集中位置的凭据

假设您可以为这些帐户中的每一个创建独立的服务帐户JSON,那么您只需要有一个本地脚本就可以完成这项工作。一般来说,脚本真正需要做的就是在运行查询之前检查帐户并重置环境变量GOOGLE\u APPLICATION\u CREDENTIALS以指向特定帐户

例如,如果使用Python,则大致如下所示:

导入操作系统 从google.cloud导入bigquery 账户=[ { 账户名称:xyz, credentials\u json:/path/to/xyz/credentials.json, 数据集名称:数据集, 表名称:表名称 }, { 账户名称:xyz, credentials\u json:/path/to/xyz/credentials.json, 数据集名称:数据集, 表名称:表名称 } ] 一般查询 从`{dataset\u name}.{table\u name}`中选择*其中1=1; ' def workeraccount\u信息: ' 您的worker函数,它接受帐户信息并运行查询。 ' 根据帐户信息设置凭据文件env变量 os.environ[GOOGLE\u APPLICATION\u CREDENTIALS]=account\u info.getcredentials\u json client=bigquery.client query=generic\u query.formatdataset\u name=account\u info.getdataset\u name,table\u name=account\u info.gettable\u name query\u job=client.queryquery 行=查询作业。结果 对于行中的行: printaccount\u info.getaccount\u名称,行 回来 如果uuuu name uuuuu==\uuuuuuuu main\uuuuuuuu: -检查您的帐户并提交给工作人员 而账户: account\u info=accounts.pop0 workeraccount\u信息 希望能有帮助