使われていないにも関わらず定期実行されてしまっているクエリ(in BigQuery)を検知するツールを作りました

TL;DR 背景 実装時の問題点 作った TL;DR データ活用が進んでくると、使われていないにも関わらず定期実行されているクエリが増えてきます 無駄な利用料金、スロットを使っていることになるので、こういったクエリはなるべく減らしていきたいです こうしたク…

SQLは3値論理、NULLの扱いに気を付けよう

SQL

基本的なことだけど、久しぶりにハマって2時間くらい溶かしてしまったので、自分用メモ。大体のことは以下の本に書いてある。 達人に学ぶSQL徹底指南書 第2版 初級者で終わりたくないあなたへ作者:ミック翔泳社Amazon INとNULL 普通のプログラミング言語であ…

BigQueryのビューにパラメータを渡せない欠点をテーブル関数で補おう

背景 (BigQueryに限らず)ビューは便利 テーブル化する必要がないので、ビュー内で参照しているテーブルが更新されたらビューの結果も新しいものを参照できる 物理テーブルと違って、保存料金を気にする必要がない 一方で、ビューにはパラメータを渡すことが…

BigQueryのクエリ結果をMackerelのメトリックとして取得するプラグインを作りました

背景 GCP単独でサービスを構築している場合、Cloud Monitoringはとても便利な監視のためのツールです しかし、サービスをマルチクラウドで構築している場合、複数のクラウドサービスに監視の設定やダッシュボードを作っていく必要があり、面倒です 自分が趣…

Cloud Monitoringのメトリックを簡単にBigQueryにloadできるcloud_monitoring_metrics_fetchを作りました

3行まとめ Cloud Monitoringのメトリックは便利だけど、使い慣れたSQLで詳細な分析がしたい メトリックをBigQueryに簡単にloadできるツールを作りました ラベルを絞った詳細分析などもできるので、是非使ってね 背景 Cloud Monitoringのメトリックは便利 し…

Argo WorkflowsのWorkflowの最終的な成否をCloud Monitoringで監視する

GCP

背景 課題: Workflow内で複数のジョブが走る場合に監視漏れが発生する 解決方法: Workflow単位で成否を判断し、Cloud Monitoringに成否をメトリックとして投稿する Appendix GKEのサービスアカウントへの権限付与 監視用のDockerfile Cloud Monitoringのアラ…

コマンドラインからCloud Monitoringに簡単にメトリックを投稿できるツールを作った

GCP

3行まとめ Cloud Monitoringにメトリックを投稿するのは案外面倒 コマンドラインからさっとメトリックを投稿するのに便利なツールを作った jqでさっと加工して、がっとメトリックを投稿したいときにどうぞ 背景 Cloud MonitoringはGCP上で監視を行ないたい場…

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

dbt

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

Google Groupsのグループアドレスを使って、雑な社員マスタを作る

背景 何やかんや仕事するにあたって、社員マスタが機械で扱いやすい形になっていると便利なことが多い 厳密な社員マスタはもっと色々情報が入っていて欲しいけど、ここでは「XXさんがYY部署にいます」くらいが分かる、という定義にします BigQueryなどにある…

2021年の振り返り

2021年もお疲れ様でした、2022年になってしまった。お蔵入りするのが一番最悪なので、遅れたけど振り返りエントリを出します。去年の振り返りはこちら。 はてなからMonotaROに転職 転職前に最後のアウトプット 技術方面 ドメイン知識の獲得方面 採用方面 デ…

テーブルの最終更新日をINFORMATION_SCHEMA.PARTITIONSから調査する

この記事は、BigQuery Advent Calendar 2021の23日目の記事です。8日目の記事も書いているので、このAdvent Calendarで2つ目の記事になります。メタデータ大好き人間なので、今日のネタもメタデータ関連です。 テーブルの最終更新日が知りたい 古の方法: __T…

スケジュールクエリでも最高のメタデータを付与したい人生だった

この記事は、BigQuery Advent Calendar 2021の8日目(シリーズ2)の記事です。カレンダーが人気ですでに枠が埋まっていましたが、書きたかったので勝手にシリーズ2を作りました。ちなみに12/23も書くらしいです。 みんな大好きメタデータ 皆さん、データ好きで…

esaのタグの正規化を促すスクリプトを書きました

esa

3行まとめ esaをバシバシ使っていると、同じタグのつもりが表記が揺れてくる 検索で意図せず引っかからないことがあるので、正規化したい 定期的に表記が揺れているタグの正規化を促すスクリプトを書きました 背景 esa.ioのAPIをガシガシ使いながら日記を書…

データエンジニアリングやデータ活用の知見を共有するコミュニティdatatech-jpをやってますという話

この記事は、datatech-jp Advent Calendar 2021の1日目の記事です。 datatech-jpというコミュニティについて 何をやっているコミュニティなの? The Self-Service Data Roadmap読み会 Airflow困り事相談会 waiwai会 どういうコミュニティにしていきたいか dat…

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

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

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

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

Apple Watchの二台目(Series 7)を買いました

人はそれを散財と呼ぶかもしれないけど、私もこれは散財だと思う...。 購入の動機 Apple Watch Series 7 二台持ちで考える必要があること Apple Payの紐付け ヘルスケアのメトリックの同期 目覚まし / アラーム 文字盤の設定 購入の動機 今年の春にApple Wat…

小ネタ: Google Docsの文書をmarkdownに変換して手元に持ってくる

色々試してみたので、ログとして残しておきます。 背景: 俺はmarkdownのテキストが欲しいんだ! Google Docsは同時編集ができるし、特別な記法を覚えなくても使えるので、議事録を取るときなどによく使われる。一方で、Google Docsはplain textではないので、…

近況報告1: 「突撃! 隣のCI/CD」や「施策デザインのための機械学習入門の読書会」をやってる話

報告2から3くらいまで続きます、多分。 突撃! 隣のCI/CD 仕事でCI/CDする時に、社内の事情であれこれ工夫すべきところがあり、色々ハマりました。自分のグループだけでなく、他のグループにも関係するし情報共有したほうが効率上がりそうだなぁと思い、「突…

リモート勤務や複数拠点での働き方で気を付けているポイント

緊急事態宣言も解除されて、オフィスに通勤する日も出てきました*1。コロナの感染状況が今後どうなっていくかは分からないですが、リモート勤務や複数拠点で働く人がいるチームで私が気を付けているポイントを書いてみます。説明するときのポインタが欲しく…

The Self-Service Data Roadmap読書会でContinuous Integration Serviceについて発表しました

データマネジメントに対する知識を深めたり、データの利活用をより進められるようになりたいなと思って、読書会をやっています。始めてから二ヶ月くらいで、そろそろ本の終わりが見えてきました。 The Self-Service Data Roadmap: Democratize Data and Redu…

エンジニアがJob Descriptionとロードマップの作成に関わって感じたこと

最近、自グループのJob Descriptionとロードマップを作成する機会があって、結構いい経験だったのでメモしておきます。 前提: 私自身について Job Descriptionとロードマップの作成に関わる経緯 作成に関わった結果 所感 前提: 私自身について 私自身はただ…

Terraformのapplyでtargetを指定しているにも関わらず、それ以外のリソースが差分として出てくる場合

タイトルのようなことがあって困ったので、忘れないようにメモ。 Terraformのtargetオプション Terraformを使っていると「このresourceに関するところだけ差分を見たい」「あのモジュールに関するところだけapplyしたい」ということが時々ある。いつもあって…

GKE上のバッチ処理の実行時間の推移を可視化する

課題感 GKE上のバッチ処理の成否は監視している しかし、バッチ処理時間の伸びは監視できていない データ数と共に線形に処理時間が伸びているようだったら、何かしら対応を考えたい いわゆるバッチの突き抜け対策 具体的にはこういうことをしたい しかし、仕…

ポエム: なぜ私はアウトプットを続けているのか

最近、「なぜid:syou6162はアウトプットを続けているのか」を聞かれる機会があった。 会社のnoteのインタビューを受けた*1中で、もう15年もブログを書いていることについて聞かれたり*2 会社のLT大会をやっているんだけど、なぜアウトプットを推進しようとし…

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

dbt

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

最近の砂場活動その25: 複数のnamespaceにまたがるデータ管理ツールをIAPで守る

背景 複数のnamespaceにまたがるツールを1つにまとめる 問題点: 素朴にはIngress内でnamespaceを分けることができない 解決策: Nginxでwrapする Ingressを設定するためのその他の設定 静的IPの確保と設定 ドメインの確保 & CDNの設定 & 証明書の設定 IAPの設…

集合の組合せに対してTerraformで設定する(setproductとfor_eachを使う)

「このメンバーの一覧に対して、このリストの一覧の権限の付与したい」ってケース、結構あると思います。「このメンバー一覧に対して、この権限だけを付与したい」という場合はTerraformだとfor_eachで割と簡単に書くことができますが(一重ループ)、タイトル…

どのrevisionでterraform applyされたものか分かるようにtfstateに情報を埋め込む

背景 Terraformでリソースをコード管理をしている場合、大抵gitでバージョン管理している terraform applyしたものがまずかった場合、どの差分によるものか、いつから発生していたものなのか、誰の実行によるものかといった情報が欲しくなる backendをgcsな…

dbtを触ってみた感想

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