Big Query bq команда запроса скрыть DML на выходе? - PullRequest
0 голосов
/ 02 апреля 2020

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

bq query --use_legacy_sql=false --project_id=livescore-sandpit-data <<EOF
select current_timestamp();
EOF

... производит ...

+---------------------+
|         f0_         |
+---------------------+
| 2020-04-02 08:02:15 |
+---------------------+

т.е. select current_timestamp() не выводится тогда как запросы с несколькими утверждениями выполняют операторы эха ...

bq query --use_legacy_sql=false --project_id=livescore-sandpit-data <<EOF
select current_timestamp();
select current_timestamp();
EOF

... производит ...

Waiting on bqjob_r1a1fef57eab6f80b_0000017139e86883_1 ... (1s) Current status: DONE   
select current_timestamp(); -- at [1:1]
+---------------------+
|         f0_         |
+---------------------+
| 2020-04-02 08:01:05 |
+---------------------+
select current_timestamp(); -- at [2:1]
+---------------------+
|         f0_         |
+---------------------+
| 2020-04-02 08:01:06 |
+---------------------+

Я хотел бы иногда иметь возможность отключить эту функцию, чтобы она не засоряет мой вывод. (Я выполняю несколько запросов bq как часть твердости теста dev в командной строке).

Возможно ли это?

Ответы [ 2 ]

1 голос
/ 10 апреля 2020

Как уже упоминали @ SANN3 и @FelipeHoffa, сейчас нет возможности сделать это, и подача запроса на функцию является правильным подходом.

Однако, в качестве обходного пути, вы можете попробовать использовать выражения регулярных выражений и sed, чтобы избавиться от операторов в выводе, например:

bq query --use_legacy_sql=false --project_id=livescore-sandpit-data \
"select current_timestamp(); \
select current_timestamp();" | sed -E '/^.*\[[0-9]+:[0-9]+\].*$/d'

Создает следующий вывод, удаляя все строки, которые соответствуют шаблону «[число: число]», который находится в конце утверждения:

+---------------------+
|         f0_         |
+---------------------+
| 2020-04-09 21:42:16 |
+---------------------+
+---------------------+
|         f0_         |
+---------------------+
| 2020-04-09 21:42:16 |
+---------------------+

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

1 голос
/ 04 апреля 2020

На данный момент нет возможности пропустить операторы.

Ссылка:

https://cloud.google.com/bigquery/docs/reference/bq-cli-reference#bq_query

...