Большая ошибка, «выражение в скобках не может быть проанализировано» - PullRequest
0 голосов
/ 28 января 2019

Здравствуйте, у меня есть следующий код, и когда я запускаю его внутри, Bigquery дает мне «правильный» ответ, но когда я помещаю его в скрипт sh и выполняю скрипт внутри google shell, vm выдает мне следующую ошибку.Какие-нибудь мысли?

Я предполагаю, что ошибка заключается в необходимости умножать регистр /, когда операторы получаются в другом выражении / когда оператор ..

Это пример того, как выглядит мой код:

SELECT  CASE WHEN (
           (CASE WHEN TABLE1.COL1 = 'X' THEN 0 ELSE 1 END) *
       (CASE WHEN TABLE2.COL2 = 'Y' THEN 1 ELSE 0 END) *
       (CASE WHEN (SELECT 0 
                       FROM TABLE3
                       WHERE TABLE3.ID = TABLE2.ID) = 0 THEN 0 ELSE 1 END)) = 1
    THEN (SELECT '111111') ELSE NULL END
FROM TABLE1
INNER JOIN TABLE2
ON TABLE1.ID = TABLE2.ID
FULL JOIN (SELECT COL1,'TRUE' FROM TABLE4) AS XX
ON XX.COL1 = TABLE1.COL1 AND XX.COL1 IS NULL
WHERE
  TABLE1.COL3 = 'YY'

Я не могу предоставить ожидаемый результат, но результат этого запроса дает мне следующую ошибку: заключенное в скобки выражение не может быть проанализировано как выражение, конструктор структуры или подзапрос в ...

Ответы [ 2 ]

0 голосов
/ 28 января 2019

Спасибо @Elliott Brossard, я решил проблему буквально без изменений в коде, ха-ха.Поэтому я переписал предложение bq-запроса следующим образом: bq query --destination_table = .. --use_legacy_sql = false - заменить «QUERY» вместо назначения запроса переменной, а затем выполнить его с помощью echo |bq запрос предложение ..

Спасибо

0 голосов
/ 28 января 2019

Я опубликую советы по отладке в качестве ответа, так как думаю, что вы, вероятно, найдете проблему таким образом.Из командной строки выведите список последних заданий:

bq ls -j --all

Сбой задания запроса, вероятно, будет наверху.Скопируйте идентификатор задания и используйте его со следующей командой:

bq --prettyformat=json show -j YOUR_JOB_ID

Это распечатает всю конфигурацию задания, а также сообщение об ошибке.Я подозреваю, что вы увидите, что запрос искажен;кавычки или какой-либо другой символ, возможно, вызвали неожиданное поведение при интерпретации оболочкой.При выполнении запросов из командной строки рекомендуется поместить содержимое в файл, а затем передать его в качестве входных данных в инструмент bq, например

bq query --use_legacy_sql=false < query.sql

. Это не позволяет оболочке перехватывать любую частьзапрос как команда.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...