我试图在BigQuery中使用这个查询来调度一个表。
DECLARE isEmpty DEFAULT (SELECT COUNT(keyword) = 0 from dataset.check_table);
DECLARE isFilled DEFAULT (SELECT COUNT(keyword) > 0 from dataset.check_table);
IF isEmpty
THEN SELECT * FROM dataset.table_a;
ELSEIF isFilled
THEN SELECT * FROM dataset.table_b;
END IF;
结果调度不灵,给我"
ERROR: Write preference and partitioning field are not supported with DDL/DML statements
然后,我尝试了一个变通的方法,使用该查询作为一个视图。
CREATE OR REPLACE VIEW dataset.v_table AS
DECLARE isEmpty DEFAULT (SELECT COUNT(keyword) = 0 from dataset.check_table);
DECLARE isFilled DEFAULT (SELECT COUNT(keyword) > 0 from dataset.check_table);
IF isEmpty
THEN SELECT * FROM dataset.table_a;
ELSEIF isFilled
THEN SELECT * FROM dataset.table_b;
END IF;
但我做不到,因为它给我另一个错误。
Syntax error: Expected "(" or keyword SELECT or keyword WITH but got keyword DECLARE at [3:1]
这里有谁有任何想法,让我可以做调度?
先谢谢你
试试这样做。
SELECT
*
FROM
UNNEST(
(SELECT
(
CASE (SELECT COUNT(keyword) from dataset.check_table) = 0
WHEN TRUE
THEN (
SELECT ARRAY(
SELECT AS STRUCT *
FROM dataset.table_a)
)
ELSE (SELECT ARRAY(
SELECT AS STRUCT *
FROM dataset.table_b)
)
END
)
)
)