■ はじめに dbt の ドキュメント化(データリネージ機能)を使うために ローカル環境を整備してたら、docker 環境があれば pip よりも簡単に使えることが分かったのでメモしておく 公式ドキュメントより https://docs.getdbt.com/docs/core/installation-ove…
■ はじめに https://dk521123.hatenablog.com/entry/2024/10/09/155708 で、以下「SQL文」でトラブルシュートしていたのだが、 QUERY_HISTORYビューのSTART_TIMEとEND_TIME(特にSTART_TIME) の時間帯が全く身に覚えない時間帯で実行されていて調べてみたら…
■ はじめに https://dk521123.hatenablog.com/entry/2023/08/03/000817 で、Snowflakeのトラブルシューティングのための統計情報を取得する方法を 扱っていたが、 今日、QUERY_HISTORY ビューを使って、トラブルシュートしたので 改めて、別冊で扱ってみた。…
■ はじめに https://dk521123.hatenablog.com/entry/2017/04/01/235355 の続き。 作業で、S3バケット内のファイル容量を調べる必要が出てきて そのファイルの時間推移も併せて調べることとなった。 ちまちまManagement Console上から手作業で調べていたのだ…
■ はじめに https://dk521123.hatenablog.com/entry/2024/10/05/234219 の続き。 前回の記事の内容が、ほとんど「Backfill」だったので 今回は、「Catchup」を集中で取り上げる 目次 【1】Catchup 【2】設定方法 1)DAG 2)airflow.cfg 【3】Hello Worl…
■ はじめに 久しぶりに、Airflow について扱っており、 リカバリのために「Backfill」ってものを学んだので メモしておく 目次 【1】予備知識:DAG 1)start_date 2)end_date 3)schedule_interval 【2】Backfill 1)backfill コマンド 2)Hello Wor…
■ はじめに 最近、Email の判定テストを行っていて 不正なEmailアドレスと判定したアドレスに対して 本当にこれ不正?ってことがあったので、 久しぶりに RFC を調べてみた。 こういうこと結構また起きそうなので記録しておく。 タイトルが正規表現だが、メ…
■ はじめに 小ネタ。 最近小ネタばっかだが、、、 Snowflake の SELECT ... EXCLUDE が何気に便利だったので メモしておく。 目次 【1】SELECT ... EXCLUDE 【2】利点 【3】利用例 1)CREATE TABLE SELECT で利用 【1】SELECT ... EXCLUDE * EXCLUDEで…
■ はじめに 小ネタ。 Snowflake の パラメータ「ENABLE_UNREDACTED_QUERY_SYNTAX_ERROR」について 知ったので、メモっておく。 目次 【1】導入:Snowflake におけるWebUIのクエリ履歴 【2】ENABLE_UNREDACTED_QUERY_SYNTAX_ERROR 【3】設定方法 【1】導…
■ はじめに dbt で、直接指定する以外で、 DB / Schema / Table を指定する方法を取り上げる。 直接指定するよりも、 ローカル・開発・本番環境などで変更する場合に 役立つこともあるので。 目次 【1】DB / Schema を指定する方法 1)profiles.yml で指定…
■ はじめに Local開発環境はPostgreSQLで 本番環境はSnowflakeで DB(DWH)間には、DBTで吸収しているが 時にそれでも違いでエラーになる場合があったので 原因をメモっておく 目次 【0】データ準備 1)PostgreSQL環境 2)使用データ 【1】WHERE句でエイ…
■ はじめに SQLFluff でエラーがあり、他のメンバーが解決してくれたのだが 色々と勉強になったので、トラブルをメモっておく 【1】トラブル概要 SQLFluffでLinter実行後に「エラー内容」が表示 【2】エラー内容 ConfigLoader.get_global() is deprecated,…
■ はじめに https://dk521123.hatenablog.com/entry/2024/08/11/123351 で、以前、git diffコマンドを利用して、 変更されたファイルだけLinterに書けるといった Github Actionsを書いてみた。 で、今日、削除したファイルもそのままLinterに書けてしまって…
■ はじめに システムのマイグレーションで テーブル差分を調査する必要ができたので そのやり方を調べてみた 目次 【0】データ準備 1)使用データ 【1】方法1:差集合 EXCEPT / MINUS 1)サンプル 【2】方法2:LEFT OUTER JOIN 1)サンプル 【0】デ…
■ はじめに 他メンバーのPythonコードを見ていて、 ~~~ paginator = client.get_paginator('list_objects_v2') ~~~ ってでてきて、なんだこれ?ってなったので 調べてみた。 目次 【1】Paginators を知る前に 【2】Paginators 【3】サンプル 例1:Hello …
■ はじめに Snowflakeで管理しているテーブルのIDに「"123401"」のように ダブルクォーテーションの囲み文字が混じっていた。 除去したいし、そもそも、今更ながら、 シングル・ダブルクォーテーションの違いとか あいまいだったので、その周辺の知識を調べ…
■ はじめに https://dk521123.hatenablog.com/entry/2023/01/16/000000 https://dk521123.hatenablog.com/entry/2024/09/12/003814 で、SQLの集合演算について、扱った。 今回は、SQLの集合演算を利用して、 delete + insert 後のデータ確認してみる。 ラン…
■ はじめに 小ネタ。 Snowflake の NULL の扱いについて、メモっておく 目次 【1】IFNULL 【2】NULLIF 【3】NULLIFZERO 【4】EQUAL_NULL 【5】IS_NULL_VALUE 【6】COALESCE 【1】IFNULL -- expr1 が NULL の場合は、 expr2 を返す -- それ以外の場合…
■ はじめに https://dk521123.hatenablog.com/entry/2023/01/16/000000 https://dk521123.hatenablog.com/entry/2024/09/12/003814 で、SQLの集合演算の中で 積集合(共通部分の算出)する際の INTERSECT を行うのだが 一度もちゃんと取り上げていなかったの…
■ はじめに Snowflakeでトラブルシューティングしたので、メモ。 【1】トラブル概要 以下「実行したSQL」のように CREATE TABLE ... CLONE でテーブルのバックアップを試みたところ、 以下「【2】エラー内容」が発生した。 実行したSQL CREATE TABLE demo_…
■ はじめに https://dk521123.hatenablog.com/entry/2023/01/16/000000 で、SQLの一般の集合演算について触れた。 今日、Snowflake 内に格納されているデータを検証するために 差集合を使ったので、その際のことなどを纏めておく 目次 【0】Snowflake の 集…
■ はじめに dbt を解析しなくてはならず、その中で if文で分岐している箇所があったので それに付随するTipsなどをまとめておく 目次 【1】if文 【2】関連するDBTマクロ 1)is_incremental() 2)load_relation 3)run_query() 【1】if文 * 基本、Pytho…
■ はじめに 動的なdbt 実行時でのトラブルシュートを徐々に記録しておく 目次 【1】Airflow + dbt でエラー「Task exited with return code -9」 【2】エラー「'>' not supported between instances of 'Table' and 'int'」 【1】Airflow + dbt でエラー…
■ はじめに Parquet ファイルを扱うことになり、テストデータを作りたいので Pythonであれば、Pandas でParquet を扱うのが一番楽そうなので 個別にまとめておく 目次 【1】インストール 【2】Parquet の書き出し・読み出し 1)出力・書き出し 2)入力・…
■ はじめに https://dk521123.hatenablog.com/entry/2023/03/18/034704 の続き。 正規表現に関して、Scalaのライブラリは使えなさそうなので Javaのライブラリで実装してみる 【1】サンプル 例1:ファイル名に付加されている日付を取得する import java.ut…
■ はじめに 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 ~ 基本編 / テ…
■ はじめに https://qiita.com/python_academia/items/a54a6d1dcc5a12875c88 を読んでいた際に、 Scala で気に入っている match文が、Python3.10以降から 使えるとのことので、メモっておく 目次 【1】match文 1)使用上の注意 【2】サンプル 例1:Hello…
■ はじめに Github Actions の処理結果を datadog で管理する必要ができたので調べてみた。 目次 【0】準備 1)公式ドキュメント:CI Visibility (CI/CDの可視化) 2)前提条件 【1】datadog の設定手順 - その1 1)datadog へのログイン 2)"Get Star…
■ はじめに デバッグするために dbt の SQL文を確認する必要ができたので 予習しておく 目次 【1】準備:環境設定 1)DB:PostgreSQL 2)DBTおよびDBTプロジェクト作成 【2】SQL文確認方法 1)Log Level(--log-level debug) 2)SQLファイル出力先 ta…