Ingérer des données de Google Ads
Bêta
Cette fonctionnalité est en Bêta. Les administrateurs du Workspace peuvent contrôler l'accès à cette fonctionnalité à partir de la page Previews . Consultez Gérer les aperçus Databricks.
Découvrez comment créer un pipeline d'ingestion géré pour ingérer des données de Google Ads dans Databricks.
Exigences
-
Pour créer un pipeline d'ingestion, vous devez remplir les conditions suivantes :
-
Votre workspace doit être activé pour Unity Catalog.
-
Le compute Serverless doit être activé pour votre Workspace. Consultez les exigences du compute Serverless.
-
Pour créer une nouvelle connexion, vous devez disposer des privilèges
CREATE CONNECTIONsur le métastore. Voir Gérer les privilèges dans Unity Catalog.Si le connecteur prend en charge la création de pipelines basée sur l'interface utilisateur, un administrateur peut créer la connexion et le pipeline en même temps en suivant les étapes décrites sur cette page. Cependant, si les utilisateurs qui créent des pipelines utilisent la création de pipelines basée sur l'API ou ne sont pas des utilisateurs administrateurs, un administrateur doit d'abord créer la connexion dans l'Explorateur de catalogues. Voir Connexion aux sources d'ingestion gérées.
-
Pour utiliser une connexion existante, vous devez avoir les privilèges
USE CONNECTIONouALL PRIVILEGESsur l'objet de connexion. -
Vous devez disposer de privilèges
USE CATALOGsur le catalogue cible. -
Vous devez disposer des privilèges
USE SCHEMAetCREATE TABLEsur un schéma existant ou des privilègesCREATE SCHEMAsur le catalogue cible.
-
-
Pour ingérer depuis Google Ads, vous devez suivre les étapes de Créer une connexion Google Ads.
Créez un pipeline d'ingestion
- Declarative Automation Bundles
- Databricks notebook
Cet tab décrit comment déployer un pipeline d'ingestion à l'aide des Declarative Automation Bundles. Les bundles peuvent contenir des définitions YAML de jobs et de tâches, sont gérés à l’aide de la Databricks CLI, et peuvent être partagés et exécutés dans différents Workspace cibles (comme le développement, la pré-production et la production). Pour plus d'informations, consultez What are Declarative Automation Bundles?.
-
Créez un bundle à l'aide de la CLI Databricks :
Bashdatabricks bundle init -
Ajoutez deux nouveaux fichiers de ressources au bundle :
- Un fichier de définition de pipeline (par exemple,
resources/google_ads_pipeline.yml). - Un fichier de définition de Job qui contrôle la fréquence d'ingestion de données (par exemple,
resources/google_ads_job.yml).
Voir pipeline.ingestion_definition et Exemples.
- Un fichier de définition de pipeline (par exemple,
-
Déployez le pipeline à l'aide de la CLI Databricks :
Bashdatabricks bundle deploy
- Importez le notebook suivant dans votre Databricks Workspace :
-
Laisser la cellule un telle quelle.
-
Modifiez la cellule deux ou trois avec les détails de configuration de votre pipeline, en fonction de votre cas d'utilisation. Voir pipeline.ingestion_definition et Exemples.
-
Cliquez sur Tout exécuter .
Exemples
- Declarative Automation Bundles
- Databricks notebook
L’option manager_account_id n’est pas prise en charge dans les Declarative Automation Bundles. Pour configurer un ID de compte de gestionnaire, utilisez plutôt un Notebook Databricks.
Le fichier de définition de pipeline suivant ingère toutes les tables actuelles et futures depuis un compte :
resources:
pipelines:
pipeline_google_ads:
name: <pipeline-name>
catalog: <destination-catalog>
target: <destination-schema>
ingestion_definition:
connection_name: <connection-name>
objects:
- schema:
source_schema: <account-id>
destination_catalog: <destination-catalog>
destination_schema: <destination-schema>
connector_options:
google_ads_options:
lookback_window_days: <lookback-window-days>
sync_start_date: <sync-start-date>
Le fichier de définition de pipeline suivant sélectionne des tables spécifiques d'un compte à ingérer :
resources:
pipelines:
pipeline_google_ads:
name: <pipeline-name>
catalog: <destination-catalog>
target: <destination-schema>
ingestion_definition:
connection_name: <connection-name>
objects:
- table:
source_schema: <customer-account-id>
source_table: <table1>
destination_catalog: <destination-catalog>
destination_schema: <destination-schema>
destination_table: <destination-table>
connector_options:
google_ads_options:
lookback_window_days: <lookback-window-days>
sync_start_date: <sync-start-date>
- table:
source_schema: <customer-account-id>
source_table: table2
destination_catalog: <destination-catalog>
destination_schema: <destination-schema>
destination_table: <destination-table>
connector_options:
google_ads_options:
lookback_window_days: <lookback-window-days>
sync_start_date: <sync-start-date>
Voici un exemple de fichier de définition de Job :
resources:
jobs:
google_ads_dab_job:
name: google_ads_dab_job
trigger:
# Run this job every day, exactly one day from the last run
# See https://docs.databricks.com/api/workspace/jobs/create#trigger
periodic:
interval: 1
unit: DAYS
email_notifications:
on_failure:
- <email-address>
tasks:
- task_key: refresh_pipeline
pipeline_task:
pipeline_id: ${resources.pipelines.pipeline_google_ads.id}
La spécification de pipeline suivante ingère toutes les tables actuelles et futures d’un compte :
pipeline_spec = {
"name": "<pipeline-name>",
"catalog": "<destination-catalog>",
"schema": "<destination-schema>",
"ingestion_definition": {
"connection_name": "<connection-name>",
"objects": [
{
"schema": {
"source_schema": "<account-id>",
"destination_catalog": "<destination-catalog>",
"destination_schema": "<destination-schema>",
"connector_options": {
"google_ads_options": {
"manager_account_id": "<manager-account-id>",
"lookback_window_days": "<lookback-window-days>",
"sync_start_date": "<sync-start-date>"
}
}
}
}
]
}
}
json_payload = json.dumps(pipeline_spec, indent=2)
create_pipeline(json_payload)
La spécification de pipeline suivante sélectionne des tables spécifiques d'un compte à ingérer :
pipeline_spec = {
"name": "<pipeline-name>",
"catalog": "<destination-catalog>",
"schema": "<destination-schema>",
"ingestion_definition": {
"connection_name": "<connection-name>",
"objects": [
{
"table": {
"source_schema": "<customer-account-id>",
"source_table": "<table1>",
"destination_catalog": "<destination-catalog>",
"destination_schema": "<destination-schema>",
"destination_table": "<destination-table>",
"connector_options": {
"google_ads_options": {
"manager_account_id": "<manager-account-id>",
"lookback_window_days": "<lookback-window-days>",
"sync_start_date": "<sync-start-date>"
}
}
}
},
{
"table": {
"source_schema": "<customer-account-id>",
"source_table": "<table2>",
"destination_catalog": "<destination-catalog>",
"destination_schema": "<destination-schema>",
"destination_table": "<destination-table>",
"connector_options": {
"google_ads_options": {
"manager_account_id": "<manager-account-id>",
"lookback_window_days": "<lookback-window-days>",
"sync_start_date": "<sync-start-date>"
}
}
}
}
]
}
}
json_payload = json.dumps(pipeline_spec, indent=2)
create_pipeline(json_payload)
Fichier de définition de job Declarative Automation Bundles
- Declarative Automation Bundles
Voici un exemple de fichier de définition de job à utiliser avec les Declarative Automation Bundles. Le job s'exécute tous les jours, exactement un jour après la dernière exécution.
resources:
jobs:
google_ads_dab_job:
name: google_ads_dab_job
trigger:
periodic:
interval: 1
unit: DAYS
email_notifications:
on_failure:
- <email-address>
tasks:
- task_key: refresh_pipeline
pipeline_task:
pipeline_id: ${resources.pipelines.pipeline_google_ads.id}
Rapports personnalisés
En plus des tables prédéfinies, vous pouvez définir des tables de rapport personnalisées. Un rapport personnalisé vous permet de choisir une Ressource Google Ads et n'importe quelle combinaison de champs de Ressource, de segments et de métriques. Le connecteur synthétise la Google Ads Query Language (GAQL) query équivalente, la valide par rapport à Google Ads au moment de la planification du pipeline et ingère le résultat dans une table de destination que vous nommez.
Un rapport personnalisé est déclaré sur un objet de type table dont le source_table est défini sur custom_report, la définition du rapport étant fournie sous connector_options.google_ads_options.custom_report_options.
Exemple : un rapport ad_group_ad personnalisé
{
"table": {
"source_schema": "<customer-account-id>",
"source_table": "custom_report",
"destination_catalog": "<destination-catalog>",
"destination_schema": "<destination-schema>",
"destination_table": "my_ad_group_ad_report",
"connector_options": {
"google_ads_options": {
"manager_account_id": "<google-ads-manager-account-id>",
"sync_start_date": "2024-01-01",
"lookback_window_days": 30,
"custom_report_options": {
"resource": "ad_group_ad",
"resource_fields": ["ad_group_ad.ad.id", "ad_group_ad.status"],
"segments": ["segments.date", "segments.device"],
"metrics": ["metrics.impressions", "metrics.clicks", "metrics.cost_micros", "metrics.conversions"]
}
}
}
}
}
destination_table est requis lorsque source_table est custom_report.
Pour les options de configuration des rapports personnalisés, consultez Options de configuration des rapports personnalisés.
Modèles courants
Pour les configurations de pipeline avancées, consultez Modèles courants pour les pipelines d'ingestion gérés.
Étapes suivantes
start, planifiez et configurez des alertes sur votre pipeline. Consultez les Tâches de maintenance courantes du pipeline.