[英]BigQuery User Defined Function Error - Unable to Call UDF In Query
I am trying to use a user defined function that I have created in my BQ dataset.我正在尝试使用我在 BQ 数据集中创建的用户定义函数。
Here is the UDF:这是UDF:
CREATE OR REPLACE FUNCTION `project.dataset.CountHolidays`(START_DATE DATETIME,
SLA INT64, OPERATION STRING) AS (
(
SELECT
SUM(CASE WHEN OPERATION = 'OPTION 1' THEN OPTION_1
WHEN OPERATION = 'OPTION 2' THEN OPTION_2
WHEN OPERATION = 'OPTION 3' THEN OPTION_3
WHEN OPERATION = 'OPTION 4' THEN OPTION_4
WHEN OPERATION = 'OPTION 5' THEN OPTION_5
WHEN OPERATION = 'OPTION 6' THEN OPTION_6
END)
FROM
`project.dataset.calendar` cal
WHERE
cal.CALENDAR_DATE BETWEEN START_DATE AND DATE_ADD(START_DATE, INTERVAL SLA DAY)
)
); );
I am trying to call the UDF within a query like this:我试图在这样的查询中调用 UDF:
SELECT
ORDER_NUMBER,
`project.dataset.CountHolidays`(DATE(PICK_RELEASE_DATE), EBS_SERVICE_DAYS, WAREHOUSE_ID) as CountHolidays
FROM `different_project.different_dataset.view_name`
I get the following error and am unable to run the query:我收到以下错误并且无法运行查询:
LEFT OUTER JOIN cannot be used without a condition that is an equality of fields from both sides of the join.
Does anybody know what the error is here?有谁知道这里的错误是什么? Been scratching my head for a few hours now.
已经挠我的头几个小时了。 Thanks.
谢谢。
Your select references UDF which gets "translated" into left join that is not supported - thus the error!您的选择引用了 UDF,该 UDF 被“翻译”为不受支持的左连接 - 因此错误!
Try below version of your UDF - should work I think尝试以下版本的 UDF - 我认为应该可以
CREATE OR REPLACE FUNCTION `project.dataset.CountHolidays`(START_DATE DATE,
SLA INT64, OPERATION STRING) AS (
(
SELECT
SUM(IF(cal.CALENDAR_DATE BETWEEN START_DATE AND DATE_ADD(START_DATE, INTERVAL SLA DAY),
CASE WHEN OPERATION = 'OPTION 1' THEN OPTION_1
WHEN OPERATION = 'OPTION 2' THEN OPTION_2
WHEN OPERATION = 'OPTION 3' THEN OPTION_3
WHEN OPERATION = 'OPTION 4' THEN OPTION_4
WHEN OPERATION = 'OPTION 5' THEN OPTION_5
WHEN OPERATION = 'OPTION 6' THEN OPTION_6
END, 0))
FROM
`project.dataset.calendar` cal
));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.