2017-06-06 18 views
0

bigQueryでは、1つは30Kレコード、もう1つは20Mレコードの2つのテーブルがあります。Google BigQueryで2つのテーブルを1つにまとめる

私が参加して、それらを検索するための効率的な方法を必要とするので、私はこのSQLと組み合わせてテーブルを作成することを考えた:

SELECT 
s.site site, 
s.rank rank, 
s.visitors visitors, 
s.store_id store_id, 
s.currency currency, 
p.title title, 
p.product_type product_type, 
p.handle handle, 
p.price price, 
p.created_at created_at, 
p.image_url image_url, 
p.description description 
FROM eComData.stores s INNER JOIN eComData.products p ON s.store_id = p.store_id 
WHERE 
s.active = 1 

しかし、このBQコマンドを実行している:

bq query --destination_table=eComData.stores_n_products --allow_large_results "SELECT s.site site,s.rank rank,s.visitors visitors,s.store_id store_id,s.currency currency,p.title title,p.product_type product_type,p.handle handle,p.price price,p.created_at created_at,p.image_url image_url,p.description description FROM eComData.stores s INNER JOIN eComData.products p ON s.store_id = p.store_id WHERE s.active = 1" 

永遠に奪取されている - 今までの5,000秒のプラグ。簡単な検索のために結合テーブルを作成する効率的な方法はありますか?あなたは、従来のSQLを使用している場合

+1

の下に試してみてください。サブクエリを使うか、 '--use_legacy_sql = False'を' bq query'に渡す必要があります。 [標準SQLドキュメント](https://cloud.google.com/bigquery/docs/reference/standard-sql/)も参照してください。 –

答えて

0

は、フィルタが自動的に加入を通して押されていない(とあなたがいるように見える)

SELECT 
    s.site site, 
    s.rank rank, 
    s.visitors visitors, 
    s.store_id store_id, 
    s.currency currency, 
    p.title title, 
    p.product_type product_type, 
    p.handle handle, 
    p.price price, 
    p.created_at created_at, 
    p.image_url image_url, 
    p.description description 
FROM (
    SELECT 
    site, 
    rank, 
    visitors, 
    store_id, 
    currency 
    FROM eComData.stores 
    WHERE active = 1 
) s 
INNER JOIN eComData.products p 
ON s.store_id = p.store_id 
+0

これはもっと速いようですが、まだ長い時間がかかりますが、22Mレコードに参加するにはどれくらい時間がかかりますか分かりませんが。 –

+0

これが方法です。両方のテーブルにさらに「フィルタリング」を追加して、最終的な結合がより高速になるようにすることができます。答えがあなたを助けた場合 - それに投票し、それを受け入れることを検討してください - それを受け入れる –

+0

それで、eComdata.storesテーブルからactive = falseのレコードを削除しましたので、そこにWHERE句を追加する必要はありません。 しかし、新しいテーブルにすべてのものを選択しようとしても、数千秒間実行されます。この大きなデータを結合してテーブルにする方法に関するアイデアはありますか? –

関連する問題