Подключение BigQuery
Аутентификация
JSON ключевой файл
Хотя поля в подключении BigQuery можно указать вручную, мы рекомендуем загружать JSON ключевой файл учетной записи службы для быстрой и точной настройки подключения к BigQuery.
Вы можете предоставить JSON ключевой файл в одном из двух форматов:
- Загрузка JSON ключевого файла — Загрузите ключевой файл напрямую в его обычном формате JSON.
- Строка, закодированная в base64 — Предоставьте ключевой файл в виде строки, закодированной в base64. Когда вы предоставляете строку, закодированную в base64, dbt автоматически декодирует ее и заполняет необходимые поля.
Загрузка JSON ключевого файла должна заполнить следующие поля:
- Project id
- Private key id
- Private key
- Client email
- Client id
- Auth uri
- Token uri
- Auth provider x509 cert url
- Client x509 cert url
В дополнение к этим полям, в подключении BigQuery можно настроить два других необязательных поля:
Поле | Описание | Примеры |
---|---|---|
Timeout | Устарело; существует для обратной совместимости с более старыми версиями dbt и будет удалено в будущем. | 300 |
Location | Местоположение, где dbt должен создавать наборы данных. | US , EU |
BigQuery OAuth
Доступно в: Среды разработки, только корпоративные планы
Метод аутентификации OAuth позволяет dbt Cloud выполнять запросы на разработку от имени пользователя BigQuery без настройки ключевого файла учетной записи службы BigQuery в dbt Cloud. Для получения дополнительной информации о начальной настройке подключения BigQuery OAuth в dbt Cloud, пожалуйста, ознакомьтесь с документацией по настройке BigQuery OAuth.
Как конечный пользователь, если ваша организация настроила BigQuery OAuth, вы можете связать проект с вашей личной учетной записью BigQuery в вашем личном профиле в dbt Cloud, следующим образом:
Конфигурация
Чтобы узнать, как оптимизировать производительность с помощью конфигураций, специфичных для платформы данных в dbt Cloud, обратитесь к конфигурации, специфичной для BigQuery.
Необязательные конфигурации
В BigQuery необязательные конфигурации позволяют настроить параметры для таких задач, как приоритет запросов, местоположение набора данных, время ожидания выполнения задания и многое другое. Эти опции дают вам больший контроль над тем, как BigQuery работает за кулисами, чтобы соответствовать вашим требованиям.
Чтобы настроить ваши необязательные конфигурации в dbt Cloud:
- Нажмите на ваше имя в нижнем левом углу бокового меню в dbt Cloud
- Выберите Ваш профиль из меню
- Оттуда нажмите Проекты и выберите ваш проект BigQuery
- Перейдите в Подключение для разработки и выберите BigQuery
- Нажмите Редактировать и затем прокрутите вниз до Необязательные настройки
Следующие конфигурации являются необязательными, которые вы можете настроить в dbt Cloud:
Конфигурация | Информация | Тип | Пример |
---|---|---|---|
Priority | Устанавливает приоритет для заданий BigQuery (либо interactive , либо в очереди для пакетной обработки batch ) | Строка | batch или interactive |
Retries | Указывает количество повторных попыток для неудачных заданий из-за временных проблем | Целое число | 3 |
Location | Местоположение для создания новых наборов данных | Строка | US , EU , us-west2 |
Maximum bytes billed | Ограничивает максимальное количество байтов, которые могут быть выставлены за запрос | Целое число | 1000000000 |
Execution project | Указывает идентификатор проекта для выставления счетов за выполнение запросов | Строка | my-project-id |
Impersonate service account | Позволяет пользователям, аутентифицированным локально, получать доступ к ресурсам BigQuery под указанной учетной записью службы | Строка | service-account@project.iam.gserviceaccount.com |
Job retry deadline seconds | Устанавливает общее количество секунд, в течение которых BigQuery будет пытаться повторно выполнить задание, если оно не удалось | Целое число | 600 |
Job creation timeout seconds | Указывает максимальное время ожидания для шага создания задания | Целое число | 120 |
Google cloud storage-bucket | Местоположение для хранения объектов в Google Cloud Storage | Строка | my-bucket |
Dataproc region | Указывает облачный регион для выполнения заданий по обработке данных | Строка | US , EU , asia-northeast1 |
Dataproc cluster name | Присваивает уникальный идентификатор группе виртуальных машин в Dataproc | Строка | my-cluster |
Запуск моделей dbt на Python в Google Cloud Platform
Для выполнения Python-моделей dbt на GCP, dbt использует вспомогательные сервисы, Dataproc и Cloud Storage, которые предлагают тесную интеграцию с BigQuery. Вы можете использовать существующий кластер Dataproc и корзину Cloud Storage или создать новые:
- https://cloud.google.com/dataproc/docs/guides/create-cluster
- https://cloud.google.com/storage/docs/creating-buckets
Подключения на уровне учетной записи и управление учетными данными
Вы можете повторно использовать подключения в нескольких проектах с помощью глобальных подключений. Подключения привязаны на уровне среды (ранее на уровне проекта), поэтому вы можете использовать несколько подключений внутри одного проекта (для управления разработкой, тестированием, производством и т.д.).
Подключения BigQuery в dbt Cloud в настоящее время ожидают, что учетные данные будут обрабатываться на уровне подключения (и только подключения BigQuery). Это изначально было разработано для облегчения создания нового подключения путем загрузки ключевого файла учетной записи службы. Это описывает, как переопределить учетные данные на уровне среды с помощью расширенных атрибутов, чтобы позволить администраторам проектов управлять учетными данными независимо от деталей подключения на уровне учетной записи, используемых для этой среды.
Для проекта вы сначала создадите переменную среды для хранения секретного значения private_key
. Затем вы используете расширенные атрибуты, чтобы переопределить весь JSON учетной записи службы (вы не можете переопред елить только секретный ключ из-за ограничения расширенных атрибутов).
-
Новая переменная среды
- Создайте новую секретную переменную среды для обработки закрытого ключа:
DBT_ENV_SECRET_PROJECTXXX_PRIVATE_KEY
- Заполните значение закрытого ключа в соответствии с окружением
Чтобы автоматизировать ваше развертывание, используйте следующий запрос API администратора, с
XXXXX
вашим номером учетной записи,YYYYY
вашим номером проекта,ZZZZZ
вашим токеном API:curl --request POST \
--url https://cloud.getdbt.com/api/v3/accounts/XXXXX/projects/YYYYY/environment-variables/bulk/ \
--header 'Accept: application/json' \
--header 'Authorization: Bearer ZZZZZ' \
--header 'Content-Type: application/json' \
--data '{
"env_var": [
{
"new_name": "DBT_ENV_SECRET_PROJECTXXX_PRIVATE_KEY",
"project": "Value by default for the entire project",
"ENVIRONMENT_NAME_1": "Optional, if wanted, value for environment name 1",
"ENVIRONMENT_NAME_2": "Optional, if wanted, value for environment name 2"
}
]
}' - Создайте новую секретную переменную среды для обработки закрытого ключа:
-
Расширенные атрибуты
В деталях среды заполните блок расширенных атрибутов следующим содержимым (заменив
XXX
на вашу соответствующую информацию):keyfile_json:
type: service_account
project_id: xxx
private_key_id: xxx
private_key: '{{ env_var(''DBT_ENV_SECRET_PROJECTXXX_PRIVATE_KEY'') }}'
client_email: xxx
client_id: xxx
auth_uri: xxx
token_uri: xxx
auth_provider_x509_cert_url: xxx
client_x509_cert_url: xxxЕсли вам нужно переопределить другие поля на уровне среды через расширенные атрибуты, пожалуйста, соблюдайте ожидаемую отступы (порядок не имеет значения):
priority: interactive
keyfile_json:
type: xxx
project_id: xxx
private_key_id: xxx
private_key: '{{ env_var(''DBT_ENV_SECRET_PROJECTXXX_PRIVATE_KEY'') }}'
client_email: xxx
client_id: xxx
auth_uri: xxx
token_uri: xxx
auth_provider_x509_cert_url: xxx
client_x509_cert_url: xxx
execution_project: buck-stops-here-456Чтобы автоматизировать ваше развертывание, вам сначала нужно создать полезную нагрузку расширенных атрибутов для данного проекта, а затем назначить ее конкретной среде. С
XXXXX
как вашим номером учетной записи,YYYYY
как вашим номером проекта, иZZZZZ
как вашим токеном API:curl --request POST \
--url https://cloud.getdbt.com/api/v3/accounts/XXXXX/projects/YYYYY/extended-attributes/ \
--header 'Accept: application/json' \
--header 'Authorization: Bearer ZZZZZ' \
--header 'Content-Type: application/json' \
--data '{
"id": null,
"extended_attributes": {"type":"service_account","project_id":"xxx","private_key_id":"xxx","private_key":"{{ env_var('DBT_ENV_SECRET_PROJECTXXX_PRIVATE_KEY') }}","client_email":"xxx","client_id":xxx,"auth_uri":"https://accounts.google.com/o/oauth2/auth","token_uri":"https://oauth2.googleapis.com/token","auth_provider_x509_cert_url":"https://www.googleapis.com/oauth2/v1/certs","client_x509_cert_url":"xxx"},
"state": 1
}'Запомните
id
, возвращенный в сообщении. Он будет использован в следующем вызове. СEEEEE
идентификатором среды,FFFFF
идентификатором расширенных атрибутов:curl --request POST \
--url https://cloud.getdbt.com/api/v3/accounts/XXXXX/projects/YYYYY/environments/EEEEE/ \
--header 'Accept: application/json' \
--header 'Authorization: Bearer ZZZZZZ' \
--header 'Content-Type: application/json' \
--data '{
"extended_attributes_id": FFFFF
}'