【发布时间】:2020-10-26 06:34:22
【问题描述】:
我正在创建一个表来保持连续登录天数,这是login_[today] 和continuous_login_[previous_day] 组合的结果。但是,如果[previous_day] 的表不存在,我想处理异常。
在引用 [1]、[2] 和 [3] 的帮助下,只有当前一天的表存在时,我才能够检索值(连续登录),例如 A。
但是,我无法在WITH 子句中使用IF EXISTS 语句的结果,例如B。如何在WTIH 子句中使用IF EXISTS 的结果。或者有没有更好的方法来完成这项工作?
一个。
-- Retrieve only if the table exists
IF EXISTS (
SELECT *
FROM `my_project.my_dataset.__TABLES_SUMMARY__`
WHERE table_id = CONCAT('_my_table_', '20201010') -- daily log
)
THEN
(
SELECT
pid, MAX(continuous_login_days) AS continuous_login_days
FROM `my_project.my_dataset._my_table_*`
WHERE _TABLE_SUFFIX = '20201010'
GROUP BY pid
);
ELSE
SELECT NULL;
END IF
B.
-- GOAL
WITH
...
, continuous_logins_table AS (
[above statement]
)
SELECT
...
IFNULL(continuous_logins_table.continuous_login_days, 0) + 1 AS continuous_login_days,
FROM
...
LEFT JOIN continuous_logins_table
【问题讨论】:
标签: google-bigquery