СЛЕДУЕТ ПОДКЛЮЧИТЬСЯ, используя _PARTITIONDATE - PullRequest
0 голосов
/ 01 ноября 2019

В настоящее время я использую StandardSQL в BigQuery, я пытался объединить два набора таблиц, один из которых представляет собой таблицу псевдостолбцов, разбитую по дням.

Я пытался использовать этот запрос ниже:

SELECT 
        DISTINCT DATE(create_time) AS date,
        user_id,
        city_name,
        transaction_id,
        price

FROM 
        table_1 a

LEFT JOIN (SELECT user_id, city_name FROM table_2) b 
        ON (a.user_id = b.user_id AND DATE(create_time) = _PARTITIONDATE)

Я пробовал этот тип JOIN (с использованием _PARTITIONDATE) и работал, но для этого конкретного запроса я получил сообщение об ошибке:

Unrecognized name: _PARTITIONDATE

Может кто-нибудьскажите мне, почему это произошло, и как я мог решить это? Заранее спасибо.

1 Ответ

1 голос
/ 01 ноября 2019

Проблема заключается в том, что вы не выбираете поле _PARTITIONDATE из table_2 при присоединении к нему, чтобы оно не могло его распознать:

SELECT user_id, city_name FROM table_2

Чтобы решить его, вы можете добавить его какследует:

SELECT 
        DISTINCT DATE(create_time) AS date,
        user_id,
        city_name,
        transaction_id,
        price

FROM 
        table_1 a

LEFT JOIN (SELECT _PARTITIONDATE AS pd, user_id, city_name FROM table_2) b 
        ON (a.user_id = b.user_id AND DATE(create_time) = pd)

Обратите внимание, что вам понадобится псевдоним, например pd, так как это псевдостолбец

Вероятно, он работал в прошлом, если вы соединяли две таблицы напрямую, например:в (вы не получаете преимуществ избирательности в этом случае):

FROM 
        table_1 a
LEFT JOIN table_2 b 
        ON (a.user_id = b.user_id AND DATE(create_time) = _PARTITIONDATE)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...