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

テーブルの最終更新日を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の部…

BigQueryのデータセットに対する大量のアクセス権限をTerraformで管理する

BigQueryのデータセットに対するアクセス権限が手動で追加されていました。手動だと編集された履歴の確認や特定時期の状態を復元ができないため、Terraform管理したい。しかし、データセットがあまりに大量にあって困ったので、スクリプトで楽をしようという…

データウェアハウスのバージョン管理をどうやるか

というのをチームで議論する機会があったので、書いてみます。「うちではこうしている」とか「ここはこっちのほうがいいんじゃない?」とかあったらコメントで教えてください。 背景 / 前提 データウェアハウスのテーブルを社内に広く提供したい 初期の提供時…

TerraformのModuleでデータマネジメントしやすくする

背景: Terraformを使いつつ、データマネジメントの観点から統制を取りたい Terraform Moduleを定義する 例: データセット まとめ 背景: Terraformを使いつつ、データマネジメントの観点から統制を取りたい GCPでデータ基盤を管理する場合、Terraformはよい選…

helm installで入れるチャートの管理の仕方

helmはhelm installで公開されているチャートを簡単にインストールできて便利。一方、GKEで動かすアプリケーションなどの管理をしていると、helm installで入れるチャートのバージョンや設定自体を管理したくなることがある。イマイチその辺のノウハウがまと…

昔は苦手だったモブプロを今は推進する側になっていた

3~4年前はモブプロにめちゃくちゃ苦手意識があったんだけど、最近はなぜか(?)モブプロを推進していく旗振りをしている。モブプロの取り組み自体については今度会社のTech Blogに書く予定だけど、このエントリでは自分の心境の変化にフォーカスを当てる。人間…

ユーザー問い合わせは宝の宝庫 & データ基盤構築の魅力

注意: ポエム成分多めです、自社のデータ基盤チームの話です。 今日はチームの振り返り会で「ユーザー問い合わせは宝の宝庫」的な話題*1が出て、めっちゃ分かる〜となった。データ基盤チームへの問い合わせなので XXXデータセットにYYYの権限を付与してくだ…

最近の砂場活動その24: Embulkでのデータ転送を差分転送にする

差分転送するモチベーション 機械学習を使った情報推薦を行なうために、RDSのテーブルをBigQueryに定期転送しています。細かいことは気にしたくなかったので、一日一回の洗い替え(全データ送信で全部上書き)していましたが、もう少し鮮度を上げたくなりまし…

最近の砂場活動その23: Cloud MonitoringでKubernetesのバッチ処理を監視する

Kubernetes上で動かしているバッチ処理の監視をCloud Monitoringで行なおうと思ったのですが、素朴にやるとちょっと困りました。一工夫したので、メモを残しておきます。 背景 Cloud Monitoringで素朴にバッチ監視を行なう これだと困る...! 次のバッチが成…

最近の砂場活動その22: Argo WorkflowsでGKE上の機械学習バッチのワークフローを管理する

なぜ 機械学習の典型的なワークフローはこんな感じになりがち データの取得 前処理 モデルの学習 新しいデータに対して予測を行なう ごくまれにコケる。こけたらretryなどをして欲しいし、その辺はワークフロエンジンで面倒を見て欲しい AWS上ではAWS Step F…

最近の砂場活動その21: helmを使ってKubernetesアプリケーションのデプロイを行なう

背景 yamlを使ったマニフェストでKubernetesのデプロイの管理をずっとやっているのはしんどい 繰り返し出てくる変数、環境毎(dev/stage/prod)の差分管理 もっといい感じにやって欲しい helmやKustomizeなどいくつか選択肢がある 業務でhelmを使うので、いい…