Open1
【dbt】dbt エラー対応
ephemeralを含むクエリでdbt buildがコケる
環境:TROCCO,BigQuery
- ローカルではエラーなく実行できる、TROCCOのジョブ実行でエラーになる
- TROCCOのジョブ実行エラー画面
1 of 1 START sql table model 対象データセット.対象テーブル ............. [RUN]
BigQuery adapter: https://console.cloud.google.com/bigquery?〜〜〜〜〜〜
1 of 1 ERROR creating sql table model 対象データセット.対象テーブル .... [ERROR in 1.75s]
Finished running 1 table model in 0 hours 0 minutes and 6.55 seconds (6.55s).
Completed with 1 error and 0 warnings:
Database Error in model 対象データセット__対象テーブル (models/対象データセット/対象データセット__対象テーブル.sql)
Table "__dbt__cte__対象ephemeralクエリ" must be qualified with a dataset (e.g. dataset.table).
compiled Code at target/run/dbt_project/models/対象データセット/対象データセット__対象テーブル.sql
エラー詳細は、https://console.cloud.google.com/bigquery?〜〜〜〜〜〜
で確認
~~
with __dbt__cte__データセット名__ephemeralモデル名 as (
~~
FROM __dbt__cte__ephemeralモデル名
マクロでエイリアス変更してたのが影響している。FROMの段階で間違ってデータセット名が削られてしまっていた
{% macro generate_alias_name(custom_alias_name, node) -%}
{%- if custom_alias_name -%}
{{ custom_alias_name | trim }}
{%- else -%}
{%- set schema_name = node.schema -%}
{%- set model_name = node.name -%}
{%- set schema_prefix = schema_name ~ "__" -%}
{%- if model_name.startswith(schema_prefix) -%}
{{ model_name[schema_prefix|length:] }}
{%- else -%}
{{ model_name }}
{%- endif -%}
{%- endif -%}
{%- endmacro %}
対応
-
データセット名__ephemeralモデル名.sql
という命名規則やめて -
ephemeral__モデル名.sql
に変更、フォルダはデータセット名フォルダに入れとく
残
なぜ、ローカルでは問題なく実行できるか未確認