Секционированные таблицы BigQuery объединяются в _PARTITIONTIME - PullRequest
0 голосов
/ 03 сентября 2018

Имея две секционированные таблицы (обе с псевдостолбцом _PARTITIONTIME), я хочу объединить их в _PARTITIONTIME. Затем я хочу запросить итоговую таблицу с помощью фильтра _PARTITIONTIME, но я заметил, что этот фильтр распространяется только на первую таблицу оператора JOIN. Ниже приведен пример.

WITH tab1 AS (
  SELECT
    _PARTITIONTIME AS pt,
    country
  FROM
    `some_partitioned_table1`
    ),
tab2 AS (
  SELECT
    _PARTITIONTIME AS pt,
    country
  FROM
    `some_partitioned_table2`
    ),
merged_tab AS (
  SELECT pt, country
  FROM tab1 JOIN tab2
  USING (pt, country) )

SELECT *
FROM merged_tab
WHERE pt = "2018-08-12"

В моем случае этот запрос обрабатывает ~ 26 ГБ. Перелистывание JOIN-заказа на

FROM tab2 JOIN tab1

приводит к обработке ~ 60 ГБ. Очевидно, фильтр pt распространяется на первую таблицу в JOIN. Чего я действительно хочу добиться, так это:

WITH tab1 AS (
  SELECT
    _PARTITIONTIME AS pt,
    country
  FROM
    `some_partitioned_table1`
    ),
tab2 AS (
  SELECT
    _PARTITIONTIME AS pt,
    country
  FROM
    `some_partitioned_table2`
    ),
merged_tab AS (
  SELECT t1.pt as pt1, t2.pt as pt2, t1.country
  FROM tab1 t1 JOIN tab2 t2
  ON t1.pt = t2.pt AND t1.country = t2.country
)

SELECT
  *
FROM
  merged_tab
WHERE
  pt1 = "2018-08-12" AND pt2 = "2018-08-12"

Это обрабатывает ~ 100 МБ. Является ли это поведение (распространение pt фильтра только в первую таблицу) каким-либо способом желательным или ожидаемым? Может быть, есть какие-то хитрости для достижения этого только с одним pt фильтром? Или может я что-то упустил? Упомянутый запрос был предназначен для создания представления, которое будет запрашиваться с помощью фильтра pt. Обратите внимание, что я использую стандартный SQL.

1 Ответ

0 голосов
/ 17 апреля 2019

Такая оптимизация была реализована и теперь поддерживается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...