dbt

dbtのCommunity spotlightに選ばれました

dbt

Twitterではもう言ってましたが、めでたいやつです。 dbtのLinkedInの投稿 そもそも「Community spotlightとは何ぞや?」という話ですが The dbt Community is where analytics engineering lives and grows, and you're a part of it! Every quarter we'll b…

dbtのrun-operationの出力情報を制御する

dbt

背景: dbt run-operationは便利 dbtのサブコマンドであるrun-operationは結構便利で、標準のコマンドでサポートされていないようなオペレーションを簡単に実行することができる。例えば、以下のようなものは日常的に自分は利用している。 課題: 出力形式がち…

アドホックに作ったdbtのモデルのライフサイクルを管理する

dbt

背景: アドホックなモデルをいつまでも残したくない dbtを使う場合、ある程度規則に沿ったレイヤリングの元に運用されることが多いと思う(例: staging / raw vault / fact & dim / martなど)。品質が必要な場合はこのレイヤリングに沿ってモデルを作ることに…

個人的なdbtの推しポイントを書いてみる

dbt

dbtや同じ系統のDataformなど、ELTの特にTransform部分に強みを持つツールを使い始めて大体3年になる。主観だけど、それなりに使い倒している部類だと思う。 開発効率を計測するデータ基盤の管理にDataformを使ってみた - yasuhisa's blog dbtを触ってみた感…

dbtのnot_nullテストはオプションによって実行されるSQLが異なる

dbt

dbtを使っていなら、not_nullテストは何度も書くことになると思う。このテストを書いていて「手元では通るが、CIでは通らない」という一見謎現象に思えることにブチ当たったのでメモ。 起きた現象 手元からnot_nullテストを書いた。コンパイル済みのSQLは以…

dbtで見やすいER図を生成する

背景: dbtを使っていてもER図は欲しい! どうやってER図を生成するか どうやってER図を見やすくするか まとめ 背景: dbtを使っていてもER図は欲しい! dbtはモデル間のリネージなど可視化が得意なツールではありますが、万能なわけではありません。モデルの生…

DWH改善に生かす! 入門elementary

前提: これは何? dbtを使ったデータプロダクトを作っている社内のチームメンバー向けに書いた勉強会用のドキュメントです 社外に公開できるように少し抽象化して書いてます DWHに限らずdbtを使ったデータプロダクトで生かせる話ですが、分かりやすさのために…

elementaryを使ってデータの正確性に関わるデータ品質の実装状況を可視化する

背景: データ品質を可視化したい 実装: elementaryを使って、正確性のデータ指標を可視化する 実例: ダミーデータを使った可視化 まとめ 背景: データ品質を可視化したい 運用しているDWHでデータ品質にまつわる問題で苦労したことがない人は少ないと思いま…

dbtのモデルとLooker Studioのレポートの依存関係をexposureで表現して、データ管理を効率的に行なおう

シリーズの第三弾です。読者の宿題にしてたけど、誰も書いてくれなさそうだったので結局自分で書きました。 背景 Looker StudioはGoogle Workspaceを使っていれば基本的に無料で使えますし*1、権限管理にGoogle Groupとも連携できるので、人気のBIの一つだと…

dbtのモデルとConnected Sheetsの依存関係をexposureで表現して、データ管理を効率的に行なおう

以下のConnected Sheets版です。これはかなり便利なものができたと、自画自賛してます。 背景 Connected Sheetsをdbtのexposureとして取り込む 見所 Connected Sheetsからのクエリか判断する BigQuery Scripting経由で発行されたクエリでもreferenced_tables…

dbt cloudのジョブの実行時間の推移をelementaryで可視化する

dbt

dbt cloudのジョブの実行時間の推移を把握したい DWHやデータマートの作成をdbtでやっていて、それをさらに後段の処理が参照している場合「7時までにdbt buildの処理が終わっている必要がある!」などの何らかの時間的な制約がある場合が多いと思います。dbt …

dbtのsource freshnessの実行結果をelementaryに収集させる

dbt

データレイクの可用性を可視化したい データ品質には様々な項目がありますが、可用性はその中でも重要な項目です。データレイクありきで、dbtを使って生成するDWHやデータマートの可用性の可視化は以下のエントリで試していました。 DWHやデータマートと同様…

派生先テーブルの参照回数も考慮して安全にテーブルを撤退する

3行まとめ テーブルの撤退時にはテーブルの参照回数を見ることが多いと思いますが、テーブル単独の参照回数を見るだけだと不十分なことが多いです 派生先のテーブルの参照回数まで考慮すると、テーブルが撤退できるか安全に判断することができます リネージ…

dbtのモデルとTableau上で使われているWorkbookの依存関係をexposureで表現して、データ管理を効率的に行なおう

3行まとめ dbtのジョブが失敗した際やテーブルの廃止検討の際に、BI上のどのダッシュボードで利用されている(データリネージ)か知るのは重要です TableauのGraphQLのAPIからWorkbookとBigQuery上のモデルの埋め込みの関係を知ることができます dbtのモデルと…

dbtで管理しているデータの可用性をelementaryで分析する

dbt

データの可用性を可視化したい データの可用性の解像度を上げたい: elementary-data elementaryによる細かい可視化 大雑把にデータセット単位で可用性を可視化したい まとめ データの可用性を可視化したい データ品質は正確性や最新性など様々な項目に分解す…

BigQueryの列レベルのアクセス制御とポリシータグの調査メモ

なぜ列レベルのアクセス制御とポリシータグが必要か Terraformでポリシータグの作成および権限付与 ポリシータグの付与の仕方 dbt経由の場合 bq loadを使う場合 運用上の注意点 まとめ なぜ列レベルのアクセス制御とポリシータグが必要か 「テーブルの全ての…

dbt-osmosisの運用問題について考える

追記 以下、色々書いていますが、dbt-osmosisの作者に課題感を共有した上でそれを解決したPull Requestを取り込んでもらい、よりシンプルに解決できるようになりました。 meta.osmosis_keep_descriptionを付与した上で--force-inheritanceを使えば意図通りに…

vscode-dbt-power-userでdbtの開発やレビューを効率化する

dbt

背景 vscode-dbt-power-userがよかったところ 定義にさっと行ける / 戻れる(Go to definitionが使える) VSCode内でモデル間のリネージが見れる VSCode内からdbtのモデルをさっと実行できる モデルファイルの単独の実行も簡単 コンパイル済みのSQLファイルを…

BigQueryのシャーディングテーブル(日付別テーブル)でフルスキャンを避ける方法 with BigQuery Scripting & dbt

SQLをレビューしていて、シャーディングテーブル(日付別テーブル)をサブクエリを使ってフィルタしているものがあった。BigQureyのシャーディングテーブルはWHERE句で日付の条件を書いてやるとスキャン範囲を限定することができるので便利ではあるが、サブク…

dbt-osmosisを利用して、なるべくコストを抑えつつ効率的にメタデータ管理を行なう

3行まとめ ビジネスメタデータはデータ生成者にとってもデータ活用者にとっても重要 しかし、カラムのメタデータを同じ説明をあちこちに書いていくのは大変... dbt-osmosisはビジネスメタデータの管理を省力化したり、自動化できる便利なツール 3行まとめ 背…

dbt Cloudが自動で作成したBigQueryのデータセットのうち、古いデータセットを削除するマクロを運用する

dbt

背景: dbt CloudはCIの意味でも便利 課題: Pull Requestを閉じてもデータセットは自動では消えない場合がある 解決案: 作成から一定期間立ったデータセットはマクロで定期的に掃除させる その他の解決策 考慮すべき点 背景: dbt CloudはCIの意味でも便利 仕…

dbtのsource簡単にimportできるdbt-source-importerを作りました

dbt

背景 仕事でdbtをバシバシ使っています*1 データリネージやドキュメントの観点でdbtのSourcesもよく定義しています 手動で定義するのは大変なので、dbt-helperを使って自動でimportしていました 問題点 自社の環境でdbt-helperを使うと、1つのテーブルのimpo…

dbtを使っている場合のバージョン間の差分をいい感じに出すスクリプトを作った

前回に引き続き、dbtの運用メモです。簡単にまとめると、こういう感じです。 dbtを使ってDWHを構築しているが、バージョン管理している dbtの都合上、バージョン間の差分が確認しにくい いい感じに差分を確認できるスクリプトを作った 背景 背景: dbtの制約…

dbtでrunの前にtestを実行したい場合にephemeralを使う

dbt運用の小技です。品質の高いデータをユーザーに提供するために一工夫が必要だったので、メモしておきます。 課題感: testを行なってからrunしたい dbtはSQLやデータに対してテスト(dbt test)を行なうことができます。データ品質を高めていく上で、重要な…

社内LTで「本当にあった(ら)怖いデータの話 ~dbtのススメ~」について話しました

dbt

dbtの紹介 タイトルの通り、モノタロウの(非公式)勉強会でdbtのことについて話してきました。すでに使っている人には新しい情報はほぼないですが、他部門の方に「データ触ってるとこういうところ辛いよね〜」「dbt使うといい感じに解決できるケースもありま…

dbtを触ってみた感想

データエンジニア系の勉強会で最近dbtがぱらぱらと話題に出てくるようになった & 4連休ということで、夏休みの自由研究がてらdbtを触ってみました。書いてる人のバックグラウンドは以下の通り。 DWHやデータマートの構築のためのETLツールを模索中(特にTの部…