Я получаю сообщение об ошибке от BigQuery при выполнении основного запроса с шаблоном:BigQuery ошибка при использовании маски в «select * from ...» только при выполнении на GCE VM
bq query --use_legacy_sql=false "SELECT * FROM mydata.states LIMIT 10"
Проблема в том, с *
- вот ошибка, я получаю от Бк при его запуске на виртуальной машине в GCE:
Error in query string: Error processing job '...': Field 'workspace' not found in table 'mydata.states'.
«рабочее пространство» это имя каталога, в моем текущем рабочем каталоге - оказывается, что Бк расширяется, что (аналогично ls *
).
Эта же команда работает только в bq shell
без расширения *
в первый найденный ею каталог. Тот же запрос отлично работает на моем локальном ubuntu вне GCE.
Если я перечисляю столбцы явно, он отлично работает. Я не могу понять, что делает bq
заменой *
с именем каталога в моем текущем пути и как отключить его?
У меня есть две очень похожие машины, работающие bq
версия командной строки 2.0.24 и обе являются ubuntu 14.04. Кроме этого, * работает в Баш так же, как и ожидалось, в том числе set -f
, что останавливает расширение все вместе, но это не имеет никакого влияния на bq
...
Самое смешное, что *
работает, как ожидалось при использовании в запросе, как это:
bq query --use_legacy_sql=false "SELECT COUNT(*) FROM mydata.states LIMIT 10"
другая странная вещь, что это также работает отлично:
echo "SELECT * FROM mydata.states LIMIT 10" | bq query
Я согласен, что это работает и даже «эхо» $ QUERY »| bq query' работает, но я до сих пор не понимаю, что может вызвать ошибку на одной ОС Ubuntu и не будет иметь этой проблемы на другой машине Ubuntu ... –
Возможно, вы используете другую оболочку в стороне от Bash, которая вызывает несоответствие , В любом случае, это не вызвано клиентом BigQuery. Возможно, вы захотите спросить другой тег StackOverflow. –