Я думаю, что в предыдущих ответах не удалось выделить простой пример:
, например, у нас есть массив:
numbers = [5, 15]
Следующее выражение регулярного выражения ^[0-9]+
соответствует: 15
только. Однако ^[0-9]*
соответствует как 5 and 15
. Разница в том, что для оператора +
требуется, по крайней мере, один дубликат предыдущего выражения регулярного выражения
Еще одна вещь, с которой вы можете столкнуться, это то, что вы должны предоставить доступ на уровне набора данных в BigQuery. В зависимости от того, как вы настроили пользовательские роли в облачной платформе и BigQuery, вам может потребоваться предоставить учетной записи службы прямой доступ к набору данных Bigquery.
Для этого перейдите в BigQuery, наведите курсор на свой набор данных и нажмите стрелку вниз, выберите «Поделиться набором данных». Откроется модальное окно, в котором вы сможете указать, какие адреса электронной почты и учетные записи служб будут использоваться для обмена данными и контроля их прав доступа.
Дайте мне знать, если мои инструкции слишком запутаны, и я выложу несколько изображений, показывающих, как именно это сделать.
Удачи!
Пример использования клиентской библиотеки 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