How can I change google_ads schema in dbt project?
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?
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: true2. 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_schemaSince, 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!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?
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 :)