使用 bq 命令获取在 bigquery 中选择或更新的总行数
Get total number of rows selected or updated in bigquery with bq command
我正在尝试将一些 TERADATA 功能迁移到 BigQuery,自从我在 shell 脚本环境中工作以来,我一直在寻找与 TERADATA 中的 ACTIVITYCOUNT
类似的东西,这里是示例:
SELECT username, password from USERS_TABLE where true
. IF ACTIVITYCOUNT=0 THEN .QUIT 122;
这是我将 SQL 查询转换为 BigQuery
的新版本
bq query --format=csv --use_legacy_sql=false "SELECT username, password from USERS_TABLE where true" > output.txt
### How to get the number of rows selected ???
但我仍在努力处理第二条指令,我不知道是否有任何本机方法可以在不对计数进行新的 sql 查询的情况下获取返回的行数,因为我有一堆要求做同样的事情。
可能有多种解决方案,让我从一个更简单的开始,看看它是否适合您。
(更难的是从完成的作业中获取结果)
ASSERT (SELECT COUNT(username) > 0 from USERS_TABLE where true) AS "USERS_TABLE cannot be empty";
那么你的shell脚本只需要监控查询是否有错误。
查看有关 ASSERT 的更多信息:https://cloud.google.com/bigquery/docs/reference/standard-sql/debugging-statements
===========
更进一步,您可以看到可能没有必要将语句分成更小的部分以由 shell 脚本发送。您可以编写一个 SQL 脚本,该脚本已在 Scripting
的各个地方断言
这是一个变通解决方案:
Select 声明:
$ bq query --nouse_legacy_sql 'SELECT * FROM `project.dataset.table`' | expr `wc -l` - 4 | sed 's/-[0-9]*/0/'
更新声明:
$ bq query --nouse_legacy_sql 'UPDATE `project.dataset.table` SET sal = sal * 2 WHERE true' 2>/dev/null | awk '{print $NF}'
我正在尝试将一些 TERADATA 功能迁移到 BigQuery,自从我在 shell 脚本环境中工作以来,我一直在寻找与 TERADATA 中的 ACTIVITYCOUNT
类似的东西,这里是示例:
SELECT username, password from USERS_TABLE where true
. IF ACTIVITYCOUNT=0 THEN .QUIT 122;
这是我将 SQL 查询转换为 BigQuery
的新版本 bq query --format=csv --use_legacy_sql=false "SELECT username, password from USERS_TABLE where true" > output.txt
### How to get the number of rows selected ???
但我仍在努力处理第二条指令,我不知道是否有任何本机方法可以在不对计数进行新的 sql 查询的情况下获取返回的行数,因为我有一堆要求做同样的事情。
可能有多种解决方案,让我从一个更简单的开始,看看它是否适合您。
(更难的是从完成的作业中获取结果)
ASSERT (SELECT COUNT(username) > 0 from USERS_TABLE where true) AS "USERS_TABLE cannot be empty";
那么你的shell脚本只需要监控查询是否有错误。
查看有关 ASSERT 的更多信息:https://cloud.google.com/bigquery/docs/reference/standard-sql/debugging-statements
===========
更进一步,您可以看到可能没有必要将语句分成更小的部分以由 shell 脚本发送。您可以编写一个 SQL 脚本,该脚本已在 Scripting
的各个地方断言这是一个变通解决方案:
Select 声明:
$ bq query --nouse_legacy_sql 'SELECT * FROM `project.dataset.table`' | expr `wc -l` - 4 | sed 's/-[0-9]*/0/'
更新声明:
$ bq query --nouse_legacy_sql 'UPDATE `project.dataset.table` SET sal = sal * 2 WHERE true' 2>/dev/null | awk '{print $NF}'