I have a dbt project and I'm using ad_reporting model. all the sources are working good, except than google_ads. and that's because I don't have google_ads schema, instead I have google_ads_us schema. I tried to change it in main dbt_project.yml file:

vars:     google_ads_schema: google_ads_us 

but still when I'm running this command:

dbt run --select ad_reporting 

I keep get this error:

Database Error in model stg_google_ads (models\stg_google_ads.sql) SQL compilation error: Object 'DATABASE.HISTORY_GOOGLE_ADS.GOOGLE_ADS__URL_AD_ADAPTER' does not exist or not  authorized. compiled SQL at target\run\ad_reporting\models\stg_google_ads.sql 

the HISTORY_ prefix is from profiles.yml file (SCHEMA).

Anyone know where else I need to change the schema?

Tag:google-ads-api, dbt

3 comments.

  1. Aleix CC

    For the package to find the specified vars it has defined, you will need to do four things, all specified in the docs:

    1. Make sure that ad_reporting for google_ads is enabled -->

    # inside your dbt_project.yml vars: ad_reporting__google_ads_enabled: true

    2. Also, make sure that you let dbt know where to look for the google_ads raw data:

    # inside your dbt_project.yml vars: google_ads_database: your_database_name # in our case, `raw` google_ads_schema: your_schema_name # in our case, `google_ads`

    3. Define the schemas where dbt will build the models for both google_ads and google_ads_source -->

    # inside your dbt_project.yml models: google_ads: +schema: my_new_schema_name # leave blank for just the target_schema google_ads_source: +schema: my_new_schema_name # leave blank for just the target_schema

    Since, as according to the docs:

    "By default this package will build the Google Ads staging models within a schema titled (<target_schema> + _stg_google_ads) and the Google Ads final models with a schema titled (<target_schema> + _google_ads) in your target database."

    4. Specify which API you're going to use (Google Adwords or Google Ads):

    # inside your dbt_project.yml vars: api_source: google_ads # adwords by default and is case sensitive!
    1. riki

      thank you for your answer. I did that, and now I get another error: dbt found two resources with the name "google_ads__url_ad_adapter". Since these resources have the same name, dbt will be unable to find the correct resource when ref("google_ads__url_ad_adapter") is used. To fix this, change the name of one of these resources: - model.google_ads.google_ads__url_ad_adapter (models\url_google_ads\google_ads__url_ad_adapter.sql) - model.google_ads.google_ads__url_ad_adapter (models\url_adwords\google_ads__url_ad_adapter.sql) but adwords is the default choice. how can I change it?

    2. Aleix CC

      Forgot to add that you also need to specify the API you're going to use (Google Adwords or Google Ads). Updated the answer accordingly :)

Add a new comment.