Google bigquery 错误:DDL/DML语句不支持写入首选项和分区字段
我正试图使用此查询在BigQuery中安排一个表Google bigquery 错误:DDL/DML语句不支持写入首选项和分区字段,google-bigquery,scheduled-tasks,scheduler,Google Bigquery,Scheduled Tasks,Scheduler,我正试图使用此查询在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 isFill
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;
结果是日程安排不起作用,给了我“
错误:DDL/DML语句不支持写入首选项和分区字段
然后,我尝试了一种变通方法,使用以下方法将该查询作为视图生成:
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;
但我不能这样做,因为它给了我另一个错误:
语法错误:应为”(“或关键字选择或关键字,但在[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
)
)
)
您使用的是计划查询吗?如何设置?您使用的是表作为查询目标吗?@RMESTEVS嘿。是的。我使用的是计划查询,我将上面的查询结果附加到另一个表中。控制台中的视图创建似乎不支持DECLARE语句。如您所见,查询语句不支持encompasses这类语句你能准确地解释你想做什么吗?好的,让我解释一下我想在这里做什么。假设我有一个dataset.final_表,我想使用该计划查询每天更新。为什么我要使用declare语句?我只想在查询的一个源按我的要求为空时运行查询这里:这足够清楚吗?嘿,谢谢你给我这个解决方法,但是使用这个查询,即使check_表是空的,它花费的账单金额与check_表不为空时的账单金额相同。因此,它就像我运行SELECT*FROM dataset.table_b一样简单,在有条件时不使用这个CASE。@IrenRamadhan你是什么意思?这是什么查询的操作与您尝试使用的另一个查询基本相同。在此查询和您的查询中,选择COUNT(关键字)从dataset.check_表将运行,并且根据结果,查询A或查询B将运行嘿,很抱歉响应太晚。很抱歉,我没有对此进行足够的解释。因此,表A是一个空表,因此当满足第一个条件时,我将运行表A,该表花费我0,如果应用第二个,我将获得成本acc但是,即使满足的条件是第一个条件,使用您的查询的成本也与使用第二个查询的成本一样高。如果这不够清楚,请告诉我。