如何更改 dbt 项目中的 google_ads 模式?

How can I change google_ads schema in dbt project?

我有一个 dbt 项目,我正在使用 ad_reporting 模型。 除了 google_ads 之外,所有资源都运行良好。 那是因为我没有 google_ads 架构,而是有 google_ads_us 架构。 我试图在主 dbt_project.yml 文件中更改它:

vars:
    google_ads_schema: google_ads_us

但是当我 运行 这个命令时:

dbt run --select ad_reporting

我一直收到这个错误:

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

HISTORY_ 前缀来自 profiles.yml 文件 (SCHEMA)。

有人知道我还需要更改架构吗?

为了让包找到指定的 vars 它已经定义,你需要做四件事,都在 docs:

中指定

1.确保 google_ads 的 ad_reporting 已启用 -->

# inside your dbt_project.yml

vars:
  ad_reporting__google_ads_enabled: true

2。另外,确保让 dbt 知道在哪里寻找 google_ads 原始数据:

# 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。定义 dbt 将为 google_adsgoogle_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

因为,根据文档:

"默认情况下,此包将在标题为 ( + _stg_google_ads) 和 Google 在您的目标数据库中使用标题为 ( + _google_ads) 的架构的广告最终模型。"

4。指定您要使用的 API(Google Adwords 或 Google Ads):

# inside your dbt_project.yml

vars:
    api_source: google_ads  # adwords by default and is case sensitive!