Пользовательская функция не найдена
Я создал постоянную функцию 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. Последний запрос, вероятно, был перенаправлен туда, где находятся данные.