2016-10-11 10 views
1

BigQueryでダミーのテーブルとデータを使用して、ロジックをテストしようとしています。私はこれを使用して成功しましたサブクエリのワイルドカード

WITH dummy AS (SELECT 1 AS a) 
SELECT a FROM dummy 

さらに複雑なWITHステートメントを使用して、私はこのダミーテーブルでいくつかの異なるロジックを試すことができます。

今私はテストしたいパーティションにいくつかのデータがあるので、壁に当たっています。私は本当にWITH句でサブクエリのために同じことを行うことができるようにしたいと思いますしかし

SELECT a 
FROM 
    `dummy_*` 
WHERE 
    _TABLE_SUFFIX BETWEEN '20161001' AND '20161003' 

WITH 
    dummy_20161001 AS (SELECT 1 AS a UNION ALL SELECT 4 AS a), 
    dummy_20161002 AS (SELECT 7 AS a UNION ALL SELECT 10 AS a) 
SELECT a FROM dummy_* 
WHERE 
    _TABLE_SUFFIX BETWEEN '20161001' AND '20161003' 

は、私が交換することができるものがあり、標準SQLを使用して、私のような何かを行うことができますこれを行うには_TABLE_SUFFIXを使用するか、テーブルパーティションのこのダミー表現を作成する他の方法がありますか?

答えて

1

あなたのテストのニーズを満たすことができることを私に見てください。少なくとも、これはオプションです:O)

WITH 
    dummy_20161001 AS (SELECT 1 AS a UNION ALL SELECT 2 AS a), 
    dummy_20161002 AS (SELECT 3 AS a UNION ALL SELECT 4 AS a), 
    dummy_20161003 AS (SELECT 5 AS a UNION ALL SELECT 6 AS a), 
    dummy_20161004 AS (SELECT 7 AS a UNION ALL SELECT 8 AS a), 
    `dummy_*` as (
    SELECT *, '20161001' as _TABLE_SUFFIX FROM dummy_20161001 UNION ALL 
    SELECT *, '20161002' as _TABLE_SUFFIX FROM dummy_20161002 UNION ALL 
    SELECT *, '20161003' as _TABLE_SUFFIX FROM dummy_20161003 UNION ALL 
    SELECT *, '20161004' as _TABLE_SUFFIX FROM dummy_20161004 
) 
SELECT a 
FROM `dummy_*` 
WHERE 
    _TABLE_SUFFIX BETWEEN '20161001' AND '20161003' 
+0

これはうまく見えます:)私はこれを実行し、それは働いた。 'dummy_ *'テーブルがBQで作成されないので、後で削除する必要はありません。 – binnisb

+1

そうです - ここにテーブルは作成されません –

0

_TABLE_SUFFIXと(あなたが分割されたテーブルを使用している場合 - にのみBigQueryの上_PARTITIONTIME)擬似列の作業は、テーブルを管理していました。

サンプルデータを複数のテーブルまたは単一のパーティションテーブルに書き込むことは可能でしょうか(destination_tableでSELECTクエリを使用します)?その後、擬似列を使用できるはずです。