【トラブル】【dbt】動的なdbt 実行時でのトラブル

■ はじめに

動的なdbt 実行時でのトラブルシュートを徐々に記録しておく

目次

【1】Airflow + dbt でエラー「Task exited with return code -9」
【2】エラー「'>' not supported between instances of 'Table' and 'int'」

【1】Airflow + dbt でエラー「Task exited with return code -9」

dbt を設定している Airflow からの以下のエラー内容が表示し
SQLが実行されなかった

1)エラー内容

Task exited with return code -9

# dbt を設定している Airflow からのエラー
#  => エラーの意味は、後述「3)原因」を参照

2)エラーが発生するDBTコード

{% set table_count=run_query('SELECT * FROM demo_db.demo_schema.demo_table') %}
{% if table_count!=None %}
 ...

3)原因

dbt で大量データを変数「table_count」に格納したため
メモリ不足となり、Airflowから中断処理が走ったため

https://cloud.google.com/composer/docs/how-to/using/troubleshooting-dags?hl=ja#task-fails-with-negsignalsigkill

より抜粋
~~~~~~
タスクによっては、Airflow ワーカーに割り当てられているメモリよりも
多くのメモリを使用する場合があります。
このような状況では、Negsignal.SIGKILL によって中断される可能性があります。
...
------
{local_task_job.py:102} INFO - Task exited with return code Negsignal.SIGKIL
------
Negsignal.SIGKILL はコード -9 として表示される場合もあります。

4)解決案

* カウントなどを使ってメモリ消費しないようなコードに書き変えた

修正例

{% set table_count=run_query('SELECT COUNT(*) FROM demo_db.demo_schema.demo_table') %}
{% if table_count.columns[0].values()[0]>0 %}
 ...

【2】エラー「'>' not supported between instances of 'Table' and 'int'」

カウントをdbtで実行した結果を変数に格納した際に
以下のエラーが発生する。

1)エラー内容

'>' not supported between instances of 'Table' and 'int'

2)エラーが発生するDBTコード

{% set table_count=run_query('SELECT COUNT(*) FROM demo_db.demo_schema.demo_table') %}
{% if table_count>0 %} <!-- ★ここでエラー★ -->
 ...

3)原因

変数「table_count」は、件数(int)ではなく
dbtのResponseオブジェクト(Table)として返却されているため

4)解決案

* 以下のサイトに解決例が提示されている

https://stackoverflow.com/questions/73537090/dbt-getting-error-not-supported-between-instances-of-table-and-int

{% if table_count.columns[0].values()[0]>0 %} <!-- .columns[0].values()[0]を追加 -->

関連記事

dbt ~ 環境設定編 ~
https://dk521123.hatenablog.com/entry/2023/12/16/152147
dbt ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2023/06/30/000000
dbt ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2023/05/30/151003
dbt ~ 条件分岐 ~
https://dk521123.hatenablog.com/entry/2024/09/11/003301
dbt 設定初期時でのトラブル
https://dk521123.hatenablog.com/entry/2023/06/19/000000
dbt を v1.8 に更新後エラー
https://dk521123.hatenablog.com/entry/2024/08/24/002455