未分類

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アドレスがわかれば、何とか呼び出し元を探し出すことができるでしょう

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

Tableauのヘックスタイルマップでヒートマップを地図上に粗く表現する前のページ

Qualtricsで顧客満足度アンケートを行なってみた次のページ

ピックアップ記事

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

関連記事

  1. データサイエンス

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

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

  2. 未分類

    databricksのnotebookを使ってみよう その2

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

  3. Data Clean Room

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

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

  4. 未分類

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

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

  5. Google Tag Manager

    【GA4/GTM】dataLayerを活用しよう

    はじめにこんにちは、エクスチュアの岩川です。GA4の…

  6. KARTE

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

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

カテゴリ
最近の記事
  1. 真打ち登場LOD ~TableauのEXCLUDE関数を知ろ…
  2. DataformでactAs権限に適合する設定をする
  3. 真打ち登場LOD ~TableauのINCLUDE関数を知ろ…
  4. 真打ち登場LOD ~TableauのFIXED関数を知ろう~…
  5. 真打ち登場LOD ~Tableauで苦戦するアイツを知ろう~…
  1. Adobe Analytics

    Adobe Summit 2020レポート: Implementation Ti…
  2. IT用語集

    カプセル化(Encapsulation)って何?
  3. Adobe Analytics

    Adobe Analytics: Webサイト内で発生したJavascriptエ…
  4. KARTE

    CXツール「KARTE」ってどんなツール?主な機能や魅力をざっくり紹介!
  5. ChatGPT

    ChatGPTとVSCodeの連携方法とその使用例:開発効率を飛躍的にアップさせ…
PAGE TOP