terraform-provider-googleにgoogle_bigquery_datasetのバグ報告して、修正コードを取り込んでもらった話

仕事でGoogle Cloudのリソース管理にTerraformを使っていて、コードは一切変更していないのにterraform planで意図していない差分が出たり、terraform applyが通らなくなって手動でリソースの修正が必要になって困ったケースがありました。本家のterraform-p…

GKE上で動くPythonのコードのログをいい感じに出力する

秋のログ整理週間です。Cloud Loggingに出力されるログをもっといい感じにしようと思って試行錯誤してます。 太古からGKE上のloggingをいい感じにするのは悩みの種でした。結論としては、Cloud Loggingのパッケージを使うしかなさそう。 ところで、本番環境…

Renovateでsqlfluffとsqlfluff-templater-dbtは同時にバージョンを上げるようにgroupの設定をする

小ネタです。 依存ライブラリのバージョン管理にRenovateを長いこと使っています。ChangeLogを自分で見に行かなくてよいので、大分楽をさせてもらっています。 別の話題として、SQLのlinter/formatterにsqlfmtとsqlfluffを使っています。基本はsqlfmtだけで…

Argo WorkflowsのログがCloud Loggingでエラー扱いされてしまう問題を回避する

小ネタです。Argo WorkflowsをGKE & Cloud Logging環境で使っている場合、workflow-controllerが出力するログが問答無用でERROR扱いされるという問題がありました。 長らく「そういうもんかー」と諦めてたのですが、JSONによる構造化ログがArgo Workflowsで…

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

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

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

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

最近有料で使っているSaaS(生成系AI)を雑にまとめる

特にもの珍しいものがあるわけではなく「現状こういうことやってるっす!」というのを説明するときのポインタが欲しくなったので、雑に書く。 ChatGPT 用途1: 壁打ち相手 用途2: 便利な英語の先生 用途3: シェルスクリプトの生成 GitHub Copilot DeepL 所感 C…

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

dbt

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

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

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

Argo Workflowsで本番のときはサイドバーの色を変える

小ネタです。 データ基盤のバッチ処理の運用でArgo Workflowsを愛用してます。色々小回りが効くので好きです。様々な処理が乗ってくると、本番環境と開発環境のArgo Workflowsをぱっと見分けが付くようにしたくなってきます(オペレーション実行ミスなどをし…

dbt-osmosisを必要最小限の箇所だけ動かせるように自前でcatalog.jsonを構成する

TL;DR 巨大なプロジェクトでdbt-osmosisを実行しようとすると時間がかかるが、それを短縮するための--catalog-fileというオプションが存在する catalog.jsonはdbt docs generateの成果物であるが、巨大なプロジェクトの場合は実行に非常に時間がかかるかOOM…

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

背景: dbt-osmosisを運用に乗せたい 少し前にdbt-osmosisを紹介するエントリを書いた データリネージを考慮しながら、メタデータの伝播をしてくれる便利なツール しかし、運用に乗せようと思うと、これだけだと足りない点があり、まだ運用に乗せ切れていない…

Cloud Shell経由で手元のデータをBigQueryにアップロードする

小ネタです。割と便利だったので、エントリに書き起しておきます。 背景: エンジニア職種でなくてもでかいデータをBigQueryにアップロードできるようにしたい BigQueryはWebコンソールから手元のcsvなどをアップロードすることができます しかし、これにはフ…

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

dbt

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

Dataplex(旧Data Catalog)によるデータカタログの調査

Dataplex(旧Data Catalog)によるデータカタログについてあれやこれやれやをまとめておいたポインタが欲しくなってきたので、とりとめもなくつらつらと書きます。 注意点: BigQuery on GCPの運用を前提に書いてます Dataplexはデータカタログ以外の機能もたく…

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

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

BigQuery Editions環境でのスロット使用量を調べられるSQLを書いた

BigQueryの新プランの登場でBigQueryをOnDemandからEditionsに切り替える人も多いと思います。OnDemand環境下ではスキャンするデータ量を見ておけばよかったですが、Editionsではスロット消費量がベースになり課金額が決まります。 「課金額がどれくらいか」…

BigQueryで自分が発行したjobをまとめてキャンセルする

小ネタです。特にLooker Studioでよく起きますが、カスタムクエリや選択するフィールドをぽちぽちいじっていると、その都度クエリが発行されます。探索的にあれこれいじっていると、段々クエリが詰まってくることもあります(Looker Studio側がうまいことjob…

Prometheus Metricsを使ってArgo WorkflowsのWorkflowの成否をDatadogで監視する

背景 具体的な設定 コントローラーに設定を生やす workflowを監視するためのカスタムメトリクスを定義する 各workflowに同様のカスタムメトリクスを定義する デバッグ方法 所感 背景 前職に引き続き、現職でもArgo Workflowsを使ってデータエンジニアリング…

Terraform経由でBigQuery Editionsの設定を行なう

背景: BigQuery Editionsの登場およびOnDemandの価格変更 注意(Disclaimer) BigQuery Editionsの設定を行なう providerのバージョンを上げる Reservationの作成およびAssignmentの設定 脱線: BigQuery Editionsを選択して、OnDemandよりコストが上がってしま…

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

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

データエンジニア / Analytics Engineer向けの権限管理のためのTerraform紹介

これは何? 背景: 権限管理とTerraform 権限管理の対象 誰に権限を付与するのか どのスコープで権限を付与するのか どの強さで権限を付与するのか Terraformについて Terraformの概要: 権限管理でTerraformを使うと何がうれしいのか 例: roles/bigquery.jobUs…

JSONの配列がある集合の要素を含んでいるかをSQLで判定する

前提 SQLを書いているとき、元データが[2,3,5,7]のようなJSONで入ってくることがある。データがJSONで入ってくると色々考慮しないといけないことが増えるので、あんまりぽんぽん出てきて欲しくはない。が、まあ現実には相手をしないといけない場合もある。世…

Apple Watch Series 6を下取りに出して、Series 8を購入

自分のための記録エントリ。Apple WatchはSeries 6とSeries 7の二台持ちで運用していた。理由については以下に書いてる。 なぜ買い替え? Apple Watch自体はヘルスケアのメトリックやApple Payでの支払いなどで必要不可欠なものになってきていたし、二台持ち…

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

dbt

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

2022年の振り返り

2022年もお疲れ様でした(書き終わってたけど、出すのを忘れていた)。去年はこちら。 例によって長いけど、主に読み返すのは自分なので特に気にせず書き殴っておきます。 MonotaROから10Xに転職 MonotaROでの仕事 10Xへの転職 副業の話 コミュニティ方面 技術…

2022年に行なったdatatech-jpのCasual Talksを振り返る

10XでAnalytics Engineer & datatech-jpで運営の一人をやっている吉田(@syou6162)です。今回は2022年に私が企画 / 運営したdatatech-jpのCasual Talksについて振り返りたいと思います。 この記事は10Xアドベントカレンダー2022およびdatatech-jp Advent Cale…

Analytics Engineerが機械学習エンジニアとして副業をしようとしていた話

2022年の振り返りエントリを書いていたところ、めっちゃ長くなってしまいつつあるので、切り出して書こう活動です。 前職のMonotaRO時代に他社さんで副業をしようとしていた時がありました。全社レベルでの働き方のrequirementsが変化や転職によって結局はな…

データ活用の関係者に課題感のヒアリングをする時の型を紹介する

背景: データマネジメントのアセスメントのために各部署に現場の課題感をヒアリングしたい 課題: よいヒアリングをするのは簡単ではない 解決案: ヒアリングの型を決める ヒアリングの質問とリサーチの質問を別々に持っておく ヒアリング対象者について事前…

Google Meetのピクチャーインピクチャーを一発で呼び出すブックマークレットを書いた

背景: Google Meetのピクチャーインピクチャー 転職してからオンライン会議のツールがZoomからGoogle Meetになった。Google Meetはピクチャーインピクチャーという機能が今年の6月から使えるようになっていて、これが便利で毎日のオンライン会議は大体これを…