最近発表された (そして待望の) Google Big Query のウィンドウ分析関数は、非常に不完全なようです。以下は、会社のいくつか (例では 3 つ) の財務指標の加重スコアを組み合わせて計算することになっているクエリです (これは Oracle と MS SQL で機能します!)。
select
( percent_rank() over (order by cash_discount desc)*0.4
+percent_rank() over (order by trailing_pe desc)*0.5
+percent_rank() over (order by forward_pe desc)*0.5
) combined_weighted_score
,company_symbol, company_name
from workspace.company c
GBQ では次のようになります: Error: Encountered " "OVER" "over "" at line 2.
私はこの問題をさらに調査することにしました - これはさらに単純なクエリです:
select
percent_rank() over (order by cash_discount desc) r1
,percent_rank() over (order by trailing_pe desc) r2
,percent_rank() over (order by forward_pe desc) r3
,company_symbol, company_name
from workspace.company c
エラー: 複数の個別の OVER 句はまだサポートされていません。複数の OVER 句がクエリに表示される場合、それらは同一である必要があります。ソート キーが異なる AnalyticSpecs が見つかりました 0
したがって、GBQ の分析ウィンドウ関数の実装は非常に不完全なようです。次に、次のようないくつかの醜いハックを試しました。
select c.company_name, (r1.r*0.4+r2.r*0.5) combined_weighted_score
from [workspace.company] c
left join (select company_symbol, percent_rank() over (order by cash_discount desc) r from workspace.company) r1
on c.company_symbol=r1.company_symbol
left join (select company_symbol, percent_rank() over (order by trailing_pe desc) r from workspace.company) r2
on c.company_symbol=r2.company_symbol
まあ、まだ動作しません:
エラー: 5.1 - 0.0: クエリに複数の JOIN 句を含めることはできません
解決策はありますか?適切に実装されたウィンドウ関数の助けがなければ、これを従来の SQL で実装するのは非常に難しいことを私は知っています。しかし、GBQの発表は非常に有望に聞こえました...