google-bigquery - 未找到用户定义的函数
问题描述
我创建了一个永久 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
[1:15] 处的 .udf_library.is_valid_email
如果我将它创建为临时函数,它确实有效,但这违背了拥有永久 UDF 的全部目的
有任何想法吗?
谢谢
解决方案
请检查数据集的位置,project-name.Mydataset
并且project-name.udf_library
它们必须位于同一区域才能使您的最后一个查询起作用。
用于准备数据的查询WITH
有效,因为它被路由到 UDF 所在的区域。最后一个查询可能被路由到数据所在的位置。
推荐阅读
- apache-kafka - 如何知道某个主题中的所有文档都已被 Kafka 消费者消费了?
- php - 如何使此功能同时接受电话号码和电子邮件?
- sockets - 将 WebSocket 连接到 'ws:
- javascript - Angular 5 NullInjectorError:n 没有提供者
- angular - 如何在角度组件中使用 debounceTime?
- r - 如何分析R中亲和传播聚类的图结果?
- python - 将鼠标悬停在饼图中的楔形上时可以显示标签
- jquery - 按重要性、权重和长度对查询进行排序
- php - Braintree 付款 - 沙盒交易的处理器拒绝(2409)错误
- karate - 如何在空手道中使用 FileUtils?