2017-07-08 3 views
0

分割ビューを使用することには欠点がありますか?私は以下のように意味します。グーグルビッグクエリまたは任意のデータベースでパーティションビュー(ビュー全体でユニオン)

https://sqlsunday.com/2014/08/31/partitioned-views/

しかし代わりの日付を使用して、私は他のフィールド型でパーティションを作成します。例えば 製品タイプまたは国。

ので、ビューは、テーブル全体を読んでから、クエリを防ぎ、単に特定の製品タイプや地域に制限されます。この方法で

Select '1' as Prod_type, 'USA' as Country , * 
from fact_Sales_1_USA 
union all 
Select '2' as Prod_type, 'UK' as Country , * 
from fact_Sales_2_UK 

になります。

私たちのコースのデータの更新は少し複雑ですか?

上記のフィールドを使用しないクエリの速度が低下しますか?

答えて

2

BigQueryは現在partitioning by non-date columnsをサポートしていません。これをエミュレートする唯一の方法は、たとえば、それぞれの製品タイプまたは地域ごとに別のテーブルを作成してから、table wildcard to enable filtering on themを使用することです。

もしあなたのテーブルたとえば、次の名前があります(あなたがそれを照会すると今、あなたが国にフィルタリングすることができ

#standardSQL 
SELECT 
    *, 
    _TABLE_SUFFIX AS country_and_product 
FROM `MyTable_*`; 

MyTable_USA_1 
MyTable_USA_3 
MyTable_UK_2 
MyTable_France_1 
... 

あなたは、論理ビューを作成することができますおよびオプションで製品番号):

1つのことは、1000t 1つのクエリにつき数が多いので、国と商品の組み合わせが多すぎるとこのアプローチは機能しません。そのような場合は、両方ではなく、どちらか一方だけで「分割」する必要があります。

+0

大きなクエリで日付パーティションと上記をどのように組み合わせますか? –

+0

基になるテーブルに日付区切りが設定されていて、[未処理機能要求](https://issuetracker.google.com/issues/35905833)がある場合は、現在、テーブルのワイルドカードから_PARTITIONTIMEを使用することはできません。 –

関連する問題