2016-10-11 5 views
1

Я пытаюсь проверить некоторую логику, используя фиктивную таблицу и данные в BigQuery. Я был успешно делает это с помощьюПодстановочные знаки

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

И с помощью более сложной С утверждением, я могу попробовать несколько иную логику этой фиктивной таблицы.

Теперь я ударяю о стену, так как у меня есть данные в разных разделах, которые я хочу протестировать. Используя стандарт SQL я могу сделать что-то вроде:

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' 

Есть ли что-то я могу заменить _TABLE_SUFFIX, чтобы сделать это, или есть ли другой способ создать это фиктивное представление табличных разделов?

ответ

1

Полагает, что нижеследующее может удовлетворить ваши потребности в тестировании. По крайней мере, это вариант: о)

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 и (если вы используете разбитые на разделы таблицы - _PARTITIONTIME) псевдо-колонки работают только на BigQuery удалось таблицы.

Возможно ли, чтобы вы могли написать свои данные образца в несколько таблиц или одну секционированную таблицу (используя запрос SELECT с destination_table)? После этого вы сможете использовать псевдо столбцы.

Смежные вопросы