public note

GCP

BigQuery の全テーブルのレコード件数やサイズを保存して、前日からの変化を確認する

GCP

BigQuery のテーブル別レコード数を履歴として保存して、その変化を見ることで期待した操作が行われているか(逆に、意図しない操作をしていないか)をチェックする方法を考えました。 全体的にどういう変化が起きたのかをざっくり確認したい、というのが目的…

Debezium Server による Change Data Capture: from MySQL to Google Cloud Pub/Sub

GCP

この記事は、datatech-jp Advent Calendar 2022 の19日目の記事です。 @tosh2230 と申します。以前から気になっていた Debezium Server による Change Data Capture(CDC) をやってみました。 具体的には、MySQL のレコードに変更が加わった際に、その情報を …

AWS Database Migration Service による Change Data Capture: 後編

Amazon RDS から Google BigQuery への CDC 後編です。後編では、S3 に格納された Parquet ファイルのデータを BigQuery に登録する部分を扱います。 構成図 前編はこちらをご覧ください。 ts223.hatenablog.com ソースコードは、前回同様にこちらで公開して…

Stairlight v0.2.0 を公開しました

データリネージツール Stairlight の v0.2.0 を公開しました。 Stairlight とは テーブルレベルのデータリネージツールです。詳しくはこちらの記事をご参照ください。 ts223.hatenablog.com ts223.hatenablog.com 主なアップデート ラベル機能 同じテーブル…

データリネージツール Stairlight でテーブルの依存関係をグラフにする

この記事は、datatech-jp Advent Calendar 2021 の6日目の記事です。 こんにちは、GMOペパボ株式会社でデータエンジニアをしています、@tosh2230 と申します。 5日目は よしむらさんのデータマネジメント成熟度アセスメント、データ利活用機運アセスメントを…

workload identity federation での認証は Cloud SDK CLI に制限がある

GCP

結論 2021/11/22 現在、google-github-actions/auth など GCP の workload identity federation ログインで利用できるのは gcloud コマンドのみで、gsutil や bq は対象外になっています。 確認したこと この制限に気づかずに、GitHub Actions にて google-g…

Stairlight というデータリネージツールをつくった

Stairlight*1 という、テーブルレベルのデータリネージができるツールをつくりましたので、その特徴や使い方について書きます。 github.com 背景 ETL(Extract, Transform, Load) と呼ばれる一連のデータ加工プロセスにおいて、バッチ処理での Transform は、…

Google Cloud Professional Data Engineer の資格を取得した

ここ数年、毎年ひとつ以上は何かの資格を取ることを目安に動いているのですが、今年は Google Cloud の Professional Data Engineer にしました。 2021/9/19 に受験し、翌日の 2021/9/20 に認定を受けました。資格の有効期間は 2年間です。再受験のときには…

Streamlit on Cloud Run with Identity-Aware Proxy (IAP)

GCP

タイトルのとおり、Cloud Run で Streamlit を動かしてみました。また、特定の人のみがアクセスできるように、Identity-Aware Proxy(IAP) での保護を試しましたので、その設定やコードを紹介します。 Cloud Run で動かすのはすぐにできたのですが、複数の St…

Cloud Dataflow と Cloud Pub/Sub で Exactly-once なストリーミングインサートを

[前回の記事](https://ts223.hatenablog.com/entry/dataflow-beam) では、Cloud Dataflow と Apache Beam に入門しました。その続きとして、今回は BigQuery に対してストリーミングインサートをしてみます。また、Cloud Pub/Sub と組み合わせることで Exact…

Cloud Dataflow と Apache Beam に入門した

BigQuery にストリーミングインサートしたい気持ちが高まってきて Cloud Dataflow と Apache Beam に入門しました。Cloud Pub/Sub -> Cloud Dataflow -> BigQuery のルートで取り込むにあたり、事前知識を得ることが目的です。 Apache Beam 特徴 Tour of Bea…

NaN というSQL演算結果

はじめに 先日、BigQueryで「SUM関数の演算対象にNULLが含まれるときに結果はどうなるか?」という話になって、NULLになるんじゃないかな?とその時思ったけど、リファレンスを見たら普通に違った。 標準 SQL の集計関数 | BigQuery | Google Cloud NULL 以…

gcloudコマンドの実行結果が標準エラー出力に流れるときの対処法

GCP

はじめに GCP のサービスの中には、gcloud コマンドの実行結果がなぜか標準エラー出力に流れてしまうケースがあります。私が把握している限りでは、Cloud Composer がこれに該当します。 エラーハンドリングをしようとしても正常終了時のメッセージが邪魔を…

(機能拡張)リングフィットアドベンチャーの運動ログをほぼ自動的に収集・可視化する

3週間ほど前に書いた以下の記事ですが、最後に「これからやりたいこと」をいくつか挙げていました。 ts223.hatenablog.com このうち、2つを実現することができましたので、それらを紹介するとともに、最近の運用状況について書きます。 機能拡張 1. GCP Secr…

リングフィットアドベンチャーの運動ログをほぼ自動的に収集・可視化する

目的は自己管理と習慣化 システム要件 完成図 必要なもの 運用コスト グラフ Goプログラム help ツイート検索 画像内のテキスト解析 解析結果の登録 これからやりたいこと pixelaで草を生やす 過去データ移行 GCP Secret Manager 対応 英語対応 風来のシレン…

Amazon SQS と Cloud Pub/Sub のインターフェースを統一する

はじめに 小品ですが、ライブラリをつくっています。 その特徴やつくっている背景、解決したいことについてまとめています。 github.com 特徴 名前のとおり、キューのハブです。 Amazon SQS と Google Cloud Pub/Sub を同一のインターフェースで扱うことがで…

Goで書いたCloud FunctionsをTerraformでデプロイする

春になったし Cloud Workflows の検証でもしようかと思って、その部品として Cloud Functions を作るぞとなったので、最近入門したGoでやってみようと思いました。しかし、検索してもこの組合せのサンプルが全然出てこなかった。 結論 Terraform では、Go で…

Cloud Scheduler と Cloud Tasks

GCP

Cloud Scheduler からリクエストをどのように送信するのか気になったので調べていたら、結局表題の内容になった。 Cloud Scheduler リクエストを送信する際の特徴は以下である。 cronで指定したスケジュールでリクエストを送信する --max-retry-attempts で…

Cloud Pub/Sub でキューの長さを確認する

Cloud Pub/Sub で作成したTopicのサイズを確認する方法を調べていたのだが、ちょっと癖があったのでメモ。 Python での実装 import os from datetime import datetime from google.cloud import monitoring_v3 from google.cloud.monitoring_v3 import query…

権限付与から見たAWSとGCPの違い

業務都合で GCP を使う機会が増えたけど、サービスアカウントってなんかわかりにくいなぁってずっと思ってた。でもそれは AWS の考え方を引きずっていたからだと気づいたので、両者の権限付与について違いをまとめる。ざっくりしたまとめなので、詳細な仕様…

sfb v0.1.3

SQL tester and cost estimator for Google BigQuery pypi.org v0.1.3 更新内容 yaml 設定ファイルにGlobalsが加わり、デフォルト設定を記述できるようにしました。 これにより、SQLファイルごとに何度も同じ設定を繰り返さなくてよくなりました。

Cloud Translation を Ruby で実行する

巨人の肩の上に立ち、言葉の壁を乗り越えます。 悩み Cloud Translation Basic(v2) と Advanced(v3) の違い 対応言語 料金 Rubyでの実装 Basic(v2) Advanced(v3) 所感 悩み 英語のエラーメッセージで何を言われているのかわからない 関数や変数の命名で適切…

sfb v0.1.2 を公開した

公開しました(してました)。 sfb? v0.1.2 v0.1.1 sfb? BigQueryに対するクエリ静的解析、クエリコスト試算を簡単にできるツールです。 pypi.org v0.1.2 標準入力を受け取れるようになりました。 SQLファイル、クエリ文字列のどちらが来ても自動で判別します…

BigQueryのオンデマンドクエリ料金を見積るPythonパッケージをつくった

BigQueryのオンデマンドクエリ料金を見積もるPythonパッケージをつくりました。 経緯 つくったもの これはなにか 導入方法 実行方法 入力 出力 想定ユースケース 今後の予定 Development Status 経緯 BigQueryをオンデマンドクエリ料金で運用していると、作…

ストーリーで学ぶ Google BigQuery を読んだ

読書感想文です。 読んだ本 どんな本か 読んだ感想 読んだ本 Google Cloud Platform実践ビッグデータ分析基盤開発 ストーリーで学ぶGoogle BigQuery 著者: 株式会社トップゲート 出版社: 秀和システム ISBN-10: 4798059560 www.amazon.co.jp どんな本か 紹介…

TerraformでCloud Functions, Cloud Storage, サービスアカウントをつくった

GCP

Terraform と GCP に同時入門していくにあたって、この前 AWS でつくったリソースと、だいたい同じものをつくってみることにしました (Deployment Manager は、いまのところ利用予定なしのためスキップ) 実装 AWS GCP 感想 Terraform (これまでのところ)書き…