BigQuery

BigQueryのデータセットの権限設定を別のデータセットにコピーする

背景 BigQueryの権限設定、Terraformなどを使ってIaCとして管理することが多い しかし、様々な事情で手動で管理しなければいけないケースもたまにある 個別のデータセットに対する権限付与の場合、Web Consoleからぽちぽちとやればよい 「データセットAに対…

無駄打ちになっているBigQueryのスケジュールクエリを列挙する

背景: 無駄なスケジュールクエリを撲滅したい スケジュールクエリは便利 エンジニアでない方でもクエリを手軽に定期的に実行できるようになる 一方で、設定したけどしばらくすると生成したテーブルを全然見てない(=無駄打ちになっている)...というクエリが徐…

BigQuery管理リソースグラフと同等のものをSQLで作る

背景 BigQuery管理リソースグラフって何?って人も多いと思いますが、BigQuery Reservationsを使っている場合に見える管理者用のBigQueryのリソース利用率の遷移が見れるグラフです。こういうやつです、主にスロット関係の統計量をよく見ます。 リアルタイム…

BigQueryのカラム毎の要約統計量をSQLのみで出す

背景 SQLのみで様々な要約統計量を出す 応用事例: 定常的な監視への発展 参考: 先行研究 背景 pandasのデータフレームに対するdescribe、ざっとテーブルの要約を知りたい場合に便利です 値域がどうなっているか、数値の分布(パーセンタイル)がどうなっている…

BigQuery Scriptingの便利な使い方をまとめてみた

背景 & Disclaimer 自分自身はこれまでBigQuery Scriptingをほぼ使っていませんでした BigQuery自体は3年くらいの利用歴 SQL単発で済ませるのが苦しそうな場合は、Pythonなどのプログラミング言語 + ワークフローエンジンの組み合わせで戦っており、自分とし…

BigQuery MLでスロット使用量が急増しているプロジェクトやユーザーを異常検知する

背景 どうやって異常を検知するか BigQuery MLでの異常検知 検知できるモデルの種類 共通設定 データの前準備 モデルの学習 モデルを元にスロット使用量が異常に増加していないか予測する 所感 背景 BigQueryはオンデマンドとフラットレート(定額料金)がある…

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

データ分析を元にFAQサイトを継続的に改善する

FAQサイト、サポート問い合わせをせずとも自分で疑問を解決できて便利ですよね。でも、検索した単語が一件もヒットしないと、ちょっとガッカリしてしまします。そういったガッカリを減らすために、簡単なデータ分析を使ってFAQサイトを継続的に改善する話を…

Cloud Functionsを使って、BigQueryのクエリ結果をSlackに定期的に投稿する

N番煎じネタです。Google Apps Scriptでやる例をよく見る気がするけど、Cloud Functionsを使ってやりたかったのじゃ。 以下のような設定をyamlに書いておくと、クエリ結果をテンプレートに従ってテキストに展開して、定期的にSlackに投稿(cron likeな設定が…

BigQueryのテーブルのメタデータをCloud Data Catalogで管理する

自分が使いたいと思ったBigQuery上のリソース(tableやview)、内容を事前に完全に把握できている、ということは結構少ないのではないかと思います。そういったときに手助けをしてくれるのがメタデータです。BigQueryのリソースに対するメタデータを、Cloud Da…

データウェアハウスやデータマートのviewが壊れていないかvalidationする

データ基盤の小ネタです。 データ基盤におけるview データ基盤でデータスキャンがそれほど大きくない場合、積極的にviewを使っています(BigQueryを利用しています)。日時のバッチでテーブルとして掃き出してもよいですが、バッチを回さずにクエリをガシガシ…