未分類

BigQueryで高額課金が発生しているクエリの呼び出し元を特定する

こんにちは

突然ですが、BigQueryで負の遺産を大量に抱えていたりしませんか?

自由に簡単に使い始めることができることで人気のBigQueryですが、長年使っていると、ふと

「あれ、なんでこんなに課金されてるんだ?」

と思ったりしないでしょうか

今回は、

  • BigQueryの課金が多いことはわかったけど、具体的にどれが要因かわからない
  • クエリはわかったけど、どこから呼ばれているのかわからない

そんな時にBigQueryで呼ばれているクエリと呼び出し元を特定する方法をまとめます

※BigQuery Analyticsの課金額が多いことを特定するまでは省略します

■実行されているクエリとスキャン量を出す

BigQueryでこちらのクエリを流します

SELECT query,
       user_email,
       ROUND(SUM(total_bytes_billed) / POWER(1024, 4), 3) AS billed_tera_bytes
FROM INFORMATION_SCHEMA.JOBS
WHERE TIMESTAMP_TRUNC(creation_time, MONTH) = TIMESTAMP_TRUNC(CURRENT_TIMESTAMP(), MONTH)
  AND cache_hit = FALSE
GROUP BY 1, 2
ORDER BY 3 DESC
LIMIT 10

INFORMATION_SCHEMA.JOBS を見ます

このクエリにより、実行クエリの内容、実行アカウント、サーチ量をサーチ量順(=課金量)順に確認することができます。

当月の実行を対象としていますが、期間を絞りたいときはcreation_timeで期間を絞り込んでください。

これで、課金額が高いクエリと呼び出しアカウントがわかります

■サービスアカウントで呼ばれているが、どこでサービスアカウントが使われているかわからない

クエリはわかりました
呼んでるアカウントもわかりました
アカウントは共通のサービスアカウントでした
このサービスアカウント、どこで使われているの?

ということで、呼び出し元を探ってみましょう

先ほどのクエリを少し修正します

SELECT query,
       user_email,
       ROUND(SUM(total_bytes_billed) / POWER(1024, 4), 3) AS billed_tera_bytes,
       ANY_VALUE(job_id) job_id
FROM `region-us`.INFORMATION_SCHEMA.JOBS
WHERE TIMESTAMP_TRUNC(creation_time, MONTH) = TIMESTAMP_TRUNC(CURRENT_TIMESTAMP(), MONTH)
  AND cache_hit = FALSE
GROUP BY 1, 2
ORDER BY 3 DESC
LIMIT 10

実行すると、job_idが出力されます

Cloud Loggingのログエクスプローラに、対象のjob_idを入力して検索します

期間はデフォルトで直近の1時間になっているので、適切に設定します

該当のクエリを実行したときの詳細ログを見ることができます

このログの

protoPayload.requestMetadata.callerIp

に、呼び出し元のIPアドレスが記載されています

呼び出し元のIPアドレスがわかれば、何とか呼び出し元を探し出すことができるでしょう

この探し方、覚えておくと役に立つでしょう

ピックアップ記事

  1. 最速で理解したい人のためのIT用語集

関連記事

  1. データサイエンス

    回帰分析はかく語りき Part3 ロジスティック回帰

    こんにちは、小郷です。昨今は社会が複雑化したために、Yes…

  2. Mouseflow

    mouseflow の フリクションイベント って何?

    Webサイトの訪問者は、様々な理由でコンバージョン[閲覧者による収益…

  3. 未分類

    ThoughtSpotとSnowflakeを使ってセルフBIの世界を体験してみた

    こんにちは、エクスチュアの大崎と申します。BIツール使ってま…

  4. 未分類

    Databricksが買収した8080Labのbamboolibをひと足早く使って見る

    こんにちは、エクスチュアの松村です。先日、Databricks…

  5. Office365

    エクセルで「テーブル」を使うメリット① 「BIツールで使いやすい」

    データを扱ういろんな環境、ツールがありますが、今も現場で出番の多いエ…

  6. Data Clean Room

    SnowflakeのData Clean Roomを基礎から一番詳しく解説(2回目)

    こんにちは、喜田です。複雑なSnowflakeのデータクリー…

最近の記事

  1. AIを使ったマーケティングゲームを作ってみた
  2. Snowflakeや最新データ基盤が広義のマーケティングにも…
  3. 回帰分析はかく語りき Part3 ロジスティック回帰
  4. GCSへのSnowflake Open Catalogによる…
  5. VPC Service Controlsで「NO_MATCH…
  1. Adobe Analytics

    PV(ページビュー)とは-Adobe Analyticsの指標説明
  2. Adobe Analytics

    検索エンジン-自然とは-Adobe Analyticsの指標説明
  3. YOTTAA

    YOTTAA:ECサイトで見るべき8つのサイトパフォーマンス指標について
  4. Google Analytics

    【UA完全終了】GA4移行作業は完了しましたか?2023 年 7 月にユニバーサ…
  5. Google Analytics

    Cloud FunctionsとOpenWeather APIを使ってGoogl…
PAGE TOP