Проблемы с передачей переменной массива в запрос BigQuery из оболочки - PullRequest
0 голосов
/ 07 сентября 2018

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

Я пытаюсь выполнить команду:

bq --location=US query --use_legacy_sql=False \
--parameter='gender::M' \
--parameter='states:ARRAY<STRING>:["WA", "WI", "WV", "WY"]' \
'SELECT name, sum(number) as count
FROM `bigquery-public-data.usa_names.usa_1910_2013`
WHERE gender = @gender
AND state IN UNNEST(@states)
GROUP BY name
ORDER BY count DESC
LIMIT 10;'

Если вы копируете / вставляете как в оболочке, это работает. Вот что я пытаюсь запустить:

В файле script.sh

runQuery(){

    states="'$1'"

    bq --location=US query --use_legacy_sql=False --parameter='gender::M' --parameter=$states \
        'SELECT name, sum(number) as count
        FROM `bigquery-public-data.usa_names.usa_1910_2013`
        WHERE gender = @gender
        AND state IN UNNEST(@states)
        GROUP BY name
        ORDER BY count DESC
        LIMIT 10;'
    }

runQuery 'states:ARRAY<STRING>:["WA", "WI", "WV", "WY"]'

Но это не работает.

Вот журнал ошибок:

enter image description here

Я почти уверен, что это связано с тем фактом, что параметр имеет как одинарные, так и двойные кавычки, а в некоторых точках происходит ошибка при обработке 'состояний: ARRAY: ["WA", "WI", "WV", "WY"] ' но я просто не могу найти, как это решить.

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

1 Ответ

0 голосов
/ 07 сентября 2018

Нашли ошибку:

Изменено runQuery 'states:ARRAY<STRING>:["WA", "WI", "WV", "WY"]'

К runQuery 'states:ARRAY<STRING>:["WA","WI","WV","WY"]'

Обратите внимание, что из массива были удалены пробелы.

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