2016-10-11 2 views
1

BigQuery에서 더미 테이블과 데이터를 사용하여 일부 논리를 테스트하려고합니다. 이 작업을 성공적으로 수행했습니다.하위 쿼리의 와일드 카드

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

더 복잡한 WITH 문을 사용하여이 더미 테이블에서 다른 논리를 시도해 볼 수 있습니다.

이제 테스트 할 다른 파티션에 데이터가 있으므로 벽을 치고 있습니다. 표준 SQL 나는 같은 것을 할 수있는 사용 : 난 정말 싶습니다 그러나

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

것은 WITH 절에 서브 쿼리에 대해 동일한 작업을 수행 할 수 있도록 :

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' 

내가를 대체 할 수있는 뭔가가 있나요 _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 쿼리 사용)으로 작성할 수 있습니까? 그런 다음 의사 열을 사용할 수 있어야합니다.