Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
bigQuery谷歌云如何与其他用户共享数据集?使用python_Python_Google Bigquery - Fatal编程技术网

bigQuery谷歌云如何与其他用户共享数据集?使用python

bigQuery谷歌云如何与其他用户共享数据集?使用python,python,google-bigquery,Python,Google Bigquery,我在Google Cloud中使用我的userA帐户定义了一个bigQuery数据集,我希望我的同事userB(他是同一组的成员)能够看到我定义的数据集。使用bq命令行界面,userB可以看到项目,但不能看到数据集。如何使用python脚本将userA创建的数据集与userB共享?使用python客户端库的示例。改编自但添加了一个调用,以获取现有数据集的当前ACL策略: 从google.cloud导入bigquery project\u id=“project\u id” dataset\u i

我在Google Cloud中使用我的userA帐户定义了一个bigQuery数据集,我希望我的同事userB(他是同一组的成员)能够看到我定义的数据集。使用bq命令行界面,userB可以看到项目,但不能看到数据集。如何使用python脚本将userA创建的数据集与userB共享?

使用python客户端库的示例。改编自但添加了一个调用,以获取现有数据集的当前ACL策略:

从google.cloud导入bigquery
project\u id=“project\u id”
dataset\u id=“dataset\u名称”
group_name=“谷歌集团-name@google.com"
role=“READER”
client=bigquery.client(project=project\u id)
dataset\u info=client.get\u数据集(client.dataset(dataset\u id))
access\u entries=数据集\u信息。access\u条目
access\u entries.append(
AccessEntry(角色,“groupByEmail”,组名称)
)
数据集\u info.access\u条目=访问\u条目
dataset\u info=client.update\u数据集(
数据集_信息,['access_entries'])
另一种方法是使用googlepythonapi客户端和和方法。首先,我们检索现有的数据集ACL,将组作为
READER
添加到响应中,并修补数据集元数据:

从oauth2client.client导入Google凭据
从GoogleAppClient导入发现
project\u id=“project\u id”
dataset\u id=“dataset\u名称”
group_name=“谷歌集团-name@google.com"
role=“READER”
credentials=GoogleCredentials.get_application_default()
bq=discovery.build(“bigquery”、“v2”、凭证=凭证)
response=bq.datasets().get(projectd=project\u id,datasetId=dataset\u id).execute()
响应['access']。追加({u'role':u'{})。格式(role),u'groupByEmail':u'{}。格式(group_name)})
bq.datasets().patch(projectId=project\u id,datasetId=dataset\u id,body=response).execute()
相应地替换
项目id
数据集id
组名称
角色
变量

使用的版本:

$pip freeze | grep-E'bigquery | api python'
google api python客户端==1.7.7
谷歌云bigquery==1.8.1

您可能遇到的另一件事是必须在BigQuery中的数据集级别授予访问权限。根据您在云平台和BigQuery中设置用户角色的方式,您可能需要授予服务帐户直接访问BigQuery数据集的权限

要执行此操作,请进入BigQuery,将鼠标悬停在数据集上,然后单击向下箭头,选择“共享数据集”。将打开一个模式,您可以在其中指定与哪些电子邮件地址和服务帐户共享数据集并控制其访问权限

让我知道如果我的指示太混乱,我会上传一些图片,显示如何做到这一点

祝你好运