最近行なったdatatech-jpの活動について

datatech-jp Advent Calendar 2024の4日目です。3日目はid:bynaturessさんの2024/12/03 データエンジニアもくもく会を1年続けた学びでした。私も6~7割くらい参加していますが、色んな話題でわいわいできて楽しいですね。来年もやっていきましょう。 こんにち…

WTTファイナルズ福岡2024を観戦してきた

卓球好きのオタ日記です。有益情報は特にない。 WTT & ファイナルズとは何か? 会場 観戦した試合 佐藤橋本カットマンペア 張本智和 張本美和 ルブラン兄弟 まとめ WTT & ファイナルズとは何か? 卓球やってる人には説明不要だと思うけど、一応。WTTは卓球のワ…

JSON Schemaで組織独自の制約をdbtのyamlに設定する

3行まとめ データに対する期待値を定義するData Reliability Levelという活動を始めています Data Reliability Levelを設定するには「XXXの場合にはAAAの項目は入力が必須」といった条件分岐や項目数も多く、レビューが大変という課題がありました 最近のJSO…

ドクターストレッチの予約画面からGoogle Calendarの予定を作成するブックマークレットを作った

通い始めて二ヶ月が経過したドクターストレッチだが、予約はWebからもできて便利な一方、予定管理をしているGoogle Calendarへの転記が必要でめんどい。予約をすっぽかしたりしたくないので、どうにかしたい。 そこで、ブックマークレットからGoogle Calenda…

ドクターストレッチに通い始めました

ドクターストレッチはマッサージのお店でもジムでもなく、ストレッチに特化したお店です。 週一で通い始めて一ヶ月以上経ったので、感想エントリを書きます。感想を一言で表わすと「面白い」です。 通い始めたきっかけ 昔から体は硬いし、特に東京出張した後…

elementaryで Transaction is aborted due to concurrent updateのエラーが起きる場合の対処方法

dbt

データ品質の可視化などに役に立つelementaryだが、稀に以下のようなエラーが発生することがある。このエントリではこのエラーに対する対応方法について考える。 00:03:24 on-run-end failed, error: Query error: Transaction is aborted due to concurrent…

全日本dbt-osmosisを愛でる会を開催しました

8/26に「全日本dbt-osmosisを愛でる会」を開催しました。パネルディスカッション形式のため、細かい資料はありませんが、当日のアジェンダなどは以下のスライドで公開しているため、雰囲気は感じ取ってもらえるかと思います。 開催の経緯: ノリと勢い 開催当…

知っておくと運用で役に立つbq loadのTips

今日もbq loadが失敗して涙を流していたデータエンジニアのid:syou6162です*1。このエントリではbq loadを使ったデータ取り込みで泣かないで済む、あるいは泣いても致命傷まではいかないようにするための色々なTipsを書きます。 bq loadをベースに書いていま…

Data Contractに向けたProtocol Buffersの調査

背景: データ品質を担保するにはデータソースの品質が重要 データソースの品質を担保する手段としてのData Contract Data Contractの表現方法の一つとしてのProtocol Buffers Data ContractとしてProtocol Buffersを使う データの入出力を一箇所に集約、Prot…

クエリを書くときは確率的な挙動にならないように注意しよう

自分用のメモです。以下のエントリで便利なスクリプトを作りました。 不可解な現象に遭遇 このスクリプトを使って、いくつかのデータを調べていましたが、ぱっと見不思議な現象に遭遇しました。 比較対象のテーブルAとB(クエリは同一のものを仕様。作成元がp…

テーブル比較のクエリを型化するスクリプトを作った

前提 DWHやデータマートのリファクタリング、あるいは軽微なカラム追加をした際、意図せず差分が起きていないかを確認したい場面は多いでしょう 「一個カラムを追加するために一個JOINを増すだけ」と思ったら、JOIN先のテーブルに重複があってfan-outしてい…

Looker Studioの魅力と便利な使い方を紹介します

初めて使ったBIツールはLooker Studioのid:syou6162です。これまでTableau / Looker(≠ Looker Studio) / Metabase / Redash / Connected Sheetsなど色々なBIツールを触ってきましたが、不満は色々ありつつも個人的に一番しっくりきて愛着があるのはLooker St…

BigQueryにexportしたGA4のシャーディングテーブルのスキーマに関するハマリ所

前提: GA4とシャーディングテーブル GA4のイベントデータを仕事で取り扱う人は多いと思う。BigQueryにexportする場合、GA4のイベントデータは[PREFIX]_YYYYMMDDのシャーディングテーブルになっており、さらにその中でevents_YYYYMMDDとevents_intraday_YYYYM…

dbt-project-evaluatorで独自のレイヤリングの制約をCI上で表現する

dbt

背景: 組織独自のレイヤリング構造の制約をCI上で表現したい 課題: CI時にレイヤリングの情報をどう取得するか 解決方法: dbt-project-evaluatorが内部で構築するテーブルを利用する 補足: その他の設定 背景: 組織独自のレイヤリング構造の制約をCI上で表現…

Google Cloud Champion Innovatorに選ばれました

先日のdbtのCommunity spotlightに引き続き、めでたいことが続いてありがたい限りですね。Google Cloud Champion Innovatorに選ばれました。 https://cloud.google.com/innovators/champions/directory?hl=ja&text=yasuhisa より 「そもそもChampion Innovat…

BigQueryを補完する技術: DuckDBとDataflowでのデータ処理入門

背景 & Disclaimer DuckDB 概念や代表的なユースケース 使ってみる 1週間〜一ヶ月などある程度の期間、分析で使いたい場合 便利なCLIツールとして使う 所感 参考 Dataflow 代表的なユースケース 具体例 参考 背景 & Disclaimer BigQueryは非常に便利で、BigQ…

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

複数の企業でデータエンジニアとして求められたスキル

最近「ああ、これ前職でも前々職でもやったことあるなぁ」という仕事があった。データエンジニア(やその関連職種)として働き始めて約5年、3社でフルタイムとして働いてきて「このスキルは業界や組織規模が変わってもデータエンジニアとしてスキルを求められ…

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

dbt

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

最近の外部発表 / 登壇 / 寄稿などの紹介

外部登壇は半年に一回くらいが丁度いいと思ってる人間ですが、最近は色々重なって怒涛のアウトプット月間になってしまったので、やったことをまとめてみます。 Dataplexとdbt-osmosisを活用した「がんばらない」データカタログとメタデータ管理の運用@Data E…

iTermをやめてVSCodeのターミナルに寄せる

背景 担保したいこと 1: ホットキーで一撃で呼び出せる 2: ウィンドウを透過させてターミナルと他のウィンドウを同時に眺められること 調査したこと & 解決方法 ホットキーで呼び出せるか => hammerspoonで割り当てで対応 ターミナルの透過 => 無理そうなの…

個人的な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…

Terraform経由でBigQueryのデータセットを管理する際に必要なメタデータが入力されていることをConftestで担保する

背景 ConftestによるTerraformのポリシーテスト 例: ConftestでBigQueryのデータセットのlabelにownerが設定されていることをテストする 実際の業務への取り込み方 背景 権限管理を含め、BigQueryのデータセットの管理をTerraformで行なっている人は多いと思…