Google bigquery 错误:DDL/DML语句不支持写入首选项和分区字段

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

我正试图使用此查询在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;
结果是日程安排不起作用,给了我“

错误: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但是,即使满足的条件是第一个条件,使用您的查询的成本也与使用第二个查询的成本一样高。如果这不够清楚,请告诉我。