2017-08-05 12 views
0

Google Bigでクエリを使用するときに、カラムが使用されていないテーブルへのジョインが選択/除外されていることを確認したい。大きなカレンダービューの結合を許可する方法はありますか?

例えば、

ビューが

Select _fact.A 
, _Dim.B 
from _fact 
inner join _dim 
on _fact.dim_sk = _dim.Dim_sk 

であると私はあなたがそれがこれを行いますForeginキー関係を作成する場合には、SQL Serverでは_dim

joinを無視します

Select _fact.A 
from _view 

を照会します。

答えて

1

BigQueryには主キーの概念がないため、このような最適化を実行する方法はありません。 _dimのすべてのキーが一意であることは事前にはわかりません。ただし、このフォームのビューを作成することができます。

#standardSQL 
SELECT 
    A, 
    (SELECT B FROM _dim 
    WHERE _dim.dim_sk = _fact.dim_sk) AS B 
FROM _fact; 

だけAこのビューからを選択すると、クエリが_dimから任意の列をスキャンし終わるべきではありません。いずれかのテーブルに重複値dim_skがないことを確認する必要があります。そうしないと、スカラーサブクエリが複数の要素を生成したというエラーが発生します。

+0

このようなビューは、すべての 'dim_sk'が' _dim'内で一意である場合にのみ有効です。 –

+0

説明を追加しました。ありがとうございました。 –

関連する問題