notebook

都内でWEB系エンジニアやってます。

GoogleCloudPlatform

GoogleCloudのDataformでAPI経由の手動実行をやってみる

Google CloudのDataformがGAになり旧版のDataformも使えなくなるとのアナウンスがあったので、いくつか個人で作っていたプロジェクトを移行し始めた DataformのパイプラインをAPI経由で実行している部分も移行したためそのときに調べたことなどのメモ パイプ…

GitHub ActionsでBigQueryのbqコマンドの初回実行時のメッセージ

初回のbqコマンド実行時やCI/CDでbqコマンドを使用する際、初回実行時に.bigqueryrcが存在しない場合に自動で生成してくれる このとき、標準出力には以下のようなメッセージが出力される Welcome to BigQuery! This script will walk you through the proces…

BigQueryにAPIのデータを定期的に同期して、削除されたレコードを検出する

パターンとしてありそうなケースの備忘録 たとえば何かしらのAPIのデータを定期的にBigQueryに同期している機能において API側でレコードが削除された場合、ものによっては削除フラグがあったりするが、ない場合はレスポンスからレコードがなくなる ある時点…

BigQueryで特定の規則に沿った文字列から日付を取得する

はてなブログで特に設定せずに記事を書いているとURLが次のような形式になる /entry/年/月/日/時分秒 この規則的な文字列から日付の情報を取り出すというのをBigQueryのSQLで行う 具体的な例としてはURLのパス/entry/2022/07/22/120000から2022-07-22を取り…

改行含むデータがあるCSVをBigQueryにloadする

今までCSVをBigQueryにloadすることがそんなになかったので(だいたいJSONでloadしてた)改行が含まれているCSVをloadするのにオプションが必要なのを知らなかった 今回は調べる過程をせっかくなので残しておく load時のエラー 何も知らずにloadしたときのエラ…

Cloud Workflowsのコールロギング機能を試してみる

先日GAになったWorkflowsのロギング機能を試してみた Release notes | Workflows | Google Cloud Send logs to Cloud Logging | Workflows | Google Cloud 実行時にオプションを付けることでステップ名、関数名、関数引数、呼び出しレスポンスなどをCloud Lo…

Natural Lauguage APIを使って過去1年分のリリースノートから感情の上下を測ってみる

2020年からじぶんリリースノート(毎月の振り返り的な記事)を書いていた 2021-12 2021-11 2021-10 ここ1年くらいは書く項目が「仕事」「生活」など固定化されてきていたためこれらの文章を使って感情分析にかけたら年間を通してどんな感情だったのかという…

BigQueryの名前つきウィンドウでウィンドウ指定のあるクエリを読みやすくする

Window Frame句 SQL中にWINDOW ~~~と書くことでPARTITION BY ~~~やORDER BY ~~~などの指定に名前をつけることができOVER句で参照できる 分析関数のコンセプト | BigQuery | Google Cloud cloud.google.com 今までこの存在を知らず1つずつウィンドウ指定を書…

GCPのWorkflowsで日付をフォーマットした値を生成する

この記事はGoogle Cloud Platform Advent Calendar 2021のカレンダー | Advent Calendar 2021 - Qiita6日目の記事です qiita.com GCPのWorkflowsでtime.format, time.parseが使えるようになった 今まではWorkflowsから何かAPIへ対してリクエストを送る際に日…

BigQueryの分析関数でGA4の過去7日、30日、合計のPV数を集計する

使わないとすぐ忘れるのでメモの意味で残しておく 題材はGA4でExportしたデータを使ってpagepathごとの過去7日間、30日間、合計のPV数を集計するという感じでやってみる 公式の解説 分析関数に関してのドキュメントは次にある 標準 SQL の分析関数のコンセプ…

GA4のデータをGoogle Apps Script経由で取得する

個人所有のアカウントはGA4で計測するようになったので今まで使っていたGAの数値を取得するスクリプトも徐々に対応させていく必要があるので調べてみた まだbetaのようなので内容など変わる可能性があるが現時点でやったことを残しておく Analytics Data Ser…

CloudMonitoringでアラートを作成しSlackへ通知する

GCPでの通知でSlackが連携先として追加できるようになったみたいなのでちょっと触ってみるためにCloudMonitoringと合わせて使ってみた 流れ やることは以下 通知先の設定 GUIでSlack連携の設定 terraform import Alert Policyの設定 Monitoring指標の設定 GU…

Cloud LoggingからログデータをBigQueryへExportする

ログからBigQueryにExportできるのは知っていたのでとりあえず使ってみようかと思って触ってみたら思った以上に簡単だった Terraformで設定を定義する Terraformで表すとこんな感じ main.tf data "google_client_config" "current" { } iam.tf locals { logg…

GA3のデータをBigQueryに移す

本ブログで取っているGAの計測データをGA4に切り替えた(並行して数値は取得中) APIをたたくスクリプトを書いて集計してBigQueryに入れてDataPortalから日ごろのアクセスなどを見ているがGA4に完全移行するには過去のPVもやはり見たいよなーと思っていた GA4…

GCPのWorkflowsでBigQueryコネクタを使ってみる

掲題の通りWorkflowsにBigQueryコネクタが来たので使ってみる コネクタについてのドキュメントは下記 BigQuery API Connector Overview | ワークフロー | Google Cloud cloud.google.com 要はWorkflowsから他のGoogleCloud製品にアクセスするための仕組み 今…

BigQueryで重複を排除した最新レコードを取り出す

最近社内の勉強会でなるほどと思ったので試して備忘録として残しておく 色々調べた後だと頻出するイディオムだった感はある… BigQueryで重複を除いて最新状態のデータを出力する方法 データの取り込みもしくは入れ込む際にtimestampカラムを追加する timesta…

BigQuery+Dataportalでインタラクティブフィルタを活用する

プライベートでブログのPVなどを集計していて BigQueryにTwitterのエゴサやGoogleAnalyticsのPVなどを取り込んで、Dataportalから参照してグラフにして定期的に見るようにしている 記事についてのデータ(urlやタグ)はjsonで持っていてこちらもBigQueryに定期…

DataformでAPIからパイプラインを実行する

Dataformで個人プロジェクトのデータ整形を行ってみた そのときにAPIでパイプラインを実行したときのメモ REST API ドキュメントはこちら Use the REST API | Dataform docs.dataform.co まだREST API自体がBetaらしく今の段階ではプロダクション導入とかは…

GCPのCloud WorkflowsとCloud SchedulerでTogglの前日読書時間を自動でPixelaに記録する

今回の記事までにいくつかCloud Workflowsの記事を書いた GCPのCloud Workflowsを試す - notebook swfz.hatenablog.com Cloud Workflowsでランタイム引数のデフォルト値を設定する - notebook swfz.hatenablog.com これらで行ったことをもとに今回はテーマを…

CloudLoggingに流れたログをSlack通知する

すでにいろいろと記事も出ているが自分で触って試してみたため残しておく やったことはLogging -> 集約シンク -> Pub/Sub -> Functions -> Slack でWARNING以上のログをSlackに通知する 集約シンク AWSでいうCloudWatchLogsのロググループに対するkinesis da…

Cloud Workflowsでランタイム引数のデフォルト値を設定する

実行時に引数を渡すときにデフォルト値を設定したい というよくあるパターンをWorkflowsで行えるか試してみた 今回は失敗したパターンも書きながら流れを追って書いていく 結論だけ知りたい方は最後の方を見てください ランタイム引数の扱い Workflowsでラン…

GCPのCloud Workflowsを試す

ちょうど気になっていたので使ってみる Workflows ワークフロー | Google Cloud cloud.google.com サーバレスでHTTPベースのAPIサービスを組み合わせてワークフローを定義できる 外部APIも対応しているので色々できることはありそう 目次 こんな感じで試して…

BigQueryで連続した日付のデータを生成して集計データと突き合わせる

スクリプティングを使ってみたくて題材探してみようと思ったがこのケースならSQL組み合わせるだけで良かった SQL WITH # 歯抜けサンプルデータの用意 sample_data AS( SELECT * FROM UNNEST(ARRAY<STRUCT<d DATE, item STRING, sales INT64>> [ ("2020-10-04", "hoge", 100), ("2020-10-19", "fuga", 5</struct<d>…

CloudTasksの再試行設定覚書

公式ドキュメントを読んでもあんまりピンとこなかったので実際に動かしてみて感覚をつかむ 適当な関数を用意してcreate-http-taskでタスクを生成しCloudTasksのログから再実行の間隔を見る 再試行設定 CloudTasksでは指数関数的に再試行間隔が増加していくが…

BigQueryのMERGE文で削除、更新、追加を同時に行う

MERGE文はUPSERT的な操作をしたいときに取り上げられることが多いイメージだったがもう少し込み入った要件でも活用できそうということで試してみた MERGE文についてのドキュメントは下記 データ操作言語の構文 | BigQuery | Google Cloud cloud.google.com …

BigQuery+Togglで週ごとの作業時間予想をSQLだけで出してみる

この記事はBigQuery Advent Calendar 2020の14日目の記事です もともとTogglのデータをAPIから引っ張ってきてBigQueryに入れているのでそのデータを使って今スプリントの消化時間の着地想定を計算するクエリを書いてみた Toggl Track: Effortless Time-Track…

CircleCIでgcloudを使えるようにする(+Terraform)

この記事はCircleCI Advent Calendar 2020の13日目の記事です 2.1以上であればOrbを使うとechoで特定のファイルに書き出して…とかそういうのをよしなにやってくれるので楽できる CircleCI Developer Hub - circleci/gcp-cli circleci.com 準備 サービスアカ…

TerraformでCloudRun+CloudSchedulerを構築する

素振り目的でやってみた この記事はterraform Advent Calendar 2020の12日目の記事です 前提 用途はバッチ CloudRunは認証済みアクセスのみ許可する TerraformでCloudRunの設定周りを行う イメージのビルドは別途行いCloudRunのtfファイルで参照させる Cloud…

GCPのSecret Managerを使ってみる

この記事はGoogle Cloud Platform Advent Calendar 20203日目の記事です AWSだとParameterStoreなどがあるがGCPだとなんなんだろうということで調べて使ってみた Secret Manager 外部サービスのAPIキーやパスワードなどの秘匿情報を含むデータをGCP上で管理…

BigQueryのパーティション(日付と取り込み時間の違いについて)

取り込み時間パーティションと日付 / タイムスタンプ パーティションの違いについて しっかりしたドキュメントがあるのでそっち読むほうが断然良いと思います 実際に触ってみたら分かるがドキュメント読むだけだといまいちピンと来なかったので触りながら把…