ОШИБКА: предпочтения записи и поле разделения не поддерживаются операторами DDL / DML. - PullRequest
0 голосов
/ 05 мая 2020

Я пытаюсь запланировать таблицу в 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]

Есть ли здесь у кого-нибудь идеи, чтобы я мог составить расписание?

Заранее спасибо

1 Ответ

1 голос
/ 05 мая 2020

Попробуйте это сделать:

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
      )
   )
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...