を使用まったく同じクエリが正確にクエリ同一の2つのバージョンの下
を失敗、または異なる別名で「成功」バージョン1(内側のSELECTで別名としてKを使用):
SELECT k as [year], w_vol,
ROW_NUMBER() OVER (ORDER BY k DESC) AS rank1,
ROW_NUMBER() OVER (ORDER BY w_vol DESC) AS rank2
FROM (
SELECT w_vol, c_date AS k FROM
(SELECT 1590 AS c_date, 1 AS w_vol),
(SELECT 1599 AS c_date, 1 AS w_vol),
(SELECT 1602 AS c_date, 1 AS w_vol),
(SELECT 1609 AS c_date, 2 AS w_vol),
(SELECT 1610 AS c_date, 1 AS w_vol),
)
ORDER BY 1
バージョン2(インナーSELECTで別名としてLを使用):
SELECT l as [year], w_vol,
ROW_NUMBER() OVER (ORDER BY l DESC) AS rank1,
ROW_NUMBER() OVER (ORDER BY w_vol DESC) AS rank2
FROM (
SELECT w_vol, c_date AS l FROM
(SELECT 1590 AS c_date, 1 AS w_vol),
(SELECT 1599 AS c_date, 1 AS w_vol),
(SELECT 1602 AS c_date, 1 AS w_vol),
(SELECT 1609 AS c_date, 2 AS w_vol),
(SELECT 1610 AS c_date, 1 AS w_vol),
)
ORDER BY 1
以下は
は私が一貫両方のクエリのために取得していた出力(No Cached Results
が使用されている注意してください)
である私は、結果は関係なく使用されているものの別名と同じになることはありませ期待 - それだけですべてのエイリアスです!
質問質問:なぜバージョン1では常に失敗し、バージョン2では「成功」していますか?
これは私がしばらく見てきたBigQueryの中で最も奇妙なバグです。明日詳細を見て更新します。 –
Moshaありがとう!私は最後の夜を過ごして、この問題を分離して、反復可能な方法で提示しました - この1つだけでなく、もう1つ - http://stackoverflow.com/q/36781049/5221944 –
これを見つけるための名誉!私の印象は、エイリアスは 'k'エイリアスと2つの異なるパーティションウィンドウでのみ発生するということです。 ( 'order() 'を' row_number() 'に代入するとエラーを再現できますが、' order by'句を揃えていないときはエラーを再現できます)。 – oulenz