2024-01-01から1年間の記事一覧

【dbt】dbt ~ 環境設定 / Docker 編 ~

dbt

■ はじめに dbt の ドキュメント化(データリネージ機能)を使うために ローカル環境を整備してたら、docker 環境があれば pip よりも簡単に使えることが分かったのでメモしておく 公式ドキュメントより https://docs.getdbt.com/docs/core/installation-ove…

【Snowflake】Snowflake ~ Timezone ~

■ はじめに https://dk521123.hatenablog.com/entry/2024/10/09/155708 で、以下「SQL文」でトラブルシュートしていたのだが、 QUERY_HISTORYビューのSTART_TIMEとEND_TIME(特にSTART_TIME) の時間帯が全く身に覚えない時間帯で実行されていて調べてみたら…

【Snowflake】Snowflake ~ QUERY_HISTORY ビュー ~

■ はじめに https://dk521123.hatenablog.com/entry/2023/08/03/000817 で、Snowflakeのトラブルシューティングのための統計情報を取得する方法を 扱っていたが、 今日、QUERY_HISTORY ビューを使って、トラブルシュートしたので 改めて、別冊で扱ってみた。…

【AWS】Amazon S3 ~ AWS CLI / aws s3 ls ~

AWS

■ はじめに https://dk521123.hatenablog.com/entry/2017/04/01/235355 の続き。 作業で、S3バケット内のファイル容量を調べる必要が出てきて そのファイルの時間推移も併せて調べることとなった。 ちまちまManagement Console上から手作業で調べていたのだ…

【Airflow】Apache Airflow ~ Catchup ~

■ はじめに https://dk521123.hatenablog.com/entry/2024/10/05/234219 の続き。 前回の記事の内容が、ほとんど「Backfill」だったので 今回は、「Catchup」を集中で取り上げる 目次 【1】Catchup 【2】設定方法 1)DAG 2)airflow.cfg 【3】Hello Worl…

【Airflow】Apache Airflow ~ Backfill ~

■ はじめに 久しぶりに、Airflow について扱っており、 リカバリのために「Backfill」ってものを学んだので メモしておく 目次 【1】予備知識:DAG 1)start_date 2)end_date 3)schedule_interval 【2】Backfill 1)backfill コマンド 2)Hello Wor…

【プログラム】正規表現 ~ Email ~

■ はじめに 最近、Email の判定テストを行っていて 不正なEmailアドレスと判定したアドレスに対して 本当にこれ不正?ってことがあったので、 久しぶりに RFC を調べてみた。 こういうこと結構また起きそうなので記録しておく。 タイトルが正規表現だが、メ…

【Snowflake】Snowflake ~ SELECT ... EXCLUDE ~

■ はじめに 小ネタ。 最近小ネタばっかだが、、、 Snowflake の SELECT ... EXCLUDE が何気に便利だったので メモしておく。 目次 【1】SELECT ... EXCLUDE 【2】利点 【3】利用例 1)CREATE TABLE SELECT で利用 【1】SELECT ... EXCLUDE * EXCLUDEで…

【Snowflake】Snowflake ~ ENABLE_UNREDACTED_QUERY_SYNTAX_ERROR ~

■ はじめに 小ネタ。 Snowflake の パラメータ「ENABLE_UNREDACTED_QUERY_SYNTAX_ERROR」について 知ったので、メモっておく。 目次 【1】導入:Snowflake におけるWebUIのクエリ履歴 【2】ENABLE_UNREDACTED_QUERY_SYNTAX_ERROR 【3】設定方法 【1】導…

【dbt】dbt ~ DB/Schema/Table の指定方法 ~

dbt

■ はじめに dbt で、直接指定する以外で、 DB / Schema / Table を指定する方法を取り上げる。 直接指定するよりも、 ローカル・開発・本番環境などで変更する場合に 役立つこともあるので。 目次 【1】DB / Schema を指定する方法 1)profiles.yml で指定…

【PostgreSQL】Snowflake と PostgreSQL の違い

■ はじめに Local開発環境はPostgreSQLで 本番環境はSnowflakeで DB(DWH)間には、DBTで吸収しているが 時にそれでも違いでエラーになる場合があったので 原因をメモっておく 目次 【0】データ準備 1)PostgreSQL環境 2)使用データ 【1】WHERE句でエイ…

【トラブル】SQLFluffでエラー「ConfigLoader.get_global() is deprecated」が発生

■ はじめに SQLFluff でエラーがあり、他のメンバーが解決してくれたのだが 色々と勉強になったので、トラブルをメモっておく 【1】トラブル概要 SQLFluffでLinter実行後に「エラー内容」が表示 【2】エラー内容 ConfigLoader.get_global() is deprecated,…

【Git】Git ~ git diffコマンド ~

Git

■ はじめに https://dk521123.hatenablog.com/entry/2024/08/11/123351 で、以前、git diffコマンドを利用して、 変更されたファイルだけLinterに書けるといった Github Actionsを書いてみた。 で、今日、削除したファイルもそのままLinterに書けてしまって…

【SQL】SQL ~ テーブル差分を調査することを考える ~

SQL

■ はじめに システムのマイグレーションで テーブル差分を調査する必要ができたので そのやり方を調べてみた 目次 【0】データ準備 1)使用データ 【1】方法1:差集合 EXCEPT / MINUS 1)サンプル 【2】方法2:LEFT OUTER JOIN 1)サンプル 【0】デ…

【AWS】boto3 ~ Paginators ~

AWS

■ はじめに 他メンバーのPythonコードを見ていて、 ~~~ paginator = client.get_paginator('list_objects_v2') ~~~ ってでてきて、なんだこれ?ってなったので 調べてみた。 目次 【1】Paginators を知る前に 【2】Paginators 【3】サンプル 例1:Hello …

【Snowflake】Snowflake ~ 囲み文字の除去 ~

■ はじめに Snowflakeで管理しているテーブルのIDに「"123401"」のように ダブルクォーテーションの囲み文字が混じっていた。 除去したいし、そもそも、今更ながら、 シングル・ダブルクォーテーションの違いとか あいまいだったので、その周辺の知識を調べ…

【SQL】SQL ~ 集合演算の応用 ~

SQL

■ はじめに https://dk521123.hatenablog.com/entry/2023/01/16/000000 https://dk521123.hatenablog.com/entry/2024/09/12/003814 で、SQLの集合演算について、扱った。 今回は、SQLの集合演算を利用して、 delete + insert 後のデータ確認してみる。 ラン…

【Snowflake】Snowflake ~ NULLの扱い ~

■ はじめに 小ネタ。 Snowflake の NULL の扱いについて、メモっておく 目次 【1】IFNULL 【2】NULLIF 【3】NULLIFZERO 【4】EQUAL_NULL 【5】IS_NULL_VALUE 【6】COALESCE 【1】IFNULL -- expr1 が NULL の場合は、 expr2 を返す -- それ以外の場合…

【SQL】SQL ~ INTERSECT ~

SQL

■ はじめに https://dk521123.hatenablog.com/entry/2023/01/16/000000 https://dk521123.hatenablog.com/entry/2024/09/12/003814 で、SQLの集合演算の中で 積集合(共通部分の算出)する際の INTERSECT を行うのだが 一度もちゃんと取り上げていなかったの…

【トラブル】【Snowflake】エラー「Transient object cannot be cloned to a permanent object」時の対応

■ はじめに Snowflakeでトラブルシューティングしたので、メモ。 【1】トラブル概要 以下「実行したSQL」のように CREATE TABLE ... CLONE でテーブルのバックアップを試みたところ、 以下「【2】エラー内容」が発生した。 実行したSQL CREATE TABLE demo_…

【Snowflake】Snowflake ~ 関係演算 / 集合論 ~

■ はじめに https://dk521123.hatenablog.com/entry/2023/01/16/000000 で、SQLの一般の集合演算について触れた。 今日、Snowflake 内に格納されているデータを検証するために 差集合を使ったので、その際のことなどを纏めておく 目次 【0】Snowflake の 集…

【dbt】dbt ~ 条件分岐 ~

dbt

■ はじめに dbt を解析しなくてはならず、その中で if文で分岐している箇所があったので それに付随するTipsなどをまとめておく 目次 【1】if文 【2】関連するDBTマクロ 1)is_incremental() 2)load_relation 3)run_query() 【1】if文 * 基本、Pytho…

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

■ はじめに 動的なdbt 実行時でのトラブルシュートを徐々に記録しておく 目次 【1】Airflow + dbt でエラー「Task exited with return code -9」 【2】エラー「'>' not supported between instances of 'Table' and 'int'」 【1】Airflow + dbt でエラー…

【Python】Pandas ~ Parquet ~

■ はじめに Parquet ファイルを扱うことになり、テストデータを作りたいので Pythonであれば、Pandas でParquet を扱うのが一番楽そうなので 個別にまとめておく 目次 【1】インストール 【2】Parquet の書き出し・読み出し 1)出力・書き出し 2)入力・…

【Scala】Scala ~ 正規表現 with Java lib ~

■ はじめに https://dk521123.hatenablog.com/entry/2023/03/18/034704 の続き。 正規表現に関して、Scalaのライブラリは使えなさそうなので Javaのライブラリで実装してみる 【1】サンプル 例1:ファイル名に付加されている日付を取得する import java.ut…

【dbt】Python with dbt ~ rows_affected ~

dbt

■ はじめに dbt の rows_affected を1日中調査してたので 徐々に纏めておく。 目次 【1】rows_affected 【2】Snowflake におけるrows_affected 2)トラブル:CREATE TABLE ... AS SELECT の場合、rows_affected=1を返す 【1】rows_affected * 実行された…

【dbt】dbt ~ Snowflakeテーブル ~

■ はじめに dbt で Snowflake の テーブルを扱うことになり Transientテーブルを永続テーブルに切り替える必要ができたので 調査してみた なお、Transient テーブルなどのSnowflakeのテーブルについて 以下の関連記事を参照のこと Snowflake ~ 基本編 / テ…

【Python】Python ~ match文 ~

■ はじめに https://qiita.com/python_academia/items/a54a6d1dcc5a12875c88 を読んでいた際に、 Scala で気に入っている match文が、Python3.10以降から 使えるとのことので、メモっておく 目次 【1】match文 1)使用上の注意 【2】サンプル 例1:Hello…

【datadog】datadog for Github Actions ~ Monitoring ~

■ はじめに Github Actions の処理結果を datadog で管理する必要ができたので調べてみた。 目次 【0】準備 1)公式ドキュメント:CI Visibility (CI/CDの可視化) 2)前提条件 【1】datadog の設定手順 - その1 1)datadog へのログイン 2)"Get Star…

【dbt】dbt で生成されるSQL文を確認する

dbt

■ はじめに デバッグするために dbt の SQL文を確認する必要ができたので 予習しておく 目次 【1】準備:環境設定 1)DB:PostgreSQL 2)DBTおよびDBTプロジェクト作成 【2】SQL文確認方法 1)Log Level(--log-level debug) 2)SQLファイル出力先 ta…