BigQuery Google Cloud, как поделиться набором данных с другими пользователями? используя питон

Я думаю, что в предыдущих ответах не удалось выделить простой пример:

, например, у нас есть массив:

numbers = [5, 15]

Следующее выражение регулярного выражения ^[0-9]+ соответствует: 15 только. Однако ^[0-9]* соответствует как 5 and 15. Разница в том, что для оператора + требуется, по крайней мере, один дубликат предыдущего выражения регулярного выражения

-1
задан Pradeep 18 January 2019 в 06:54
поделиться

2 ответа

Еще одна вещь, с которой вы можете столкнуться, это то, что вы должны предоставить доступ на уровне набора данных в BigQuery. В зависимости от того, как вы настроили пользовательские роли в облачной платформе и BigQuery, вам может потребоваться предоставить учетной записи службы прямой доступ к набору данных Bigquery.

Для этого перейдите в BigQuery, наведите курсор на свой набор данных и нажмите стрелку вниз, выберите «Поделиться набором данных». Откроется модальное окно, в котором вы сможете указать, какие адреса электронной почты и учетные записи служб будут использоваться для обмена данными и контроля их прав доступа.

Дайте мне знать, если мои инструкции слишком запутаны, и я выложу несколько изображений, показывающих, как именно это сделать.

Удачи!

0
ответ дан brettrospective 18 January 2019 в 06:54
поделиться

Пример использования клиентской библиотеки Python. Адаптировано из здесь , но добавляется вызов get_dataset для получения текущей политики ACL для уже существующих наборов данных:

from google.cloud import bigquery

project_id = "PROJECT_ID"
dataset_id = "DATASET_NAME"
group_name= "google-group-name@google.com"
role = "READER"

client = bigquery.Client(project=project_id)

dataset_info = client.get_dataset(client.dataset(dataset_id))

access_entries = dataset_info.access_entries
access_entries.append(
        bigquery.AccessEntry(role, "groupByEmail", group_name)
)

dataset_info.access_entries = access_entries
dataset_info = client.update_dataset(
    dataset_info, ['access_entries']) 

Другой способ сделать это - использовать Клиент Google Python API и методы get и patch . Сначала мы извлекаем существующий ACL набора данных, добавляем группу как READER к ответу и исправляем метаданные набора данных:

from oauth2client.client import GoogleCredentials
from googleapiclient import discovery

project_id="PROJECT_ID"
dataset_id="DATASET_NAME"
group_name="google-group-name@google.com"
role="READER"    

credentials = GoogleCredentials.get_application_default()
bq = discovery.build("bigquery", "v2", credentials=credentials)

response = bq.datasets().get(projectId=project_id, datasetId=dataset_id).execute()
response['access'].append({u'role': u'{}'.format(role), u'groupByEmail': u'{}'.format(group_name)})

bq.datasets().patch(projectId=project_id, datasetId=dataset_id, body=response).execute()

Заменим project_id, dataset_id, group_name и [118 ] переменные соответственно.

Используемые версии:

$ pip freeze | grep -E 'bigquery|api-python'
google-api-python-client==1.7.7
google-cloud-bigquery==1.8.1
0
ответ дан Guillem Xercavins 18 January 2019 в 06:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: