質問編集履歴

3 【追記2】を入力しました。

SatoshiMaruyama

SatoshiMaruyama score 12

2018/08/02 10:45  投稿

BigQueryでPARTITION BYなどを使った際、「allotted memory~」のエラーが起きる原因と理解について
BigQueryで、巨大データに対して「PARTITION BY」のWINDOW関数を使うと以下のようなエラーが返ってくるかと思います。
```BigQuery
Error: Resources exceeded during query execution: The query could not be executed in the allotted memory. Sort operator used for PARTITION BY used too much memory..
```
上記の理解について、2点質問です。
●テーブル内のデータ(=レコード)には「並び順」という概念がない。
その為「PARTITION BY」のように、全レコードの並び順を操作する処理を走らせると、
上記エラーが返るという理解で良いか。
●分散処理させる(例えば、テーブル内の大きな塊を最初にELSEやWHERE句などで外す)ことで、
本件は回避できるものか。
どうぞ、よろしくお願いします。
【追記1】
```BigQuery
WITH T1 as (
   SELECT
       カラム1,
       カラム2,
       カラム3
   FROM
       テーブル1(2,000万レコード)
   UNION ALL
   SELECT
       カラム1,
       カラム2,
       カラム3
   FROM
       テーブル2(5,000万レコード)
)
SELECT
   ROW_NUMBER() OVER (PARTITION BY カラム1 ORDER BY カラム2, カラム3) as CNT
FROM T1
```
▼結果
> Error: Resources exceeded during query execution: The query could not be executed in the allotted memory. Sort operator used for PARTITION BY used too much memory..
> Error: Resources exceeded during query execution: The query could not be executed in the allotted memory. Sort operator used for PARTITION BY used too much memory..
【追記2】
現在、下記サイトを参考にしております。
引き続き、よろしくお願いします。
「大きなデータを取得する」
https://tech.starttoday-tech.com/entry/bigquery_data_reduction#%E5%A4%A7%E3%81%8D%E3%81%AA%E3%83%87%E3%83%BC%E3%82%BF%E3%82%92%E5%8F%96%E5%BE%97%E3%81%99%E3%82%8B
  • SQL

    3920 questions

    SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

  • BigQuery

    133 questions

    BigQueryは、Google Cloud Platformが提供しているビッグデータ解析サービス。数TB(テラバイト)またはPB(ペタバイト)の膨大なデータに対し、SQL風のクエリを実行し、高速で集計・分析を行うサービスです。

2 【追記1】をさらに入力しました。

SatoshiMaruyama

SatoshiMaruyama score 12

2018/08/02 10:22  投稿

BigQueryでPARTITION BYなどを使った際、「allotted memory~」のエラーが起きる原因と理解について
BigQueryで、巨大データに対して「PARTITION BY」のWINDOW関数を使うと以下のようなエラーが返ってくるかと思います。
```BigQuery
Error: Resources exceeded during query execution: The query could not be executed in the allotted memory. Sort operator used for PARTITION BY used too much memory..
```
上記の理解について、2点質問です。
●テーブル内のデータ(=レコード)には「並び順」という概念がない。
その為「PARTITION BY」のように、全レコードの並び順を操作する処理を走らせると、
上記エラーが返るという理解で良いか。
●分散処理させる(例えば、テーブル内の大きな塊を最初にELSEやWHERE句などで外す)ことで、
本件は回避できるものか。
どうぞ、よろしくお願いします。
【追記1】
```BigQuery
WITH T1 as (
   SELECT
       カラム1,
       カラム2,
       カラム3
   FROM
       テーブル1(2,000万レコード)
   UNION ALL
   SELECT
       カラム1,
       カラム2,
       カラム3
   FROM
       テーブル2(5,000万レコード)
)
SELECT
   ROW_NUMBER() OVER (PARTITION BY カラム1 ORDER BY カラム2, カラム3) as CNT
FROM T1
```  
```
▼結果
> Error: Resources exceeded during query execution: The query could not be executed in the allotted memory. Sort operator used for PARTITION BY used too much memory..
  • SQL

    3920 questions

    SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

  • BigQuery

    133 questions

    BigQueryは、Google Cloud Platformが提供しているビッグデータ解析サービス。数TB(テラバイト)またはPB(ペタバイト)の膨大なデータに対し、SQL風のクエリを実行し、高速で集計・分析を行うサービスです。

1 【追記1】を入力しました。

SatoshiMaruyama

SatoshiMaruyama score 12

2018/08/02 10:20  投稿

BigQueryでPARTITION BYなどを使った際、「allotted memory~」のエラーが起きる原因と理解について
BigQueryで、巨大データに対して「PARTITION BY」のWINDOW関数を使うと以下のようなエラーが返ってくるかと思います。
```BigQuery
Error: Resources exceeded during query execution: The query could not be executed in the allotted memory. Sort operator used for PARTITION BY used too much memory..
```
上記の理解について、2点質問です。
●テーブル内のデータ(=レコード)には「並び順」という概念がない。
その為「PARTITION BY」のように、全レコードの並び順を操作する処理を走らせると、
上記エラーが返るという理解で良いか。
●分散処理させる(例えば、テーブル内の大きな塊を最初にELSEやWHERE句などで外す)ことで、
本件は回避できるものか。
どうぞ、よろしくお願いします。
どうぞ、よろしくお願いします。
【追記1】
```BigQuery
WITH T1 as (
   SELECT
       カラム1,
       カラム2,
       カラム3
   FROM
       テーブル1(2,000万レコード)
   UNION ALL
   SELECT
       カラム1,
       カラム2,
       カラム3
   FROM
       テーブル2(5,000万レコード)
)
SELECT
   ROW_NUMBER() OVER (PARTITION BY カラム1 ORDER BY カラム2, カラム3) as CNT
FROM T1
```
  • SQL

    3920 questions

    SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

  • BigQuery

    133 questions

    BigQueryは、Google Cloud Platformが提供しているビッグデータ解析サービス。数TB(テラバイト)またはPB(ペタバイト)の膨大なデータに対し、SQL風のクエリを実行し、高速で集計・分析を行うサービスです。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る