dbt
◾️はじめに https://dk521123.hatenablog.com/entry/2023/12/04/000000 の続き。 dbt の materialized='incremental'で、 個人的に少し学びがあったので、メモしておく 目次 【1】やりたいこと 補足:DELETE+INSERTに関して 【2】サンプル 補足:実際には…
◾️はじめに 小ネタ。 dbtマクロ load_relation() について扱う 目次 【1】load_relation() 1)Relation object 【2】サンプル 【3】使用例 【1】load_relation() https://docs.getdbt.com/reference/dbt-jinja-functions/adapter#load_relation * テー…
◾️はじめに https://dk521123.hatenablog.com/entry/2025/05/26/132317 の続き。 dbtのsnapshot機能の座学はわかったので 今回は、dbt snapshotコマンドを実行して Hello world的なことをやってみる 目次 【1】前提条件 1)開発環境 【2】Hello world 0…
◾️はじめに 病院の待ち時間で、暇だったので 前から気になっていた「dbt snapshot」について調べていたら、 自分がイメージしている機能とは違っていた。 また、結構知らないこと(例えば、SCD(Slowly Change Dimensions)など) があったので、メモしておく …
◾️はじめに 小ネタ。 前から気になっていた dbt の「+ prefix (e.g. +materialized)」 について、メモっておく 目次 【1】+ prefix 【2】目的1:設定とリソースパスを明確するため 1)補足:必須ではなく推奨レベル 【3】目的2:辞書型入力時 例1: p…
◾️はじめに 今回は、dbt の config について扱う 目次 【1】config 1)profiles.yml との住み分け 【2】configの設定方法 1)config() での設定 2)models/properties.yml での設定 3)dbt_project.yml での設定 【3】configの設定内容 1)Snowflake…
◾️はじめに dbt の target について取り扱う 目次 【1】target 1)Common 2)Snowflake 3)Postgres/Redshift 【2】profiles.yml との関係 1)サンプル 【3】サンプル 例1:config.enabled + target.type でDBごとで切り替える 【1】target * ウェ…
◾️はじめに dbtの変数 var についてトラブルがあって 調べてみたのでまとめておく。 その中で、env_var()ってのも知ったので ついでにメモっておく 目次 【1】変数 - var() 1)参照方法 2)設定方法1 - dbt_project.ymlで設定 3)設定方法2 - コマンド…
◾️はじめに https://dk521123.hatenablog.com/entry/2024/07/21/234811 の続き。 今回は、dbt CLI「dbt run-operation」コマンドをメモる。 目次 【1】dbt run-operation 1)構文 【2】オプション 1)--args ARGS 2)--print / --no-print 3)-q, --qu…
◾️はじめに 今回は、dbt Model / Macro内でSQL実行するための関数「run_query」 およびその周辺で使うTipsなどなどについてメモっておく 目次 【1】run_query関数 【2】set関数 設定方法1:set xxx="xxx" 設定方法2:set xxx ... endset 【3】execute変…
◾️はじめに https://dk521123.hatenablog.com/entry/2024/07/21/234811 の続き。 今回は、dbt CLI「dbt show」コマンドをメモる。 目次 【1】dbt show 【2】オプション 1)--inline 2)--limit n 【1】dbt show * 指定したModelや任意のSELECT文の出力…
◾️はじめに https://dk521123.hatenablog.com/entry/2024/07/20/034930 の続き。 Python の dbtRunner を使った簡単なサンプルを作ってみる 目次 【1】前準備 1)SQL 【2】INSERT 1)SQL 2)Pythonコード 【3】SELECT 1)Pythonコード 【1】前準備 *…
◾️はじめに 現在扱っているテーブル一覧が欲しいってニーズがあり、 dbt model から取得しようとしたら、 dbt list / dot lsコマンドから取得できることが分かったので 調べてみた 目次 【0】何に使える? 【1】dbt list / dbt ls 【2】オプション 1)--…
■ はじめに 小ネタ。 dbt CLI の --emptyフラグ についてメモっておく 目次 【1】--emptyフラグ 【2】使用上の注意 【3】使いどころ 【4】--emptyあれこれ 1)使用例 2)--emptyかどうかの判断 【1】--emptyフラグ * --emptyフラグを付与することによ…
■ はじめに dbt の version 更新するって話もあるので dbt の version更新についてメモっておく 最近になって dbt v1.9 がリリースされてる だけど、Dec 9, 2024にリリースして Dec 8, 2025で サポートキレるって1年間だけってきついな、、、 目次 【1】dbt…
■ はじめに https://dk521123.hatenablog.com/entry/2023/11/29/003751 の続き。 DBT の Macro 作ったので、実用的な例をメモしておく 目次 【1】macro の引数 1)デフォルト引数 【2】例外 1)例外をスローする 【3】コメント文 【4】デバッグログ機…
■ はじめに dbt の ドキュメント化(データリネージ機能)を使うために ローカル環境を整備してたら、docker 環境があれば pip よりも簡単に使えることが分かったのでメモしておく 公式ドキュメントより https://docs.getdbt.com/docs/core/installation-ove…
■ はじめに dbt で、直接指定する以外で、 DB / Schema / Table を指定する方法を取り上げる。 直接指定するよりも、 ローカル・開発・本番環境などで変更する場合に 役立つこともあるので。 目次 【1】DB / Schema を指定する方法 1)profiles.yml で指定…
■ はじめに dbt を解析しなくてはならず、その中で if文で分岐している箇所があったので それに付随するTipsなどをまとめておく 目次 【1】if文 1)構文 2)演算子 【2】関連するDBTマクロ 1)is_incremental() 2)load_relation 3)run_query() 【3…
■ はじめに 動的なdbt 実行時でのトラブルシュートを徐々に記録しておく 目次 【1】Airflow + dbt でエラー「Task exited with return code -9」 【2】エラー「'>' not supported between instances of 'Table' and 'int'」 【3】エラー「Model XXX depen…
■ はじめに dbt の rows_affected を1日中調査してたので 徐々に纏めておく。 目次 【1】rows_affected 【2】Snowflake におけるrows_affected 2)トラブル:CREATE TABLE ... AS SELECT の場合、rows_affected=1を返す 【1】rows_affected * 実行された…
■ はじめに dbt で Snowflake の テーブルを扱うことになり Transientテーブルを永続テーブルに切り替える必要ができたので 調査してみた なお、Transient テーブルなどのSnowflakeのテーブルについて 以下の関連記事を参照のこと Snowflake ~ 基本編 / テ…
■ はじめに デバッグするために dbt の SQL文を確認する必要ができたので 予習しておく 目次 【1】準備:環境設定 1)DB:PostgreSQL 2)DBTおよびDBTプロジェクト作成 【2】SQL文確認方法 1)Log Level(--log-level debug) 2)SQLファイル出力先 ta…
■ はじめに https://dk521123.hatenablog.com/entry/2024/08/23/012045 で、dbt version を v1.7 -> v1.8 に アップグレードした時に トラブルが発生したので、そのトラブルシュートをメモっておく なお、トラブルに関しては、以下の公式のIssueで既に挙げら…
■ はじめに https://dk521123.hatenablog.com/entry/2023/11/29/003751 の続き。 小ネタ。 DBTにおいて、各DWH(DB)により、処理を切り替える方法を記載する 目次 【1】adapter object 1)dispach メソッド 【2】サンプル 例1:Hello world 【1】adapt…
■ はじめに https://dk521123.hatenablog.com/entry/2024/07/20/034930 で、 dbt の run とか show とか使ったが dbt CLI (dbt コマンド)として改めてまとめておいた方がよさそうなので 徐々にではあるが、まとめていく。 目次 【1】dbt CLI 1)環境設定…
■ はじめに Python から dbt を使う必要がでてきたので、メモ。 目次 【1】環境設定 【2】dbt の Python モジュール 1)dbtRunner 2)dbtRunnerResult 【3】補足1:tags 【1】環境設定 * 今回は、以下の構成で行う Items Values Memo OS Windows11 DB…
■ はじめに https://dk521123.hatenablog.com/entry/2024/02/28/225002 の続き。 SQL の Linter (リンター) で「SQLFluff」がでてくるが、 どうも「sqlfmt」と併用して使うことも多いみたいなので 調べてみた。 目次 【1】sqlfmt 【2】環境構築 【3】Lint…
■ はじめに https://dk521123.hatenablog.com/entry/2023/12/07/060129 の続き。 今回は、Delete and Insert について、深堀っていく 目次 【1】構文 【2】サンプル 【3】補足:処理フロー 1)実際のログ 【1】構文 * delete and Insert に関しては、以…
■ はじめに https://dk521123.hatenablog.com/entry/2023/12/07/060129 の続き。 今回は、Update or Insert (Upsert)について、深堀っていく ついでに、普通の Insert も載せておく。 目次 【1】構文 【2】incremental_strategy 1)incremental_strateg…