HOME/🔍 BigQuery/

疑似中間テーブル作成 - too many subqueries or query is too complex 回避

Article Outline

|| Resources exceeded during query execution: Not enough resources for query planning - too many subqueries or query is too complex

Resources exceeded during query execution: Not enough resources for query planning - too many subqueries or query is too complex

よく出るこいつ。

WITH句を多用していたり、ビューの多段が10個近くになってくるとこのエラーがよく発生することが多いです*2。

参考にしたすごい人も言っている。

|| 疑似的中間テーブル作成

| テンポラリーテーブル作成

CREATE TEMP TABLE {テーブル名} ({処理});

| クエリ

-- 中間テーブル(疑似的入れ物)
create temp table EXTRACTED (
    COMMIT string
    , TREE string
);

-- 中間テーブルに入れ込むデータ
insert into EXTRACTED
select COMMIT, TREE from `bigquery-public-data.github_repos.sample_commits` limit 10;

-- 中間テーブルにアクセス
select * from EXTRACTED;

| うれしいこと

  • サブクエリ多様で、処理落ちすることを回避できる。(エラー回避)
  • エラー回避で、都度中間テーブルとして保存していたデータを作成しなくて済む。(データプランク化回避)
    • 一時テーブルであるため、BigQueryが削除をやってくれる。 作っては後で消して、を手作業でしていた。(消し忘れて上司に「ゴミはゴミ箱へ!」とよく言われたもの...)

|| REFERENCE