未分類

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. Data Clean Room

    PostgreSQLによるデータクリーンルームの可能性について

    こんにちは、喜田です。本投稿は PostgreSQL Adv…

  2. 未分類

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

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

  3. Data Clean Room

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

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

  4. Mouseflow

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

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

  5. KARTE

    KARTE 成果の出るアイデアを考える_ツールを活用できていないと感じたら

    エクスチュアの林です。今回はKARTEを活用していらっしゃる…

  6. Office365

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

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

最近の記事

  1. KARTE を使ってサイト外でも接客を
  2. 【GA4/GTM】dataLayerを活用しよう
  3. ジャーニーマップをデジタルマーケティングの視点で
  4. ChatGPT ProからClaude3 Proへ移行した話…
  5. その分析、やり方あってる?記述統計と推測統計の違い
  1. Adobe Analytics

    Adobe Analyticsと「どこどこJP」のAPIを連携する
  2. Google Cloud Platform

    Google Compute EngineのUbuntu VMにスワップ領域を作…
  3. ObservePoint

    ObservePointでサイト内のタグが全部まるっとお見通しだ!
  4. IT用語集

    コンバージョン(CV)って何?
  5. Adobe Analytics

    【超わかる】WEB解析の全貌
PAGE TOP