2016-03-21 8 views
2

I次のクエリを持っている:GoogleのBigQueryは:SUMでもSUMエイリアスに異なる結果に変更を返す

SELECT 
 
     p_id, 
 
     r_date, 
 
     
 
     SUM(CASE WHEN p_type='h' AND post_p='c' THEN 1 ELSE 0 END) as test1 
 
     
 
     FROM (
 
     
 
     SELECT 152234223 AS p_id, 
 
     date AS r_date, 
 
     sequence as p_type, 
 
     
 
     LEAD(p_type, 1) OVER 
 
     (PARTITION BY u_id ORDER BY visit_id) AS post_p 
 
     
 
     FROM (Table_date_range([152234223.ses_],Timestamp('25022016'),Timestamp('29022016'))) 
 
    
 
     GROUP BY 1,2

たとえば145 ためしかし、もし希望がSUMの結果を返すこのクエリ、合計のエイリアスを「テスト」または「test1234567890」に変更すると、145よりも高い値または低い値の異なる値が返されます。

誰かがこれについて私に説明できるかどうかは疑問です。ソリューションが必要です!

感謝

答えて

2

あなたのデータセットを共有することができれば、これを検証するために容易になります... ちょうどあなたのコードを読んでから:

はあなたの問題はここにあると思われる:

LEAD(p_type, 1) OVER 
     (PARTITION BY u_id ORDER BY u_id) AS post_p 

同じ属性でパーティションを並べて並べ替えると、各パーティション内のレコードの順序が矛盾することがあります。したがって、クエリを実行するたびにLEAD()が異なる結果を返すことがあります。

エイリアスが変更されたように見える理由は、おそらくキャッシュされた結果が返されることに関連している可能性があります。

関連する問題