BigQueryで、巨大データに対して「PARTITION BY」のWINDOW関数を使うと以下のようなエラーが返ってくるかと思います。
BigQuery
1Error: 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
1WITH T1 as ( 2 SELECT 3 カラム1, 4 カラム2, 5 カラム3 6 FROM 7 テーブル1(2,000万レコード) 8 9 UNION ALL 10 11 SELECT 12 カラム1, 13 カラム2, 14 カラム3 15 FROM 16 テーブル2(5,000万レコード) 17) 18 19SELECT 20 ROW_NUMBER() OVER (PARTITION BY カラム1 ORDER BY カラム2, カラム3) as CNT 21FROM 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..
【追記2】
現在、下記サイトを参考にしております。
引き続き、よろしくお願いします。
回答3件
あなたの回答
tips
プレビュー