Я не смог придумать хорошее название для этого вопроса. Извините за это.
Из коллекции писем я хочу проверить, какие письма принадлежат списку неизвестных пользователей. Однако, когда я делаю левое соединение, как показано ниже, соединение, кажется, не совпадает, и вместо этого я получаю значения NULL в tb2.email.
#StandardSQL
with unknown_addresses AS (
select 'test1@gmail.com' AS email
union all
select 'test2@gmail.com' AS email
union all
select 'test3@gmail.com' AS email
union all
select 'test4@gmail.com' AS email
union all
select 'test5@gmail.com' AS email
),
all_emails_received as (
SELECT
SUBSTR(REGEXP_EXTRACT(mystring, r"[a-z.@\-]+"), 4) as email,
content
FROM
foobar
)
SELECT tb1.email, tb1.content, tb2.email AS unknown_email
FROM all_emails_received tb1
LEFT JOIN unknown_addresses tb2
ON tb1.email = tb2.email
Как заставить работать условие соединения?
Я не хочу создавать новую таблицу только для хранения unknown_addresses.
(Правка) Добавлен пример необработанных данных
| email | content |
| --------------- | ----------- |
| test1@gmail.com | Hello there |
| gary@gmail.com | test test |
| abc@gmail.com | foobar |
Что я сейчас получаю
| email | content | unknown_email |
| --------------- | ----------- | --------------- |
| test1@gmail.com | Hello there | null |
| gary@gmail.com | test test | null |
| abc@gmail.com | foobar | null |
Желаемый результат
| email | content | unknown_email |
| --------------- | ----------- | --------------- |
| test1@gmail.com | Hello there | test1@gmail.com |
| gary@gmail.com | test test | null |
| abc@gmail.com | foobar | null |
Редактировать 2: Все еще не работает. Я добавил туда фильтр substr и regexp. Не уверен, что это влияет на мой результат.