Пользовательская функция не найдена

Я создал постоянную функцию UDF для проверки таких писем:

create or replace function 
`project-name`.udf_library.is_valid_email(text STRING)
returns Bool
as (REGEXP_CONTAINS(text, r"valid_regex"));

и протестировали его с помощью следующего запроса, и он отлично работает:

with emails as
(select 'alberto@example.com' as email
union all
select 'foobar' as email
union all
select 'disposable.style.email.with+symbol@example.com' as email
union all
select '"john..doe"@example.org' as email
union all
select 'i_like_underscore@but_its_not_allow_in_this_part.example.com' as email)
select email, `project-name`.udf_library.is_valid_email(email) as validEmail from emails
Row email                                                   validEmail 
1   alberto@example.com                                           true
2   foobar                                                       false
3   disposable.style.email.with+symbol@example.com                true
4   "john..doe"@example.org                                       true
5   i_like_underscore@but_its_not_allow_in_this_part.example.com false

Но когда я запрашиваю таблицу и пытаюсь использовать такую ​​функцию

SELECT email, `project-name`.udf_library.is_valid_email(email) as validEmail 
FROM `project-name.Mydataset.MyTable`

Я получаю это:

Функция не найдена: project-name.udf_library.is_valid_email в [1:15]

Он действительно работает, если я создаю его как временную функцию, но это сводит на нет всю цель наличия постоянных UDF

Есть идеи?

благодаря

1 ответ

Решение

Пожалуйста, проверьте расположение набора данных project-name.Mydataset и project-name.udf_library, они должны находиться в одном регионе, чтобы ваш последний запрос работал.

Запрос с использованием WITHдля подготовки данных работает, потому что они направляются в регион, где находится UDF. Последний запрос, вероятно, был перенаправлен туда, где находятся данные.

Другие вопросы по тегам