notebook

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

BigQuery

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…

GitHubActionsでBigQueryへクエリしたテーブル表示の結果をそのままSlackに流す

プライベートでTogglのデータやブログのデータなどさまざまなデータを収集してBigQueryに入れている LookerStudioを使って可視化して定期的に見に行くというのも悪くはないが 毎日特定の数値だけ進捗を確認、把握したい場合だと自分はSlackに通知してそれを…

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したときのエラ…

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

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

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

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

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らしく今の段階ではプロダクション導入とかは…

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>…

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…

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

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

BigQueryで特定パーティションへのデータ書き込み

BigQueryのパーティションについてのメモ やりたいこと BigQueryにレポートなどの日次データを持たせているテーブルで特定日付のバッチ処理のみ再実行できるようにしたい パーティション分割について そもそもBigQueryのパーティションには色々種類があるよ…

TogglAPI+BigQuery+DataPortalでお手軽ダッシュボードを作成する

ここ数ヵ月Togglを用いて仕事、プライベートの勉強時間、睡眠時間のトラッキングを続けています Togglにもレポートはあるのですが無料プランだと次の点で不満がありました workspaceをまたいだデータが閲覧できない projectごとのデータをレポート画面で見る…